==== KbdSetCustXt ==== **Bindings**: [[setcustxt#C bindings|C]], [[setcustxt#MASM bindings|MASM]] This call installs, on the specified handle, the translate table which this call points to. This translate table affects only this handle. KbdSetCustXt (Xlatetable, KbdHandle) //Xlatetable// (**PUSHORT**) - input A pointer to the translation table used to translate scan code to ASCII code for a specified handle. The format of the translate table is documented in the Set Code Page IOCTL 50H. Refer to IBM Operating System/2 Version 1.2 I/O Subsystems And Device Support Volume 1 for a complete discussion of Set Code Page IOCTL 50H. //KbdHandle// (**HKBD**) - input Default keyboard or the logical keyboard. //rc// (**USHORT**) - return Return code descriptions are: |0 |NO_ERROR | |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** The translate table must be maintained in the caller's memory. No copy of the translate table is made by //KbdSetCustXt//. //[[setcp|KbdSetCp]]// reverses the action of //KbdSetCustXt// and sets the handle equal to one of the system translate tables. If memory is dynamically allocated by the caller for the translate table and is freed before the //[[setcp|KbdSetCp]]// is performed, //[[setcp|KbdSetCp]]// and future translations may fail. === C bindings === #define INCL_KBD USHORT rc = KbdSetCustXt(Xlatetable, KbdHandle); PUSHORT Xlatetable; /* Translation Table */ HKBD KbdHandle; /* Keyboard handle */ USHORT rc; /* return code */ === MASM bindings === EXTRN KbdSetCustXt:FAR INCL_KBD EQU 1 PUSH@ WORD CodePage ;Translation Table PUSH WORD KbdHandle ;Keyboard handle CALL KbdSetCustXt Returns WORD