Virtual-Key Codes

Description & Usage

The virtual-key codes identify various virtual keys. Virtual keys mainly consist of actual keyboard keys, but also include "virtual" elements such as the three mouse buttons. The virtual keys also include many "keys" which usually do not exist at all! A key's virtual-key code does not change when modifier keys (Ctrl, Alt, Shift, etc.) are held -- e.g., the 1 key has the same virtual-key code whether 1 or ! is pressed. However, the numbers in the numeric keypad on the keyboard do have two different virtual-key codes: one for when Num Lock is on, and another for when Num Lock is off. Note that the virtual-key codes of 0-9 and A-Z equal their ASCII codes.

Note: The actual meanings of some of the key codes may vary on keyboards designed for different languages. Most notably, the VK_OEM_* that denote punctuation keys may vary between languages, relating to a different punctuation key. The meanings listed below are for a U.S. English-language keyboard.

Virtual Key Codes

VK_LBUTTON
The left mouse button
VK_RBUTTON
The right mouse button
VK_CANCEL
The Cancel virtual key, used for control-break processing
VK_MBUTTON
The middle mouse button
VK_BACK
Backspace
VK_TAB
Tab
VK_CLEAR
5 (keypad without Num Lock)
VK_RETURN
Enter
VK_SHIFT
Shift (either one)
VK_CONTROL
Ctrl (either one)
VK_MENU
Alt (either one)
VK_PAUSE
Pause
VK_CAPITAL
Caps Lock
VK_ESCAPE
Esc
VK_SPACE
Spacebar
VK_PRIOR
Page Up
VK_NEXT
Page Down
VK_END
End
VK_HOME
Home
VK_LEFT
Left Arrow
VK_UP
Up Arrow
VK_RIGHT
Right Arrow
VK_DOWN
Down Arrow
VK_SELECT
Select
VK_PRINT
Print (only used by Nokia keyboards)
VK_EXECUTE
Execute (not used)
VK_SNAPSHOT
Print Screen
VK_INSERT
Insert
VK_DELETE
Delete
VK_HELP
Help
VK_0
0
VK_1
1
VK_2
2
VK_3
3
VK_4
4
VK_5
5
VK_6
6
VK_7
7
VK_8
8
VK_9
9
VK_A
A
VK_B
B
VK_C
C
VK_D
D
VK_E
E
VK_F
F
VK_G
G
VK_H
H
VK_I
I
VK_J
J
VK_K
K
VK_L
L
VK_M
M
VK_N
N
VK_O
O
VK_P
P
VK_Q
Q
VK_R
R
VK_S
S
VK_T
T
VK_U
U
VK_V
V
VK_W
W
VK_X
X
VK_Y
Y
VK_Z
Z
VK_STARTKEY
Start Menu key
VK_CONTEXTKEY
Context Menu key
VK_NUMPAD0
0 (keypad with Num Lock)
VK_NUMPAD1
1 (keypad with Num Lock)
VK_NUMPAD2
2 (keypad with Num Lock)
VK_NUMPAD3
3 (keypad with Num Lock)
VK_NUMPAD4
4 (keypad with Num Lock)
VK_NUMPAD5
5 (keypad with Num Lock)
VK_NUMPAD6
6 (keypad with Num Lock)
VK_NUMPAD7
7 (keypad with Num Lock)
VK_NUMPAD8
8 (keypad with Num Lock)
VK_NUMPAD9
9 (keypad with Num Lock)
VK_MULTIPLY
* (keypad)
VK_ADD
+ (keypad)
VK_SEPARATER
Separator (never generated by the keyboard)
VK_DECIMAL
. (keypad with Num Lock)
VK_DIVIDE
/ (keypad)
VK_F1
F1
VK_F2
F2
VK_F3
F3
VK_F4
F4
VK_F5
F5
VK_F6
F6
VK_F7
F7
VK_F8
F8
VK_F9
F9
VK_F10
F10
VK_F11
F11
VK_F12
F12
VK_F13
F13
VK_F14
F14
VK_F15
F15
VK_F16
F16
VK_F17
F17
VK_F18
F18
VK_F19
F19
VK_F20
F20
VK_F21
F21
VK_F22
F22
VK_F23
F23
VK_F24
F24
VK_NUMLOCK
Num Lock
VK_OEM_SCROLL
Scroll Lock
VK_OEM_1
;
VK_OEM_PLUS
=
VK_OEM_COMMA
,
VK_OEM_MINUS
-
VK_OEM_PERIOD
.
VK_OEM_2
/
VK_OEM_3
`
VK_OEM_4
[
VK_OEM_5
\
VK_OEM_6
]
VK_OEM_7
'
VK_OEM_8
(unknown)
VK_ICO_F17
F17 on Olivetti extended keyboard (internal use only)
VK_ICO_F18
F18 on Olivetti extended keyboard (internal use only)
VK_OEM_102
< or | on IBM-compatible 102 enhanced non-U.S. keyboard
VK_ICO_HELP
Help on Olivetti extended keyboard (internal use only)
VK_ICO_00
00 on Olivetti extended keyboard (internal use only)
VK_ICO_CLEAR
Clear on Olivette extended keyboard (internal use only)
VK_OEM_RESET
Reset (Nokia keyboards only)
VK_OEM_JUMP
Jump (Nokia keyboards only)
VK_OEM_PA1
PA1 (Nokia keyboards only)
VK_OEM_PA2
PA2 (Nokia keyboards only)
VK_OEM_PA3
PA3 (Nokia keyboards only)
VK_OEM_WSCTRL
WSCTRL (Nokia keyboards only)
VK_OEM_CUSEL
CUSEL (Nokia keyboards only)
VK_OEM_ATTN
ATTN (Nokia keyboards only)
VK_OEM_FINNISH
FINNISH (Nokia keyboards only)
VK_OEM_COPY
COPY (Nokia keyboards only)
VK_OEM_AUTO
AUTO (Nokia keyboards only)
VK_OEM_ENLW
ENLW (Nokia keyboards only)
VK_OEM_BACKTAB
BACKTAB (Nokia keyboards only)
VK_ATTN
ATTN
VK_CRSEL
CRSEL
VK_EXSEL
EXSEL
VK_EREOF
EREOF
VK_PLAY
PLAY
VK_ZOOM
ZOOM
VK_NONAME
NONAME
VK_PA1
PA1
VK_OEM_CLEAR
CLEAR

Constant Definitions

Const VK_LBUTTON = &H1
Const VK_RBUTTON = &H2
Const VK_CANCEL = &H3
Const VK_MBUTTON = &H4
Const VK_BACK = &H8
Const VK_TAB = &H9
Const VK_CLEAR = &HC
Const VK_RETURN = &HD
Const VK_SHIFT = &H10
Const VK_CONTROL = &H11
Const VK_MENU = &H12
Const VK_PAUSE = &H13
Const VK_CAPITAL = &H14
Const VK_ESCAPE = &H1B
Const VK_SPACE = &H20
Const VK_PRIOR = &H21
Const VK_NEXT = &H22
Const VK_END = &H23
Const VK_HOME = &H24
Const VK_LEFT = &H25
Const VK_UP = &H26
Const VK_RIGHT = &H27
Const VK_DOWN = &H28
Const VK_SELECT = &H29
Const VK_PRINT = &H2A
Const VK_EXECUTE = &H2B
Const VK_SNAPSHOT = &H2C
Const VK_INSERT = &H2D
Const VK_DELETE = &H2E
Const VK_HELP = &H2F
Const VK_0 = &H30
Const VK_1 = &H31
Const VK_2 = &H32
Const VK_3 = &H33
Const VK_4 = &H34
Const VK_5 = &H35
Const VK_6 = &H36
Const VK_7 = &H37
Const VK_8 = &H38
Const VK_9 = &H39
Const VK_A = &H41
Const VK_B = &H42
Const VK_C = &H43
Const VK_D = &H44
Const VK_E = &H45
Const VK_F = &H46
Const VK_G = &H47
Const VK_H = &H48
Const VK_I = &H49
Const VK_J = &H4A
Const VK_K = &H4B
Const VK_L = &H4C
Const VK_M = &H4D
Const VK_N = &H4E
Const VK_O = &H4F
Const VK_P = &H50
Const VK_Q = &H51
Const VK_R = &H52
Const VK_S = &H53
Const VK_T = &H54
Const VK_U = &H55
Const VK_V = &H56
Const VK_W = &H57
Const VK_X = &H58
Const VK_Y = &H59
Const VK_Z = &H5A
Const VK_STARTKEY = &H5B
Const VK_CONTEXTKEY = &H5D
Const VK_NUMPAD0 = &H60
Const VK_NUMPAD1 = &H61
Const VK_NUMPAD2 = &H62
Const VK_NUMPAD3 = &H63
Const VK_NUMPAD4 = &H64
Const VK_NUMPAD5 = &H65
Const VK_NUMPAD6 = &H66
Const VK_NUMPAD7 = &H67
Const VK_NUMPAD8 = &H68
Const VK_NUMPAD9 = &H69
Const VK_MULTIPLY = &H6A
Const VK_ADD = &H6B
Const VK_SEPARATOR = &H6C
Const VK_SUBTRACT = &H6D
Const VK_DECIMAL = &H6E
Const VK_DIVIDE = &H6F
Const VK_F1 = &H70
Const VK_F2 = &H71
Const VK_F3 = &H72
Const VK_F4 = &H73
Const VK_F5 = &H74
Const VK_F6 = &H75
Const VK_F7 = &H76
Const VK_F8 = &H77
Const VK_F9 = &H78
Const VK_F10 = &H79
Const VK_F11 = &H7A
Const VK_F12 = &H7B
Const VK_F13 = &H7C
Const VK_F14 = &H7D
Const VK_F15 = &H7E
Const VK_F16 = &H7F
Const VK_F17 = &H80
Const VK_F18 = &H81
Const VK_F19 = &H82
Const VK_F20 = &H83
Const VK_F21 = &H84
Const VK_F22 = &H85
Const VK_F23 = &H86
Const VK_F24 = &H87
Const VK_NUMLOCK = &H90
Const VK_OEM_SCROLL = &H91
Const VK_OEM_1 = &HBA
Const VK_OEM_PLUS = &HBB
Const VK_OEM_COMMA = &HBC
Const VK_OEM_MINUS = &HBD
Const VK_OEM_PERIOD = &HBE
Const VK_OEM_2 = &HBF
Const VK_OEM_3 = &HC0
Const VK_OEM_4 = &HDB
Const VK_OEM_5 = &HDC
Const VK_OEM_6 = &HDD
Const VK_OEM_7 = &HDE
Const VK_OEM_8 = &HDF
Const VK_ICO_F17 = &HE0
Const VK_ICO_F18 = &HE1
Const VK_OEM102 = &HE2
Const VK_ICO_HELP = &HE3
Const VK_ICO_00 = &HE4
Const VK_ICO_CLEAR = &HE6
Const VK_OEM_RESET = &HE9
Const VK_OEM_JUMP = &HEA
Const VK_OEM_PA1 = &HEB
Const VK_OEM_PA2 = &HEC
Const VK_OEM_PA3 = &HED
Const VK_OEM_WSCTRL = &HEE
Const VK_OEM_CUSEL = &HEF
Const VK_OEM_ATTN = &HF0
Const VK_OEM_FINNISH = &HF1
Const VK_OEM_COPY = &HF2
Const VK_OEM_AUTO = &HF3
Const VK_OEM_ENLW = &HF4
Const VK_OEM_BACKTAB = &HF5
Const VK_ATTN = &HF6
Const VK_CRSEL = &HF7
Const VK_EXSEL = &HF8
Const VK_EREOF = &HF9
Const VK_PLAY = &HFA
Const VK_ZOOM = &HFB
Const VK_NONAME = &HFC
Const VK_PA1 = &HFD
Const VK_OEM_CLEAR = &HFE

Used By

GetAsyncKeyState, GetKeyboardState, GetKeyState, keybd_event, KEYBDINPUT, SetKeyboardState

Back to the index.


Last Modified: September 6, 1999
This page is copyright © 1999 Paul Kuliniewicz. Copyright Information

Go to Paul Kuliniewicz's Home Page.
E-mail: rogue953@hotmail.com
This page is at http://skyscraper.fortunecity.com/transmission/45/api/other/virtualkeycodes.html