XLua2 API Ref XPLMDefs Latest - 4.4.0-d4

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:

  1. 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.
  2. Some keys that do not exist on both Mac and PC keyboards are removed.
  3. 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_BACK  -- 0x08

XPLM_VK_TAB

define

#define XPLM_VK_TAB 0x09

XPLM_VK_TAB  -- 0x09

XPLM_VK_CLEAR

define

#define XPLM_VK_CLEAR 0x0C

XPLM_VK_CLEAR  -- 0x0C

XPLM_VK_RETURN

define

#define XPLM_VK_RETURN 0x0D

XPLM_VK_RETURN  -- 0x0D

XPLM_VK_ESCAPE

define

#define XPLM_VK_ESCAPE 0x1B

XPLM_VK_ESCAPE  -- 0x1B

XPLM_VK_SPACE

define

#define XPLM_VK_SPACE 0x20

XPLM_VK_SPACE  -- 0x20

XPLM_VK_PRIOR

define

#define XPLM_VK_PRIOR 0x21

XPLM_VK_PRIOR  -- 0x21

XPLM_VK_NEXT

define

#define XPLM_VK_NEXT 0x22

XPLM_VK_NEXT  -- 0x22

XPLM_VK_END

define

#define XPLM_VK_END 0x23

XPLM_VK_END  -- 0x23

XPLM_VK_HOME

define

#define XPLM_VK_HOME 0x24

XPLM_VK_HOME  -- 0x24

XPLM_VK_LEFT

define

#define XPLM_VK_LEFT 0x25

XPLM_VK_LEFT  -- 0x25

XPLM_VK_UP

define

#define XPLM_VK_UP 0x26

XPLM_VK_UP  -- 0x26

XPLM_VK_RIGHT

define

#define XPLM_VK_RIGHT 0x27

XPLM_VK_RIGHT  -- 0x27

XPLM_VK_DOWN

define

#define XPLM_VK_DOWN 0x28

XPLM_VK_DOWN  -- 0x28

XPLM_VK_SELECT

define

#define XPLM_VK_SELECT 0x29

XPLM_VK_SELECT  -- 0x29

XPLM_VK_PRINT

define

#define XPLM_VK_PRINT 0x2A

XPLM_VK_PRINT  -- 0x2A

XPLM_VK_EXECUTE

define

#define XPLM_VK_EXECUTE 0x2B

XPLM_VK_EXECUTE  -- 0x2B

XPLM_VK_SNAPSHOT

define

#define XPLM_VK_SNAPSHOT 0x2C

XPLM_VK_SNAPSHOT  -- 0x2C

XPLM_VK_INSERT

define

#define XPLM_VK_INSERT 0x2D

XPLM_VK_INSERT  -- 0x2D

XPLM_VK_DELETE

define

#define XPLM_VK_DELETE 0x2E

XPLM_VK_DELETE  -- 0x2E

XPLM_VK_HELP

define

#define XPLM_VK_HELP 0x2F

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_0  -- 0x30

XPLM_VK_1

define

#define XPLM_VK_1 0x31

XPLM_VK_1  -- 0x31

XPLM_VK_2

define

#define XPLM_VK_2 0x32

XPLM_VK_2  -- 0x32

XPLM_VK_3

define

#define XPLM_VK_3 0x33

XPLM_VK_3  -- 0x33

XPLM_VK_4

define

#define XPLM_VK_4 0x34

XPLM_VK_4  -- 0x34

XPLM_VK_5

define

#define XPLM_VK_5 0x35

XPLM_VK_5  -- 0x35

XPLM_VK_6

define

#define XPLM_VK_6 0x36

XPLM_VK_6  -- 0x36

XPLM_VK_7

define

#define XPLM_VK_7 0x37

XPLM_VK_7  -- 0x37

XPLM_VK_8

define

#define XPLM_VK_8 0x38

XPLM_VK_8  -- 0x38

XPLM_VK_9

define

#define XPLM_VK_9 0x39

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_A  -- 0x41

XPLM_VK_B

define

#define XPLM_VK_B 0x42

XPLM_VK_B  -- 0x42

XPLM_VK_C

define

#define XPLM_VK_C 0x43

XPLM_VK_C  -- 0x43

XPLM_VK_D

define

#define XPLM_VK_D 0x44

XPLM_VK_D  -- 0x44

XPLM_VK_E

define

#define XPLM_VK_E 0x45

XPLM_VK_E  -- 0x45

XPLM_VK_F

define

#define XPLM_VK_F 0x46

XPLM_VK_F  -- 0x46

XPLM_VK_G

define

#define XPLM_VK_G 0x47

XPLM_VK_G  -- 0x47

XPLM_VK_H

define

#define XPLM_VK_H 0x48

XPLM_VK_H  -- 0x48

XPLM_VK_I

define

#define XPLM_VK_I 0x49

XPLM_VK_I  -- 0x49

XPLM_VK_J

define

#define XPLM_VK_J 0x4A

XPLM_VK_J  -- 0x4A

XPLM_VK_K

define

#define XPLM_VK_K 0x4B

XPLM_VK_K  -- 0x4B

XPLM_VK_L

define

#define XPLM_VK_L 0x4C

XPLM_VK_L  -- 0x4C

XPLM_VK_M

define

#define XPLM_VK_M 0x4D

XPLM_VK_M  -- 0x4D

XPLM_VK_N

define

#define XPLM_VK_N 0x4E

XPLM_VK_N  -- 0x4E

XPLM_VK_O

define

#define XPLM_VK_O 0x4F

XPLM_VK_O  -- 0x4F

XPLM_VK_P

define

#define XPLM_VK_P 0x50

XPLM_VK_P  -- 0x50

XPLM_VK_Q

define

#define XPLM_VK_Q 0x51

XPLM_VK_Q  -- 0x51

XPLM_VK_R

define

#define XPLM_VK_R 0x52

XPLM_VK_R  -- 0x52

XPLM_VK_S

define

#define XPLM_VK_S 0x53

XPLM_VK_S  -- 0x53

XPLM_VK_T

define

#define XPLM_VK_T 0x54

XPLM_VK_T  -- 0x54

XPLM_VK_U

define

#define XPLM_VK_U 0x55

XPLM_VK_U  -- 0x55

XPLM_VK_V

define

#define XPLM_VK_V 0x56

XPLM_VK_V  -- 0x56

XPLM_VK_W

define

#define XPLM_VK_W 0x57

XPLM_VK_W  -- 0x57

XPLM_VK_X

define

#define XPLM_VK_X 0x58

XPLM_VK_X  -- 0x58

XPLM_VK_Y

define

#define XPLM_VK_Y 0x59

XPLM_VK_Y  -- 0x59

XPLM_VK_Z

define

#define XPLM_VK_Z 0x5A

XPLM_VK_Z  -- 0x5A

XPLM_VK_NUMPAD0

define

#define XPLM_VK_NUMPAD0 0x60

XPLM_VK_NUMPAD0  -- 0x60

XPLM_VK_NUMPAD1

define

#define XPLM_VK_NUMPAD1 0x61

XPLM_VK_NUMPAD1  -- 0x61

XPLM_VK_NUMPAD2

define

#define XPLM_VK_NUMPAD2 0x62

XPLM_VK_NUMPAD2  -- 0x62

XPLM_VK_NUMPAD3

define

#define XPLM_VK_NUMPAD3 0x63

XPLM_VK_NUMPAD3  -- 0x63

XPLM_VK_NUMPAD4

define

#define XPLM_VK_NUMPAD4 0x64

XPLM_VK_NUMPAD4  -- 0x64

XPLM_VK_NUMPAD5

define

#define XPLM_VK_NUMPAD5 0x65

XPLM_VK_NUMPAD5  -- 0x65

XPLM_VK_NUMPAD6

define

#define XPLM_VK_NUMPAD6 0x66

XPLM_VK_NUMPAD6  -- 0x66

XPLM_VK_NUMPAD7

define

#define XPLM_VK_NUMPAD7 0x67

XPLM_VK_NUMPAD7  -- 0x67

XPLM_VK_NUMPAD8

define

#define XPLM_VK_NUMPAD8 0x68

XPLM_VK_NUMPAD8  -- 0x68

XPLM_VK_NUMPAD9

define

#define XPLM_VK_NUMPAD9 0x69

XPLM_VK_NUMPAD9  -- 0x69

XPLM_VK_MULTIPLY

define

#define XPLM_VK_MULTIPLY 0x6A

XPLM_VK_MULTIPLY  -- 0x6A

XPLM_VK_ADD

define

#define XPLM_VK_ADD 0x6B

XPLM_VK_ADD  -- 0x6B

XPLM_VK_SEPARATOR

define

#define XPLM_VK_SEPARATOR 0x6C

XPLM_VK_SEPARATOR  -- 0x6C

XPLM_VK_SUBTRACT

define

#define XPLM_VK_SUBTRACT 0x6D

XPLM_VK_SUBTRACT  -- 0x6D

XPLM_VK_DECIMAL

define

#define XPLM_VK_DECIMAL 0x6E

XPLM_VK_DECIMAL  -- 0x6E

XPLM_VK_DIVIDE

define

#define XPLM_VK_DIVIDE 0x6F

XPLM_VK_DIVIDE  -- 0x6F

XPLM_VK_F1

define

#define XPLM_VK_F1 0x70

XPLM_VK_F1  -- 0x70

XPLM_VK_F2

define

#define XPLM_VK_F2 0x71

XPLM_VK_F2  -- 0x71

XPLM_VK_F3

define

#define XPLM_VK_F3 0x72

XPLM_VK_F3  -- 0x72

XPLM_VK_F4

define

#define XPLM_VK_F4 0x73

XPLM_VK_F4  -- 0x73

XPLM_VK_F5

define

#define XPLM_VK_F5 0x74

XPLM_VK_F5  -- 0x74

XPLM_VK_F6

define

#define XPLM_VK_F6 0x75

XPLM_VK_F6  -- 0x75

XPLM_VK_F7

define

#define XPLM_VK_F7 0x76

XPLM_VK_F7  -- 0x76

XPLM_VK_F8

define

#define XPLM_VK_F8 0x77

XPLM_VK_F8  -- 0x77

XPLM_VK_F9

define

#define XPLM_VK_F9 0x78

XPLM_VK_F9  -- 0x78

XPLM_VK_F10

define

#define XPLM_VK_F10 0x79

XPLM_VK_F10  -- 0x79

XPLM_VK_F11

define

#define XPLM_VK_F11 0x7A

XPLM_VK_F11  -- 0x7A

XPLM_VK_F12

define

#define XPLM_VK_F12 0x7B

XPLM_VK_F12  -- 0x7B

XPLM_VK_F13

define

#define XPLM_VK_F13 0x7C

XPLM_VK_F13  -- 0x7C

XPLM_VK_F14

define

#define XPLM_VK_F14 0x7D

XPLM_VK_F14  -- 0x7D

XPLM_VK_F15

define

#define XPLM_VK_F15 0x7E

XPLM_VK_F15  -- 0x7E

XPLM_VK_F16

define

#define XPLM_VK_F16 0x7F

XPLM_VK_F16  -- 0x7F

XPLM_VK_F17

define

#define XPLM_VK_F17 0x80

XPLM_VK_F17  -- 0x80

XPLM_VK_F18

define

#define XPLM_VK_F18 0x81

XPLM_VK_F18  -- 0x81

XPLM_VK_F19

define

#define XPLM_VK_F19 0x82

XPLM_VK_F19  -- 0x82

XPLM_VK_F20

define

#define XPLM_VK_F20 0x83

XPLM_VK_F20  -- 0x83

XPLM_VK_F21

define

#define XPLM_VK_F21 0x84

XPLM_VK_F21  -- 0x84

XPLM_VK_F22

define

#define XPLM_VK_F22 0x85

XPLM_VK_F22  -- 0x85

XPLM_VK_F23

define

#define XPLM_VK_F23 0x86

XPLM_VK_F23  -- 0x86

XPLM_VK_F24

define

#define XPLM_VK_F24 0x87

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_EQUAL  -- 0xB0

XPLM_VK_MINUS

define

#define XPLM_VK_MINUS 0xB1

XPLM_VK_MINUS  -- 0xB1

XPLM_VK_RBRACE

define

#define XPLM_VK_RBRACE 0xB2

XPLM_VK_RBRACE  -- 0xB2

XPLM_VK_LBRACE

define

#define XPLM_VK_LBRACE 0xB3

XPLM_VK_LBRACE  -- 0xB3

XPLM_VK_QUOTE

define

#define XPLM_VK_QUOTE 0xB4

XPLM_VK_QUOTE  -- 0xB4

XPLM_VK_SEMICOLON

define

#define XPLM_VK_SEMICOLON 0xB5

XPLM_VK_SEMICOLON  -- 0xB5

XPLM_VK_BACKSLASH

define

#define XPLM_VK_BACKSLASH 0xB6

XPLM_VK_BACKSLASH  -- 0xB6

XPLM_VK_COMMA

define

#define XPLM_VK_COMMA 0xB7

XPLM_VK_COMMA  -- 0xB7

XPLM_VK_SLASH

define

#define XPLM_VK_SLASH 0xB8

XPLM_VK_SLASH  -- 0xB8

XPLM_VK_PERIOD

define

#define XPLM_VK_PERIOD 0xB9

XPLM_VK_PERIOD  -- 0xB9

XPLM_VK_BACKQUOTE

define

#define XPLM_VK_BACKQUOTE 0xBA

XPLM_VK_BACKQUOTE  -- 0xBA

XPLM_VK_ENTER

define

#define XPLM_VK_ENTER 0xBB

XPLM_VK_ENTER  -- 0xBB

XPLM_VK_NUMPAD_ENT

define

#define XPLM_VK_NUMPAD_ENT 0xBC

XPLM_VK_NUMPAD_ENT  -- 0xBC

XPLM_VK_NUMPAD_EQ

define

#define XPLM_VK_NUMPAD_EQ 0xBD

XPLM_VK_NUMPAD_EQ  -- 0xBD