The VkKeyScanEx function 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 given keyboard layout handle.
SHORT VkKeyScanEx(
TCHAR ch, // character to translate
HKL dwhkl // keyboard layout handle
);
If the function succeeds, the low-order byte of the return value contains the virtual-key code and the high-order byte contains the shift state, which can be a combination of the following flag bits.
Bit | Meaning | |
---|---|---|
1 | Either shift key is pressed. | |
2 | Either CTRL key is pressed. | |
4 | Either ALT key is pressed. | |
8 | The Hankaku key is pressed | |
16 | Reserved (defined by the keyboard layout driver). | |
32 | Reserved (defined by the keyboard layout driver). |
If the function finds no key that translates to the passed character code, both the low-order and high-order bytes contain –1.
For keyboard layouts that use the right-hand alt key as a shift key (for example, the French keyboard layout), the shift state is represented by the value 6, because the right-hand alt key is converted internally into ctrl+alt.
Translations for the numeric keypad (VK_NUMPAD0 through VK_DIVIDE) are ignored. This function is intended to translate characters into keystrokes from the main keyboard section only. For example, the character "7" is translated into VK_7, not VK_NUMPAD7.
VkKeyScanEx is used by applications that send characters by using the WM_KEYUP and WM_KEYDOWN messages.
Windows NT: Requires version 4.0 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in winuser.h.
Import Library: Use user32.lib.
Unicode: Implemented as Unicode and ANSI versions on Windows NT.
Keyboard Input Overview, Keyboard Input Functions, GetAsyncKeyState, GetKeyboardState, GetKeyNameText, GetKeyState, LoadKeyboardLayout, SetKeyboardState, ToAsciiEx