This call returns a character data record from the keyboard.
KbdCharIn (CharData, IOWait, KbdHandle)
CharData (PKBDKEYINFO) - output Address of the character data structure:
asciicharcode (UCHAR) ASCII character code. The scan code received from the keyboard is translated to the ASCII character code.
scancode (UCHAR) Code received from the keyboard. The scan code received from the keyboard is translated to the ASCII character code.
status (UCHAR) State of the keystroke event:
Bit | Description |
---|---|
7-6 00 | = Undefined |
01 | = Final character, interim character flag off |
10 | = Interim character |
11 | = Final character, interim character flag on. |
5 1 | = Immediate conversion requested. |
4-2 | Reserved. |
1 0 | = Scan code is a character. |
1 | = Scan code is not a character; is an extended key code from the keyboard. |
0 1 | = Shift status returned without character. |
reserved (UCHAR) NLS shift status. Reserved, set to zero.
shiftkeystat (USHORT) Shift key status.
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 |
time (ULONG) Time stamp indicating when a key was pressed. It is specified in milliseconds from the time the system was started.
IOWait (USHORT) - input Wait if a character is not available.
Value | Definition |
---|---|
0 | Requestor waits for a character if one is not available. |
1 | Requestor gets an immediate return if no character is available. |
KbdHandle (HKBD) - input Default keyboard or the logical keyboard.
rc (USHORT) - return Return code descriptions are:
0 | NO_ERROR |
375 | ERROR_KBD_INVALID_IOWAIT |
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
Family API Considerations
Some options operate differently in the DOS mode than in the OS/2 mode. Therefore, the following restrictions apply to KbdCharIn when coding in the DOS mode:
typedef struct _KBDKEYINFO { /* kbci */ UCHAR chChar; /* ASCII character code */ UCHAR chScan; /* Scan Code */ UCHAR fbStatus; /* State of the character */ UCHAR bNlsShift; /* Reserved (set to zero) */ USHORT fsState; /* State of the shift keys */ ULONG time; /* Time stamp of keystroke (ms since ipl) */ }KBDKEYINFO; #define INCL_KBD USHORT rc = KbdCharIn(CharData, IOWait, KbdHandle); PKBDKEYINFO CharData; /* Buffer for data */ USHORT IOWait; /* Indicate if wait */ HKBD KbdHandle; /* Keyboard handle */ USHORT rc; /* return code */
KBDKEYINFO struc kbci_chChar db ? ;ASCII character code kbci_chScan db ? ;Scan Code kbci_fbStatus db ? ;State of the character kbci_bNlsShift db ? ;Reserved (set to zero) kbci_fsState dw ? ;state of the shift keys kbci_time dd ? ;time stamp of keystroke (ms since ipl) KBDKEYINFO ends EXTRN KbdCharIn:FAR INCL_KBD EQU 1 PUSH@ OTHER CharData ;Buffer for data PUSH WORD IOWait ;Indicate if wait PUSH WORD KbdHandle ;Keyboard handle CALL KbdCharIn Returns WORD