The following table shows the symbolic constant names, hexadecimal values, and keyboard equivalents for the virtual-key codes used by the Windows CE operating system. The codes are listed in numeric order.
Symbolic constant |
Value (Hex) |
Mouse or keyboard equivalent |
|
VK_LBUTTON | 01 | Left mouse button | |
VK_RBUTTON | 02 | Right mouse button | |
VK_CANCEL | 03 | Control-break processing | |
VK_MBUTTON | 04 | Middle mouse button (three-button mouse) | |
— | 05–07 | Undefined | |
VK_BACK | 08 | BACKSPACE key | |
VK_TAB | 09 | TAB key | |
— | 0A–0B | Undefined | |
VK_CLEAR | 0C | CLEAR key | |
VK_RETURN | 0D | ENTER key | |
— | 0E–0F | Undefined | |
VK_SHIFT | 10 | SHIFT key | |
VK_CONTROL | 11 | CTRL key | |
VK_MENU | 12 | ALT key | |
VK_PAUSE | 13 | PAUSE key | |
VK_CAPITAL | 14 | CAPS LOCK key | |
— | 15–19 | Reserved for Kanji systems | |
— | 1A | Undefined | |
VK_ESCAPE | 1B | ESC key | |
— | 1C–1F | Reserved for Kanji systems | |
VK_SPACE | 20 | SPACEBAR | |
VK_PRIOR | 21 | PAGE UP key | |
VK_NEXT | 22 | PAGE DOWN key | |
VK_END | 23 | END key | |
VK_HOME | 24 | HOME key | |
VK_LEFT | 25 | LEFT ARROW key | |
VK_UP | 26 | UP ARROW key | |
VK_RIGHT | 27 | RIGHT ARROW key | |
VK_DOWN | 28 | DOWN ARROW key | |
VK_SELECT | 29 | SELECT key | |
2A | OEM-specific | ||
VK_EXECUTE | 2B | EXECUTE key | |
VK_SNAPSHOT | 2C | PRINT SCREEN key for Windows 3.0 and later | |
VK_INSERT | 2D | INS key | |
VK_DELETE | 2E | DEL key | |
VK_HELP | 2F | HELP key | |
VK_0 | 30 | 0 key | |
VK_1 | 31 | 1 key | |
VK_2 | 32 | 2 key | |
VK_3 | 33 | 3 key | |
VK_4 | 34 | 4 key | |
VK_5 | 35 | 5 key | |
VK_6 | 36 | 6 key | |
VK_7 | 37 | 7 key | |
VK_8 | 38 | 8 key | |
VK_9 | 39 | 9 key | |
3A–40 | Undefined | ||
VK_A | 41 | A key | |
VK_B | 42 | B key | |
VK_C | 43 | C key | |
VK_D | 44 | D key | |
VK_E | 45 | E key | |
VK_F | 46 | F key | |
VK_G | 47 | G key | |
VK_H | 48 | H key | |
VK_I | 49 | I key | |
VK_J | 4A | J key | |
VK_K | 4B | K key | |
VK_L | 4C | L key | |
VK_M | 4D | M key | |
VK_N | 4E | N key | |
VK_O | 4F | O key | |
VK_P | 50 | P key | |
VK_Q | 51 | Q key | |
VK_R | 52 | R key | |
VK_S | 53 | S key | |
VK_T | 54 | T key | |
VK_U | 55 | U key | |
VK_V | 56 | V key | |
VK_W | 57 | W key | |
VK_X | 58 | X key | |
VK_Y | 59 | Y key | |
VK_Z | 5A | Z key | |
VK_LWIN | 5B | Left Windows key (Microsoft Natural Keyboard) | |
VK_RWIN | 5C | Right Windows key (Microsoft Natural Keyboard) | |
VK_APPS | 5D | Applications key (Microsoft Natural Keyboard) | |
5E–5F | Undefined | ||
VK_NUMPAD0 | 60 | Numeric keypad 0 key | |
VK_NUMPAD1 | 61 | Numeric keypad 1 key | |
VK_NUMPAD2 | 62 | Numeric keypad 2 key | |
VK_NUMPAD3 | 63 | Numeric keypad 3 key | |
VK_NUMPAD4 | 64 | Numeric keypad 4 key | |
VK_NUMPAD5 | 65 | Numeric keypad 5 key | |
VK_NUMPAD6 | 66 | Numeric keypad 6 key | |
VK_NUMPAD7 | 67 | Numeric keypad 7 key | |
VK_NUMPAD8 | 68 | Numeric keypad 8 key | |
VK_NUMPAD9 | 69 | Numeric keypad 9 key | |
VK_MULTIPLY | 6A | Multiply key | |
VK_ADD | 6B | Add key | |
VK_SEPARATOR | 6C | Separator key | |
VK_SUBTRACT | 6D | Subtract key | |
VK_DECIMAL | 6E | Decimal key | |
VK_DIVIDE | 6F | Divide key | |
VK_F1 | 70 | F1 key | |
VK_F2 | 71 | F2 key | |
VK_F3 | 72 | F3 key | |
VK_F4 | 73 | F4 key | |
VK_F5 | 74 | F5 key | |
VK_F6 | 75 | F6 key | |
VK_F7 | 76 | F7 key | |
VK_F8 | 77 | F8 key | |
VK_F9 | 78 | F9 key | |
VK_F10 | 79 | F10 key | |
VK_F11 | 7A | F11 key | |
VK_F12 | 7B | F12 key | |
VK_F13 | 7C | F13 key | |
VK_F14 | 7D | F14 key | |
VK_F15 | 7E | F15 key | |
VK_F16 | 7F | F16 key | |
VK_F17 | 80H | F17 key | |
VK_F18 | 81H | F18 key | |
VK_F19 | 82H | F19 key | |
VK_F20 | 83H | F20 key | |
VK_F21 | 84H | F21 key | |
VK_F22 | 85H | F22 key | |
VK_F23 | 86H | F23 key | |
VK_F24 | 87H | F24 key | |
88–8F | Unassigned | ||
VK_NUMLOCK | 90 | NUM LOCK key | |
VK_SCROLL | 91 | SCROLL LOCK key | |
VK_LSHIFT | 0xA0 | Left SHIFT | |
VK_RSHIFT | 0xA1 | Right SHIFT | |
VK_LCONTROL | 0xA2 | Left CONTROL | |
VK_RONTROL | 0xA3 | Right CONTROL | |
VK_LMENU | 0xA4 | Left ALT | |
VK_RMENU | 0xA5 | Right ALT | |
BA-C0 | OEM-specific; reserved. See following tables. | ||
C1-DA | Unassigned | ||
DB-E2 | OEM-specific; reserved. See following tables. | ||
E3 – E4 | OEM-specific | ||
E5 | Unassigned | ||
E6 | OEM-specific | ||
E7-E8 | Unassigned | ||
E9-F5 | OEM-specific | ||
VK_ATTN | F6 | ATTN key | |
VK_CRSEL | F7 | CRSEL key | |
VK_EXSEL | F8 | EXSEL key | |
VK_EREOF | F9 | Erase EOF key | |
VK_PLAY | FA | PLAY key | |
VK_ZOOM | FB | ZOOM key | |
VK_NONAME | FC | Reserved for future use | |
VK_PA1 | FD | PA1 key | |
VK_OEM_CLEAR | FE | CLEAR key |
OEMs should make special note of the VK key ranges reserved for OEM-specific use: 2A, DB–E4, E6, and E9–F5.
In addition to the VK key assignments in the previous table, Microsoft has assigned the following OEM VK keys.
Symbolic constant |
Value (Hex) |
Mouse or keyboard equivalent |
VK_OEM_SCROLL | 0x91 | |
VK_OEM_1 | 0xBA | “;:” for US |
VK_OEM_PLUS | 0xBB | “+” any country |
VK_OEM_COMMA | 0xBC | “,” any country |
VK_OEM_MINUS | 0xBD | “-” any country |
VK_OEM_PERIOD | 0xBE | “.” any country |
VK_OEM_2 | 0xBF | “/?” for US |
VK_OEM_3 | 0xC0 | “`~” for US |
VK_OEM_4 | 0xDB | “[{“ for US |
VK_OEM_5 | 0xDC | “\|” for US |
VK_OEM_6 | 0xDD | “]}” for US |
VK_OEM_7 | 0xDE | “'"“ for US |
VK_OEM_8 | 0xDF | |
VK_OEM_AX | 0xE1 | AX key on Japanese AX keyboard |
VK_OEM_102 | 0xE2 | “<>“ or “\|” on RT 102-key keyboard |
Finally, for East Asian Input Method Editors (IMEs) the following additional virtual keyboard definitions must be observed.
Symbolic constant |
Value (Hex) |
Description |
VK_DBE_ALPHANUMERIC | 0x0f0 | Changes the mode to alphanumeric |
VK_DBE_KATAKANA | 0x0f1 | Changes the mode to Katakana |
VK_DBE_HIRAGANA | 0x0f2 | Changes the mode to Hiragana |
VK_DBE_SBCSCHAR | 0x0f3 | Changes the mode to single-byte characters |
VK_DBE_DBCSCHAR | 0x0f4 | Changes the mode to double-byte characters |
VK_DBE_ROMAN | 0x0f5 | Changes the mode to Roman characters |
VK_DBE_NOROMAN | 0x0f6 | Changes the mode to non-Roman characters |
VK_DBE_ENTERWORDREGISTERMODE | 0x0f7 | Activates the word registration dialog box |
VK_DBE_ENTERIMECONFIGMODE | 0x0f8 | Activates a dialog box for setting up an IME environment |
VK_DBE_FLUSHSTRING | 0x0f9 | Deletes the undetermined string without determining it |
VK_DBE_CODEINPUT | 0x0fa | Changes the mode to code input |
VK_DBE_NOCODEINPUT | 0x0fb | Changes the mode to no-code input |
VK_DBE_DETERMINESTRING | 0x0fc | |
VK_DBE_ENTERDLGCONVERSIONMODE | 0x0fd |
OEMs should not use the unassigned portions of the VK mapping tables. Microsoft will assign these values in the future. If OEMs require additional VK mappings, they should reuse some of the current OEM and Vender specific assignments.