==== KbdRegister ====
**Bindings**: [[reg#C bindings|C]], [[reg#MASM bindings|MASM]]
This call registers a keyboard subsystem within a session.
KbdRegister (ModuleName, EntryPoint, FunctionMask)
//ModuleName// (*PSZ*) - input
Address of the dynamic link module name. Maximum length is 9 bytes (including ASCIIZ terminator).
//EntryPoint// (**PSZ**) - input
Address of the dynamic link entry point name of a routine that receives control when any of the registered functions are called. Maximum length is 33 bytes (including ASCIIZ terminator).
//FunctionMask// (**ULONG**) - input
A bit mask where each bit identifies a keyboard function being registered. The bit values are:
^Bit ^Description ^
|31-15 |Reserved, must be \\ set to zero. |
|14 |KbdGetHWId |
|13 |KbdSetCustXt |
|12 |KbdXlate |
|11 |KbdSetCp |
|10 |KbdGetCp |
|9 |KbdFreeFocus |
|8 |KbdGetFocus |
|7 |KbdClose |
|6 |KbdOpen |
|5 |KbdStringIn |
|4 |KbdSetStatus |
|3 |KbdGetStatus |
|2 |KbdFlushBuffer |
|1 |KbdPeek |
|0 |KbdCharIn |
//rc// (**USHORT**) - return
Return code descriptions are:
|0 |NO_ERROR |
|408 |ERROR_KBD_INVALID_ASCIIZ |
|409 |ERROR_KBD_INVALID_MASK |
|410 |ERROR_KBD_REGISTER |
|464 |ERROR_KBD_DETACHED |
|504 |ERROR_KBD_EXTENDED_SG |
**Remarks**
There can be only one //KbdRegister// call outstanding for each session without an intervening KbdDeRegister. //[[en:ibm:prcp:kbd:dereg|KbdDeRegister]]// must be issued by the same process that issued the //KbdRegister//.
=== C bindings ===
#define INCL_KBD
USHORT rc = KbdRegister(ModuleName, EntryPoint, FunctionMask);
PSZ ModuleName; /* Module name */
PSZ EntryPoint; /* Entry point name */
ULONG FunctionMask; /* Function mask */
USHORT rc; /* return code */
=== MASM bindings ===
EXTRN KbdRegister:FAR
INCL_KBD EQU 1
PUSH@ ASCIIZ ModuleName ;Module name
PUSH@ ASCIIZ EntryPoint ;Entry point name
PUSH DWORD FunctionMask ;Function mask
CALL KbdRegister
Returns WORD