==== KbdGetCp ====
**Bindings**: [[getcp#C bindings|C]], [[getcp#MASM bindings|MASM]]
This call allows a process to query the code page being used to translate scan codes to ASCII characters.
KbdGetCp (Reserved, CodePageID, KbdHandle)
//Reserved// (**ULONG**) - input
Reserved and must be set to zero.
//CodePageID// (**PUSHORT**) - output
Address of the code page ID located in the application's data area. The keyboard support copies the current code page ID for a specified keyboard handle into this word. The code page ID is equivalent to one of the code page IDs specified in the CONFIG.SYS CODEPAGE = statement or 0000.
//KbdHandle// (**HKBD**) - input
Default keyboard or the logical keyboard.
//rc// (**USHORT**) - return
Return code descriptions are:
|0 |NO_ERROR |
|373 |ERROR_KBD_PARAMETER |
|439 |ERROR_KBD_INVALID_HANDLE |
|445 |ERROR_KBD_FOCUS_REQUIRED |
|447 |ERROR_KBD_KEYBOARD_BUSY |
|464 |ERROR_KBD_DETACHED |
|504 |ERROR_KBD_EXTENDED_SG |
**Remarks**
The //CodePageID// is the currently active keyboard code page. A value of 0 indicates the code page translation table in use is the ROM code page translation table provided by the hardware.
=== C bindings ===
#define INCL_KBD
USHORT rc = KbdGetCp(Reserved, CodePageID, KbdHandle);
ULONG Reserved; /* Reserved (must be zero) */
PUSHORT CodePageID; /* Code Page ID */
HKBD KbdHandle; /* Keyboard handle */
USHORT rc; /* return code */
=== MASM bindings ===
EXTRN KbdGetCp:FAR
INCL_KBD EQU 1
PUSH DWORD Reserved ;Reserved (must be zero)
PUSH@ WORD CodePageID ;Code Page ID
PUSH WORD KbdHandle ;Keyboard handle
CALL KbdGetCp
Returns WORD