title | description | ms.assetid | keywords | ms.topic | ms.date | |||
---|---|---|---|---|---|---|---|---|
Keyboard Input |
This section discusses how the system generates keyboard input and how an application receives and processes that input. |
vs|winui|~\winui\windowsuserinterface\userinput\keyboardinput.htm |
|
article |
08/01/2022 |
This section describes how the system generates keyboard input and how an application receives and processes that input.
Name | Description |
---|---|
About Keyboard Input | Discusses keyboard input. |
Using Keyboard Input | Covers tasks that are associated with keyboard input. |
Keyboard Input Reference | Contains the API reference. |
Name | Description |
---|---|
ActivateKeyboardLayout | Sets the input locale identifier (formerly called the keyboard layout handle) for the calling thread or the current process. The input locale identifier specifies a locale as well as the physical layout of the keyboard. |
BlockInput | Blocks keyboard and mouse input events from reaching applications. |
EnableWindow | Enables or disables mouse and keyboard input to the specified window or control. When input is disabled, the window does not receive input such as mouse clicks and key presses. When input is enabled, the window receives all input. |
GetActiveWindow | Retrieves the window handle to the active window attached to the calling thread's message queue. |
GetAsyncKeyState | Determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState. |
GetFocus | Retrieves the handle to the window that has the keyboard focus, if the window is attached to the calling thread's message queue. |
GetKeyboardLayout | Retrieves the active input locale identifier (formerly called the keyboard layout) for the specified thread. If the idThread parameter is zero, the input locale identifier for the active thread is returned. |
GetKeyboardLayoutList | Retrieves the input locale identifiers (formerly called keyboard layout handles) corresponding to the current set of input locales in the system. The function copies the identifiers to the specified buffer. |
GetKeyboardLayoutName | Retrieves the name of the active input locale identifier (formerly called the keyboard layout). |
GetKeyboardState | Copies the status of the 256 virtual keys to the specified buffer. |
GetKeyNameText | Retrieves a string that represents the name of a key. |
GetKeyState | Retrieves the status of the specified virtual key. The status specifies whether the key is up, down, or toggled (on, off alternating each time the key is pressed). |
GetLastInputInfo | Retrieves the time of the last input event. |
IsWindowEnabled | Determines whether the specified window is enabled for mouse and keyboard input. |
LoadKeyboardLayout | Loads a new input locale identifier (formerly called the keyboard layout) into the system. Several input locale identifiers can be loaded at a time, but only one per process is active at a time. Loading multiple input locale identifiers makes it possible to rapidly switch between them. |
MapVirtualKey | Translates (maps) a virtual-key code into a scan code or character value, or translates a scan code into a virtual-key code. To specify a handle to the keyboard layout to use for translating the specified code, use the MapVirtualKeyEx function. |
MapVirtualKeyEx | Maps a virtual-key code into a scan code or character value, or translates a scan code into a virtual-key code. The function translates the codes using the input language and an input locale identifier. |
OemKeyScan | Maps OEMASCII codes 0 through 0x0FF into the OEM scan codes and shift states. The function provides information that allows a program to send OEM text to another program by simulating keyboard input. |
RegisterHotKey | Defines a system-wide hot key. |
SendInput | Synthesizes keystrokes, mouse motions, and button clicks. |
SetActiveWindow | Activates a window. The window must be attached to the calling thread's message queue. |
SetFocus | Sets the keyboard focus to the specified window. The window must be attached to the calling thread's message queue. |
SetKeyboardState | Copies a 256-byte array of keyboard key states into the calling thread's keyboard input-state table. This is the same table accessed by the GetKeyboardState and GetKeyState functions. Changes made to this table do not affect keyboard input to any other thread. |
ToAscii | Translates the specified virtual-key code and keyboard state to the corresponding character or characters. The function translates the code using the input language and physical keyboard layout identified by the keyboard layout handle. To specify a handle to the keyboard layout to use to translate the specified code, use the ToAsciiEx function. |
ToAsciiEx | Translates the specified virtual-key code and keyboard state to the corresponding character or characters. The function translates the code using the input language and physical keyboard layout identified by the input locale identifier. |
ToUnicode | Translates the specified virtual-key code and keyboard state to the corresponding Unicode character or characters. To specify a handle to the keyboard layout to use to translate the specified code, use the ToUnicodeEx function. |
ToUnicodeEx | Translates the specified virtual-key code and keyboard state to the corresponding Unicode character or characters. |
UnloadKeyboardLayout | Unloads an input locale identifier (formerly called a keyboard layout). |
UnregisterHotKey | Frees a hot key previously registered by the calling thread. |
VkKeyScanEx | Translates a character to the corresponding virtual-key code and shift state. The function translates the character using the input language and physical keyboard layout identified by the input locale identifier. |
The following functions are obsolete.
Function | Description |
---|---|
GetKBCodePage | Retrieves the current code page. |
keybd_event | Synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver's interrupt handler calls the keybd_event function. |
VkKeyScan | Translates a character to the corresponding virtual-key code and shift state for the current keyboard. |
Name | Description |
---|---|
WM_GETHOTKEY | Determines the hot key associated with a window. |
WM_SETHOTKEY | Associates a hot key with the window. When the user presses the hot key, the system activates the window. |
Name | Description |
---|---|
WM_ACTIVATE | Sent to both the window being activated and the window being deactivated. If the windows use the same input queue, the message is sent synchronously, first to the window procedure of the top-level window being deactivated, then to the window procedure of the top-level window being activated. If the windows use different input queues, the message is sent asynchronously, so the window is activated immediately. |
WM_APPCOMMAND | Notifies a window that the user generated an application command event, for example, by clicking an application command button using the mouse or typing an application command key on the keyboard. |
WM_CHAR | Posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. The WM_CHAR message contains the character code of the key that was pressed. |
WM_DEADCHAR | Posted to the window with the keyboard focus when a WM_KEYUP message is translated by the TranslateMessage function. WM_DEADCHAR specifies a character code generated by a dead key. A dead key is a key that generates a character, such as the umlaut (double-dot), that is combined with another character to form a composite character. For example, the umlaut-O character ( ) is generated by typing the dead key for the umlaut character, and then typing the O key. |
WM_HOTKEY | Posted when the user presses a hot key registered by the RegisterHotKey function. The message is placed at the top of the message queue associated with the thread that registered the hot key. |
WM_KEYDOWN | Posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT key is not pressed. |
WM_KEYUP | Posted to the window with the keyboard focus when a nonsystem key is released. A nonsystem key is a key that is pressed when the ALT key is not pressed, or a keyboard key that is pressed when a window has the keyboard focus. |
WM_KILLFOCUS | Sent to a window immediately before it loses the keyboard focus. |
WM_SETFOCUS | Sent to a window after it has gained the keyboard focus. |
WM_SYSDEADCHAR | Sent to the window with the keyboard focus when a WM_SYSKEYDOWN message is translated by the TranslateMessage function. WM_SYSDEADCHAR specifies the character code of a system dead key that is, a dead key that is pressed while holding down the ALT key. |
WM_SYSKEYDOWN | Posted to the window with the keyboard focus when the user presses the F10 key (which activates the menu bar) or holds down the ALT key and then presses another key. It also occurs when no window currently has the keyboard focus; in this case, the WM_SYSKEYDOWN message is sent to the active window. The window that receives the message can distinguish between these two contexts by checking the context code in the lParam parameter. |
WM_SYSKEYUP | Posted to the window with the keyboard focus when the user releases a key that was pressed while the ALT key was held down. It also occurs when no window currently has the keyboard focus; in this case, the WM_SYSKEYUP message is sent to the active window. The window that receives the message can distinguish between these two contexts by checking the context code in the lParam parameter. |
WM_UNICHAR | Posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. The WM_UNICHAR message contains the character code of the key that was pressed. |
Name | Description |
---|---|
HARDWAREINPUT | Contains information about a simulated message generated by an input device other than a keyboard or mouse. |
INPUT | Contains information used for synthesizing input events such as keystrokes, mouse movement, and mouse clicks. |
KEYBDINPUT | Contains information about a simulated keyboard event. |
LASTINPUTINFO | Contains the time of the last input. |
MOUSEINPUT | Contains information about a simulated mouse event. |
Name | Description |
---|---|
Virtual-Key Codes | The symbolic constant names, hexadecimal values, and mouse or keyboard equivalents for the virtual-key codes used by the system. The codes are listed in numeric order. |