Virtual-Key Codes

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.