==== KbdGetStatus ====
**Bindings**: [[getstatus#C bindings|C]], [[getstatus#MASM bindings|MASM]]
This call gets the current state of the keyboard.
KbdGetStatus (StatData, KbdHandle)
//StatData// (**PKBDINFO**) - output
Address of the keyboard status structure:
//length// (**USHORT**)
Length, in bytes, of this data structure, including length.
|10 |Only valid value. |
//sysstate// (**USHORT**)
State as follows:
^Bit ^Description ^
|15-9 |Reserved, set to zero. |
|8 |Shift return is on. |
|7 |Length of the turn-around character (meaningful only if bit 6 is on). |
|6 |Turn-around character is modified. |
|5 |Interim character flags are modified. |
|4 |Shift state is modified. |
|3 |ASCII mode is on. |
|2 |Binary mode is on. |
|1 |Echo off. |
|0 |Echo on. |
//turnchardef// (**USHORT**)
Definition of the turn-around character. In ASCII and extended-ASCII format, the turn-around character is defined as the carriage return. In ASCII format only, the turn-around character is defined in the low-order byte.
//intcharflag// (**USHORT**)
Interim character flags:
^Bit ^Description ^
|15-8 |NLS shift state. |
|7 |Interim character flag is on. |
|6 |Reserved, set to zero. |
|5 |Application requested immediate conversion. |
|4-0 |Reserved, set to zero. |
//shiftstate// (**USHORT**)
Shift state as follows:
^Bit ^Description ^
|15 |SysReq key down |
|14 |CapsLock key down |
|13 |NumLock key down |
|12 |ScrollLock key down |
|11 |Right Alt key down |
|10 |Right Ctrl key down |
|9 |Left Alt key down |
|8 |Left Ctrl key down |
|7 |Insert on |
|6 |CapsLock on |
|5 |NumLock on |
|4 |ScrollLock on |
|3 |Either Alt key down |
|2 |Either Ctrl key down |
|1 |Left Shift key down |
|0 |Right Shift key down. |
//KbdHandle// (**HKBD**) - input
Default keyboard or the logical keyboard.
//rc// (**USHORT**) - return
Return code descriptions are:
|0 |NO_ERROR |
|376 |ERROR_KBD_INVALID_LENGTH |
|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 initial state of the keyboard is established by the system at application load time. Some default states may be modified by the application through //[[setstatus|KbdSetStatus]]//. //KbdGetStatus// returns only those keyboard parameters initially set by //[[setstatus|KbdSetStatus]]//. The returned parameters are:
* Input Mode
* Interim Character Flags
* Shift State
* Echo State
* Turnaround Character
//KbdGetStatus// completes only when the handle has access to the physical keyboard (focus) or the handle is 0 and no other handle has the focus.
**Family API Considerations**
Some options operate differently in the DOS mode than in the OS/2 mode. Therefore, the following restrictions apply to //KbdGetStatus// when coding in the DOS mode:
* Interim character is not supported
* TurnAround character is not supported
* NLS_SHIFT_STATE is always NULL.
* //KbdHandle// is ignored.
=== C bindings ===
typedef struct _KBDINFO { /* kbst */
USHORT cb; /* length in bytes of this structure */
USHORT fsMask; /* bit mask of functions to be altered */
USHORT chTurnAround; /* define TurnAround character */
USHORT fsInterim; /* interim character flags */
USHORT fsState; /* shift states */
}KBDINFO;
#define INCL_KBD
USHORT rc = KbdGetStatus(Structure, KbdHandle);
PKBDINFO Structure; /* Data structure */
HKBD KbdHandle; /* Keyboard handle */
USHORT rc; /* return code */
=== MASM bindings ===
KBDINFO struc
kbst_cb dw ? ;length in bytes of this structure
kbst_fsMask dw ? ;bit mask of functions to be altered
kbst_chTurnAround dw ? ;define TurnAround character
kbst_fsInterim dw ? ;interim character flags
kbst_fsState dw ? ;shift states
KBDINFO ends
EXTRN KbdGetStatus:FAR
INCL_KBD EQU 1
PUSH@ OTHER Structure ;Data structure
PUSH WORD KbdHandle ;Keyboard handle
CALL KbdGetStatus
Returns WORD