Virtual Key Codes (Compact 2013)

3/28/2014

The following table shows the symbolic constant names, hexadecimal values, and keyboard equivalents for the virtual key codes used by the Windows Embedded Compact operating system. The codes are listed in numeric order. To create a hot key, you can combine any of the codes with a modifier key.

Virtual key codes

Symbolic constant

Hexadecimal value

Mouse or keyboard equivalent

VK_LBUTTON

0x01

Left mouse button.

VK_RBUTTON

0x02

Right mouse button.

VK_CANCEL

0x03

Control-break processing.

VK_MBUTTON

0x04

Middle mouse button on a three-button mouse.

 

0x05-0x07

Undefined.

VK_BACK

0x08

BACKSPACE key.

VK_TAB

0x09

TAB key.

 

0x0A-0x0B

Undefined.

VK_CLEAR

0x0C

CLEAR key.

VK_RETURN

0x0D

ENTER key.

 

0x0E-0x0F

Undefined.

VK_SHIFT

0x10

SHIFT key.

VK_CONTROL

0x11

CTRL key.

VK_MENU

0x12

ALT key.

VK_PAUSE

0x13

PAUSE key.

VK_CAPITAL

0x14

CAPS LOCK key.

 

0x15-0x19

Reserved for Kanji systems.

 

0x1A

Undefined.

VK_ESCAPE

0x1B

ESC key.

 

0x1C-0x1F

Reserved for Kanji systems.

VK_SPACE

0x20

SPACEBAR.

VK_PRIOR

0x21

PAGE UP key.

VK_NEXT

0x22

PAGE DOWN key.

VK_END

0x23

END key.

VK_HOME

0x24

HOME key.

VK_LEFT

0x25

LEFT ARROW key.

VK_UP

0x26

UP ARROW key.

VK_RIGHT

0x27

RIGHT ARROW key.

VK_DOWN

0x28

DOWN ARROW key.

VK_SELECT

0x29

SELECT key.

 

0x2A

Specific to OEM.

VK_EXECUTE

0x2B

EXECUTE key.

VK_SNAPSHOT

0x2C

PRINT SCREEN key.

VK_INSERT

0x2D

INS key.

VK_DELETE

0x2E

DEL key.

VK_HELP

0x2F

HELP key.

 

0x3A-0x40

Undefined.

VK_LWIN

0x5B

Left Windows key on a Microsoft Natural Keyboard.

VK_RWIN

0x5C

Right Windows key on a Microsoft Natural Keyboard.

VK_APPS

0x5D

Applications key on a Microsoft Natural Keyboard.

 

0x5E-0x5F

Undefined.

VK_NUMPAD0

0x60

Numeric keypad 0 key.

VK_NUMPAD1

0x61

Numeric keypad 1 key.

VK_NUMPAD2

0x62

Numeric keypad 2 key.

VK_NUMPAD3

0x63

Numeric keypad 3 key.

VK_NUMPAD4

0x64

Numeric keypad 4 key.

VK_NUMPAD5

0x65

Numeric keypad 5 key.

VK_NUMPAD6

0x66

Numeric keypad 6 key.

VK_NUMPAD7

0x67

Numeric keypad 7 key.

VK_NUMPAD8

0x68

Numeric keypad 8 key.

VK_NUMPAD9

0x69

Numeric keypad 9 key.

VK_MULTIPLY

0x6A

Multiply key.

VK_ADD

0x6B

Add key.

VK_SEPARATOR

0x6C

Separator key.

VK_SUBTRACT

0x6D

Subtract key.

VK_DECIMAL

0x6E

Decimal key.

VK_DIVIDE

0x6F

Divide key.

VK_F1

0x70

F1 key.

VK_F2

0x71

F2 key.

VK_F3

0x72

F3 key.

VK_F4

0x73

F4 key.

VK_F5

0x74

F5 key.

VK_F6

0x75

F6 key.

VK_F7

0x76

F7 key.

VK_F8

0x77

F8 key.

VK_F9

0x78

F9 key.

VK_F10

0x79

F10 key.

VK_F11

0x7A

F11 key.

VK_F12

0x7B

F12 key.

VK_F13

0x7C

F13 key.

VK_F14

0x7D

F14 key.

VK_F15

0x7E

F15 key.

VK_F16

0x7F

F16 key.

VK_F17

0x80

F17 key.

VK_F18

0x81

F18 key.

VK_F19

0x82

F19 key.

VK_F20

0x83

F20 key.

VK_F21

0x84

F21 key.

VK_F22

0x85

F22 key.

VK_F23

0x86

F23 key.

VK_F24

0x87

F24 key.

 

0x88-0x8F

Unassigned.

VK_NUMLOCK

0x90

NUM LOCK key.

VK_SCROLL

0x91

SCROLL LOCK key.

VK_LSHIFT

0xA0

Left SHIFT.

VK_RSHIFT

0xA1

Right SHIFT.

VK_LCONTROL

0xA2

Left CTRL.

VK_RCONTROL

0xA3

Right CTRL.

VK_LMENU

0xA4

Left ALT.

VK_RMENU

0xA5

Right ALT.

 

0xBA-0xC0

Specific to OEM; reserved. See following tables.

 

0xC1-0xDA

Unassigned.

 

0xDB-0xDE

Specific to OEM; reserved. See following tables.

VK_OFF

0xDF

Used to power the device on and off. No keyboard equivalent.

 

0xE1-0xE4

Specific to OEM.

 

0xE5

Unassigned.

 

0xE6

Specific to OEM.

VK_PACKET

0xE7

Used to pass Unicode characters as if they were keystrokes. If VK_PACKET is used with SendInput, then the Unicode character to be delivered should be placed into the lower 16 bits of the scan code. If a keyboard message is removed from the message queue and the virtual key is VK_PACKET, then the Unicode character will be the upper 16 bits of the lparam.

 

0xE8

Unassigned.

 

0xE9-0xF5

Specific to OEM.

VK_ATTN

0xF6

ATTN key.

VK_CRSEL

0xF7

CRSEL key.

VK_EXSEL

0xF8

EXSEL key.

VK_EREOF

0xF9

Erase EOF key.

VK_PLAY

0xFA

PLAY key.

VK_ZOOM

0xFB

ZOOM key.

VK_NONAME

0xFC

Reserved.

VK_PA1

0xFD

PA1 key.

VK_OEM_CLEAR

0xFE

CLEAR key.

OEMs should make special note of the VK key ranges reserved for specific OEM use: 2A, DB-E4, E6, and E9-F5.

In addition to the virtual key assignments in the previous table, Microsoft has assigned the following specific OEM virtual keys.

Symbolic constant

Hexadecimal value

Mouse or keyboard equivalent

VK_OEM_SCROLL

0x91

None.

VK_OEM_1

0xBA

";:" for US.

VK_OEM_PLUS

0xBB

"+" any country/region.

VK_OEM_COMMA

0xBC

"," any country/region.

VK_OEM_MINUS

0xBD

"-" any country/region.

VK_OEM_PERIOD

0xBE

"." any country/region.

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

None. By default, this is equivalent to VK_OFF.

VK_OEM_AX

0xE1

AX key on Japanese AX keyboard.

VK_OEM_102

0xE2

"<>" or "\|" on RT 102-key keyboard.

For East Asian Input Method Editors (IMEs), the following additional virtual keyboard definitions must be observed.

Symbolic constant

Hexadecimal value

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.

OEMs should not use the unassigned portions of the virtual key (VK) mapping tables. If manufacturers require additional VK mappings, they should reuse some of the current manufacturer-specific and vendor-specific assignments.

See Also

Reference

Manufacturer-specific Virtual Key Codes

Other Resources

Keyboard