Keyboard code values

Top  Previous  Next

The Windows 'virtual-key' (VK) codes are reproduced here (from WINUSER.H). They are given in hexadecimal (in which the letters A–F represent the numbers 10–15); so, for example, the left arrow key (?) generates the code VK_LEFT, which is 0x25 (hexadecimal 25), or (2 × 16) + (5 × 1) = 37 decimal. If you enabled key-down events and the left arrow key was pressed whilst a document named fish had the focus, Whisker would send the message

 

       KeyEvent: 37 1 fish

 

(Some of the virtual keys may not be available on your keyboard, and a few are processed specially by Windows, so check that an esoteric key functions properly before relying on it.)

 

We're missing a load of virtual keys… VK_PAGE_UP is not part of the C++ documentation, for example – odd (is in complete set, though). Similarly, VK_BACK_SPACE… etc.

 

/*

* Virtual Keys, Standard Set

*/

#define VK_LBUTTON        0x01

#define VK_RBUTTON        0x02

#define VK_CANCEL         0x03

#define VK_MBUTTON        0x04   /* NOT contiguous with L & RBUTTON */

#define VK_BACK           0x08

#define VK_TAB            0x09

#define VK_CLEAR          0x0C

#define VK_RETURN         0x0D

#define VK_SHIFT          0x10

#define VK_CONTROL        0x11

#define VK_MENU           0x12

#define VK_PAUSE          0x13

#define VK_CAPITAL        0x14

#define VK_KANA           0x15

#define VK_HANGEUL        0x15  /* old name - should be here for compatibility */

#define VK_HANGUL         0x15

#define VK_JUNJA          0x17

#define VK_FINAL          0x18

#define VK_HANJA          0x19

#define VK_KANJI          0x19

#define VK_ESCAPE         0x1B

#define VK_CONVERT        0x1C

#define VK_NONCONVERT     0x1D

#define VK_ACCEPT         0x1E

#define VK_MODECHANGE     0x1F

#define VK_SPACE          0x20

#define VK_PRIOR          0x21

#define VK_NEXT           0x22

#define VK_END            0x23

#define VK_HOME           0x24

#define VK_LEFT           0x25

#define VK_UP             0x26

#define VK_RIGHT          0x27

#define VK_DOWN           0x28

#define VK_SELECT         0x29

#define VK_PRINT          0x2A

#define VK_EXECUTE        0x2B

#define VK_SNAPSHOT       0x2C

#define VK_INSERT         0x2D

#define VK_DELETE         0x2E

#define VK_HELP           0x2F

 

/* VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */

/* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */

 

#define VK_LWIN           0x5B

#define VK_RWIN           0x5C

#define VK_APPS           0x5D

#define VK_NUMPAD0        0x60

#define VK_NUMPAD1        0x61

#define VK_NUMPAD2        0x62

#define VK_NUMPAD3        0x63

#define VK_NUMPAD4        0x64

#define VK_NUMPAD5        0x65

#define VK_NUMPAD6        0x66

#define VK_NUMPAD7        0x67

#define VK_NUMPAD8        0x68

#define VK_NUMPAD9        0x69

#define VK_MULTIPLY       0x6A

#define VK_ADD            0x6B

#define VK_SEPARATOR      0x6C

#define VK_SUBTRACT       0x6D

#define VK_DECIMAL        0x6E

#define VK_DIVIDE         0x6F

#define VK_F1             0x70

#define VK_F2             0x71

#define VK_F3             0x72

#define VK_F4             0x73

#define VK_F5             0x74

#define VK_F6             0x75

#define VK_F7             0x76

#define VK_F8             0x77

#define VK_F9             0x78

#define VK_F10            0x79

#define VK_F11            0x7A

#define VK_F12            0x7B

#define VK_F13            0x7C

#define VK_F14            0x7D

#define VK_F15            0x7E

#define VK_F16            0x7F

#define VK_F17            0x80

#define VK_F18            0x81

#define VK_F19            0x82

#define VK_F20            0x83

#define VK_F21            0x84

#define VK_F22            0x85

#define VK_F23            0x86

#define VK_F24            0x87

#define VK_NUMLOCK        0x90

#define VK_SCROLL         0x91

 

See also

 

DisplayKeyboardEvents
KeyEvent
Display devices