Virtual Key Codes
These are cross-platform defines for every distinct keyboard press on the computer. Every physical key on the keyboard has a virtual key code. So the "two" key on the top row of the main keyboard has a different code from the "two" key on the numeric key pad. But the 'w' and 'W' character are indistinguishable by virtual key code because they are the same physical key (one with and one without the shift key).
Use virtual key codes to detect keystrokes that do not have ASCII equivalents, allow the user to map the numeric keypad separately from the main keyboard, and detect control key and other modifier-key combinations that generate ASCII control key sequences (many of which are not available directly via character keys in the SDK).
To assign virtual key codes we started with the Microsoft set but made some additions and changes. A few differences:
- Modifier keys are not available as virtual key codes. You cannot get distinct modifier press and release messages. Please do not try to use modifier keys as regular keys; doing so will almost certainly interfere with users' abilities to use the native X-Plane key bindings.
- Some keys that do not exist on both Mac and PC keyboards are removed.
- Do not assume that the values of these keystrokes are interchangeable with MS v-keys.
XPLM_VK_BACK
define
#define XPLM_VK_BACK 0x08
XPLM_VK_TAB
define
#define XPLM_VK_TAB 0x09
XPLM_VK_CLEAR
define
#define XPLM_VK_CLEAR 0x0C
XPLM_VK_RETURN
define
#define XPLM_VK_RETURN 0x0D
XPLM_VK_ESCAPE
define
#define XPLM_VK_ESCAPE 0x1B
XPLM_VK_SPACE
define
#define XPLM_VK_SPACE 0x20
XPLM_VK_PRIOR
define
#define XPLM_VK_PRIOR 0x21
XPLM_VK_NEXT
define
#define XPLM_VK_NEXT 0x22
XPLM_VK_END
define
#define XPLM_VK_END 0x23
XPLM_VK_HOME
define
#define XPLM_VK_HOME 0x24
XPLM_VK_LEFT
define
#define XPLM_VK_LEFT 0x25
XPLM_VK_UP
define
#define XPLM_VK_UP 0x26
XPLM_VK_RIGHT
define
#define XPLM_VK_RIGHT 0x27
XPLM_VK_DOWN
define
#define XPLM_VK_DOWN 0x28
XPLM_VK_SELECT
define
#define XPLM_VK_SELECT 0x29
XPLM_VK_PRINT
define
#define XPLM_VK_PRINT 0x2A
XPLM_VK_EXECUTE
define
#define XPLM_VK_EXECUTE 0x2B
XPLM_VK_SNAPSHOT
define
#define XPLM_VK_SNAPSHOT 0x2C
XPLM_VK_INSERT
define
#define XPLM_VK_INSERT 0x2D
XPLM_VK_DELETE
define
#define XPLM_VK_DELETE 0x2E
XPLM_VK_HELP
define
#define XPLM_VK_HELP 0x2F
XPLM_VK_0
define
XPLM_VK_0 thru XPLM_VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39)
#define XPLM_VK_0 0x30
XPLM_VK_1
define
#define XPLM_VK_1 0x31
XPLM_VK_2
define
#define XPLM_VK_2 0x32
XPLM_VK_3
define
#define XPLM_VK_3 0x33
XPLM_VK_4
define
#define XPLM_VK_4 0x34
XPLM_VK_5
define
#define XPLM_VK_5 0x35
XPLM_VK_6
define
#define XPLM_VK_6 0x36
XPLM_VK_7
define
#define XPLM_VK_7 0x37
XPLM_VK_8
define
#define XPLM_VK_8 0x38
XPLM_VK_9
define
#define XPLM_VK_9 0x39
XPLM_VK_A
define
XPLM_VK_A thru XPLM_VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A)
#define XPLM_VK_A 0x41
XPLM_VK_B
define
#define XPLM_VK_B 0x42
XPLM_VK_C
define
#define XPLM_VK_C 0x43
XPLM_VK_D
define
#define XPLM_VK_D 0x44
XPLM_VK_E
define
#define XPLM_VK_E 0x45
XPLM_VK_F
define
#define XPLM_VK_F 0x46
XPLM_VK_G
define
#define XPLM_VK_G 0x47
XPLM_VK_H
define
#define XPLM_VK_H 0x48
XPLM_VK_I
define
#define XPLM_VK_I 0x49
XPLM_VK_J
define
#define XPLM_VK_J 0x4A
XPLM_VK_K
define
#define XPLM_VK_K 0x4B
XPLM_VK_L
define
#define XPLM_VK_L 0x4C
XPLM_VK_M
define
#define XPLM_VK_M 0x4D
XPLM_VK_N
define
#define XPLM_VK_N 0x4E
XPLM_VK_O
define
#define XPLM_VK_O 0x4F
XPLM_VK_P
define
#define XPLM_VK_P 0x50
XPLM_VK_Q
define
#define XPLM_VK_Q 0x51
XPLM_VK_R
define
#define XPLM_VK_R 0x52
XPLM_VK_S
define
#define XPLM_VK_S 0x53
XPLM_VK_T
define
#define XPLM_VK_T 0x54
XPLM_VK_U
define
#define XPLM_VK_U 0x55
XPLM_VK_V
define
#define XPLM_VK_V 0x56
XPLM_VK_W
define
#define XPLM_VK_W 0x57
XPLM_VK_X
define
#define XPLM_VK_X 0x58
XPLM_VK_Y
define
#define XPLM_VK_Y 0x59
XPLM_VK_Z
define
#define XPLM_VK_Z 0x5A
XPLM_VK_NUMPAD0
define
#define XPLM_VK_NUMPAD0 0x60
XPLM_VK_NUMPAD1
define
#define XPLM_VK_NUMPAD1 0x61
XPLM_VK_NUMPAD2
define
#define XPLM_VK_NUMPAD2 0x62
XPLM_VK_NUMPAD3
define
#define XPLM_VK_NUMPAD3 0x63
XPLM_VK_NUMPAD4
define
#define XPLM_VK_NUMPAD4 0x64
XPLM_VK_NUMPAD5
define
#define XPLM_VK_NUMPAD5 0x65
XPLM_VK_NUMPAD6
define
#define XPLM_VK_NUMPAD6 0x66
XPLM_VK_NUMPAD7
define
#define XPLM_VK_NUMPAD7 0x67
XPLM_VK_NUMPAD8
define
#define XPLM_VK_NUMPAD8 0x68
XPLM_VK_NUMPAD9
define
#define XPLM_VK_NUMPAD9 0x69
XPLM_VK_MULTIPLY
define
#define XPLM_VK_MULTIPLY 0x6A
XPLM_VK_ADD
define
#define XPLM_VK_ADD 0x6B
XPLM_VK_SEPARATOR
define
#define XPLM_VK_SEPARATOR 0x6C
XPLM_VK_SUBTRACT
define
#define XPLM_VK_SUBTRACT 0x6D
XPLM_VK_DECIMAL
define
#define XPLM_VK_DECIMAL 0x6E
XPLM_VK_DIVIDE
define
#define XPLM_VK_DIVIDE 0x6F
XPLM_VK_F1
define
#define XPLM_VK_F1 0x70
XPLM_VK_F2
define
#define XPLM_VK_F2 0x71
XPLM_VK_F3
define
#define XPLM_VK_F3 0x72
XPLM_VK_F4
define
#define XPLM_VK_F4 0x73
XPLM_VK_F5
define
#define XPLM_VK_F5 0x74
XPLM_VK_F6
define
#define XPLM_VK_F6 0x75
XPLM_VK_F7
define
#define XPLM_VK_F7 0x76
XPLM_VK_F8
define
#define XPLM_VK_F8 0x77
XPLM_VK_F9
define
#define XPLM_VK_F9 0x78
XPLM_VK_F10
define
#define XPLM_VK_F10 0x79
XPLM_VK_F11
define
#define XPLM_VK_F11 0x7A
XPLM_VK_F12
define
#define XPLM_VK_F12 0x7B
XPLM_VK_F13
define
#define XPLM_VK_F13 0x7C
XPLM_VK_F14
define
#define XPLM_VK_F14 0x7D
XPLM_VK_F15
define
#define XPLM_VK_F15 0x7E
XPLM_VK_F16
define
#define XPLM_VK_F16 0x7F
XPLM_VK_F17
define
#define XPLM_VK_F17 0x80
XPLM_VK_F18
define
#define XPLM_VK_F18 0x81
XPLM_VK_F19
define
#define XPLM_VK_F19 0x82
XPLM_VK_F20
define
#define XPLM_VK_F20 0x83
XPLM_VK_F21
define
#define XPLM_VK_F21 0x84
XPLM_VK_F22
define
#define XPLM_VK_F22 0x85
XPLM_VK_F23
define
#define XPLM_VK_F23 0x86
XPLM_VK_F24
define
#define XPLM_VK_F24 0x87
XPLM_VK_EQUAL
define
The following definitions are extended and are not based on the Microsoft key set.
#define XPLM_VK_EQUAL 0xB0
XPLM_VK_MINUS
define
#define XPLM_VK_MINUS 0xB1
XPLM_VK_RBRACE
define
#define XPLM_VK_RBRACE 0xB2
XPLM_VK_LBRACE
define
#define XPLM_VK_LBRACE 0xB3
XPLM_VK_QUOTE
define
#define XPLM_VK_QUOTE 0xB4
XPLM_VK_SEMICOLON
define
#define XPLM_VK_SEMICOLON 0xB5
XPLM_VK_BACKSLASH
define
#define XPLM_VK_BACKSLASH 0xB6
XPLM_VK_COMMA
define
#define XPLM_VK_COMMA 0xB7
XPLM_VK_SLASH
define
#define XPLM_VK_SLASH 0xB8
XPLM_VK_PERIOD
define
#define XPLM_VK_PERIOD 0xB9
XPLM_VK_BACKQUOTE
define
#define XPLM_VK_BACKQUOTE 0xBA
XPLM_VK_ENTER
define
#define XPLM_VK_ENTER 0xBB
XPLM_VK_NUMPAD_ENT
define
#define XPLM_VK_NUMPAD_ENT 0xBC
XPLM_VK_NUMPAD_EQ
define
#define XPLM_VK_NUMPAD_EQ 0xBD