{{page>en:templates:fapiint}}
====== KbdOpen ======
This call creates a new logical keyboard.
===== Syntax =====
KbdOpen (KbdHandle)
===== Parameters =====
* KbdHandle (PHKBD) - output : Address of the logical keyboard.
===== Return Code =====
rc (USHORT) - return:Return code descriptions are:
* 0 NO_ERROR
*440 ERROR_KBD_NO_MORE_HANDLE
*441 ERROR_KBD_CANNOT_CREATE_KCB
*464 ERROR_KBD_DETACHED
*504 ERROR_KBD_EXTENDED_SG
===== Remarks =====
KbdOpen blocks while another thread has the keyboard focus (by way of [[KbdGetFocus]]) until the thread with the focus issues [[KbdFreeFocus]]. Therefore, to prevent KbdOpen from blocking, it is recommended that KbdOpen be issued only while the current thread has the focus. For example:
KbdGetFocus : wait until focus available on handle 0
KbdOpen : get a logical keyboard handle
KbdOpen : get another logical keyboard handle
KbdOpen : get yet another logical keyboard handle
KbdFreeFocus : give up the focus on handle 0.
===== Bindings =====
==== C ====
#define INCL_KBD
USHORT rc = KbdOpen(KbdHandle);
PHKBD KbdHandle; /* Keyboard handle */
USHORT rc; /* return code */
====MASM====
EXTRN KbdOpen:FAR
INCL_KBD EQU 1
PUSH@ WORD KbdHandle ;Keyboard handle
CALL KbdOpen
Returns WORD
{{page>en:templates:fapi}}