==== KbdSetStatus ====
**Bindings**: [[setstatus#C bindings|C]], [[setstatus#MASM bindings|MASM]]
This call sets the characteristics of the keyboard.
KbdSetStatus (StatData, KbdHandle)
//StatData// (**PKBDINFO**) - input
Address of the keyboard status structure:
//length// (**USHORT**)
Length, in bytes, of this data structure, including length.
|10 |Only valid value. |
//sysstate// (**USHORT**)
The system state altered by this call. If bits 0 and 1 are off, the echo state of the system is not altered. If bits 2 and 3 are off, the binary and ASCII state of the system is not altered. If bits 0 and 1 are on, or if bits 2 and 3 are on, the function returns an error. If binary mode is set, echo is ignored.
^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.
^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 |
|377 |ERROR_KBD_INVALID_ECHO_MASK |
|378 |ERROR_KBD_INVALID_INPUT_MASK |
|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**
Shift return (bit 8 in sysstate) must be disabled in ASCII mode.
//KbdSetStatus// is ignored for a Vio-windowed application.
**Family API Considerations**
Some options operate differently in the DOS mode than in the OS/2 mode. Therefore, the following restrictions apply to //KbdSetStatus// when coding in the DOS mode:
* //KbdSetStatus// does not accept a bit mask of 10 (ASCII on, Echo Off).
* Raw (binary) Mode and Echo On are not supported and return an error if requested.
* //KbdHandle// is ignored.
* Interim character is not supported.
* Turnaround character is not supported.
=== 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 = KbdSetStatus(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 KbdSetStatus:FAR
INCL_KBD EQU 1
PUSH@ OTHER Structure ;Data structure
PUSH WORD KbdHandle ;Keyboard Handle
CALL KbdSetStatus