https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes

The following table shows the symbolic constant names, hexadecimal values, and
mouse orboard equivalents for the virtual-key codes used by the system.
The codes are listed in numeric order.

Notes:

    [1] Used for miscellaneous characters; it can vary by keyboard.
    [2] The <>s on the US standardboard, or the \\| on the non-US 102-keyboard.
    [3] Used to pass Unicode characters as if they were strokes. The VK_PACKET
        is the low word of a 32-bit Virtual Key value used for non-keyboard
        input methods. For more information, see Remark in KEYBDINPUT,
        SendInput, WM_KEYDOWN, and WM_KEYUP.

-     0xE8     Unassigned

Constant                Value     Description

VK_LBUTTON              0x01     Left mouse button
VK_RBUTTON              0x02     Right mouse button
VK_CANCEL               0x03     Control-break processing
VK_MBUTTON              0x04     Middle mouse button (three-button mouse)
VK_XBUTTON1             0x05     X1 mouse button
VK_XBUTTON2             0x06     X2 mouse button
-     0x07              Undefined
VK_BACK                 0x08     BACKSPACE
VK_TAB                  0x09     TAB
-     0x0A-0B           Reserved
VK_CLEAR                0x0C     CLEAR
VK_RETURN               0x0D     ENTER
-     0x0E-0F           Undefined
VK_SHIFT                0x10     SHIFT
VK_CONTROL              0x11     CTRL
VK_MENU                 0x12     ALT
VK_PAUSE                0x13     PAUSE
VK_CAPITAL              0x14     CAPS LOCK
VK_KANA                 0x15     IME Kana mode
VK_HANGUEL              0x15     IME Hanguel mode (compatibility; use VK_HANGUL)
VK_HANGUL               0x15     IME Hangul mode
VK_IME_ON               0x16     IME On
VK_JUNJA                0x17     IME Junja mode
VK_FINAL                0x18     IME final mode
VK_HANJA                0x19     IME Hanja mode
VK_KANJI                0x19     IME Kanji mode
VK_IME_OFF              0x1A     IME Off
VK_ESCAPE               0x1B     ESC
VK_CONVERT              0x1C     IME convert
VK_NONCONVERT           0x1D     IME nonconvert
VK_ACCEPT               0x1E     IME accept
VK_MODECHANGE           0x1F     IME mode change request
VK_SPACE                0x20     SPACEBAR
VK_PRIOR                0x21     PAGE UP
VK_NEXT                 0x22     PAGE DOWN
VK_END                  0x23     END
VK_HOME                 0x24     HOME
VK_LEFT                 0x25     LEFT ARROW
VK_UP                   0x26     UP ARROW
VK_RIGHT                0x27     RIGHT ARROW
VK_DOWN                 0x28     DOWN ARROW
VK_SELECT               0x29     SELECT
VK_PRINT                0x2A     PRINT
VK_EXECUTE              0x2B     EXECUTE
VK_SNAPSHOT             0x2C     PRINT SCREEN
VK_INSERT               0x2D     INS
VK_DELETE               0x2E     DEL
VK_HELP                 0x2F     HELP

VK_0x30                 0x30     0
VK_0x31                 0x31     1
VK_0x32                 0x32     2
VK_0x33                 0x33     3
VK_0x34                 0x34     4
VK_0x35                 0x35     5
VK_0x36                 0x36     6
VK_0x37                 0x37     7
VK_0x38                 0x38     8
VK_0x39                 0x39     9
-     0x3A-40             Undefined
VK_0x41                 0x41     A
VK_0x42                 0x42     B
VK_0x43                 0x43     C
VK_0x44                 0x44     D
VK_0x45                 0x45     E
VK_0x46                 0x46     F
VK_0x47                 0x47     G
VK_0x48                 0x48     H
VK_0x49                 0x49     I
VK_0x4A                 0x4A     J
VK_0x4B                 0x4B     K
VK_0x4C                 0x4C     L
VK_0x4D                 0x4D     M
VK_0x4E                 0x4E     N
VK_0x4F                 0x4F     O
VK_0x50                 0x50     P
VK_0x51                 0x51     Q
VK_0x52                 0x52     R
VK_0x53                 0x53     S
VK_0x54                 0x54     T
VK_0x55                 0x55     U
VK_0x56                 0x56     V
VK_0x57                 0x57     W
VK_0x58                 0x58     X
VK_0x59                 0x59     Y
VK_0x5A                 0x5A     Z
VK_LWIN                 0x5B     Left Windows
VK_RWIN                 0x5C     Right Windows
VK_APPS                 0x5D     Applications
-     0x5E     Reserved
VK_SLEEP                0x5F     Computer Sleep
VK_NUMPAD0              0x60     Numericpad 0
VK_NUMPAD1              0x61     Numericpad 1
VK_NUMPAD2              0x62     Numericpad 2
VK_NUMPAD3              0x63     Numericpad 3
VK_NUMPAD4              0x64     Numericpad 4
VK_NUMPAD5              0x65     Numericpad 5
VK_NUMPAD6              0x66     Numericpad 6
VK_NUMPAD7              0x67     Numericpad 7
VK_NUMPAD8              0x68     Numericpad 8
VK_NUMPAD9              0x69     Numericpad 9
VK_MULTIPLY             0x6A     Multiply
VK_ADD                  0x6B     Add
VK_SEPARATOR            0x6C     Separator
VK_SUBTRACT             0x6D     Subtract
VK_DECIMAL              0x6E     Decimal
VK_DIVIDE               0x6F     Divide
VK_F1                   0x70     F1
VK_F2                   0x71     F2
VK_F3                   0x72     F3
VK_F4                   0x73     F4
VK_F5                   0x74     F5
VK_F6                   0x75     F6
VK_F7                   0x76     F7
VK_F8                   0x77     F8
VK_F9                   0x78     F9
VK_F10                  0x79     F10
VK_F11                  0x7A     F11
VK_F12                  0x7B     F12
VK_F13                  0x7C     F13
VK_F14                  0x7D     F14
VK_F15                  0x7E     F15
VK_F16                  0x7F     F16
VK_F17                  0x80     F17
VK_F18                  0x81     F18
VK_F19                  0x82     F19
VK_F20                  0x83     F20
VK_F21                  0x84     F21
VK_F22                  0x85     F22
VK_F23                  0x86     F23
VK_F24                  0x87     F24
-     0x88-8F             Unassigned
VK_NUMLOCK              0x90     NUM LOCK
VK_SCROLL               0x91     SCROLL LOCK
-     0x92-96             OEM specific
-     0x97-9F             Unassigned
VK_LSHIFT               0xA0     Left SHIFT
VK_RSHIFT               0xA1     Right SHIFT
VK_LCONTROL             0xA2     Left CONTROL
VK_RCONTROL             0xA3     Right CONTROL
VK_LMENU                0xA4     Left ALT
VK_RMENU                0xA5     Right ALT
VK_BROWSER_BACK         0xA6     Browser Back
VK_BROWSER_FORWARD      0xA7     Browser Forward
VK_BROWSER_REFRESH      0xA8     Browser Refresh
VK_BROWSER_STOP         0xA9     Browser Stop
VK_BROWSER_SEARCH       0xAA     Browser Search
VK_BROWSER_FAVORITES    0xAB     Browser Favorites
VK_BROWSER_HOME         0xAC     Browser Start and Home
VK_VOLUME_MUTE          0xAD     Volume Mute
VK_VOLUME_DOWN          0xAE     Volume Down
VK_VOLUME_UP            0xAF     Volume Up
VK_MEDIA_NEXT_TRACK     0xB0     Next Track
VK_MEDIA_PREV_TRACK     0xB1     Previous Track
VK_MEDIA_STOP           0xB2     Stop Media
VK_MEDIA_PLAY_PAUSE     0xB3     Play/Pause Media
VK_LAUNCH_MAIL          0xB4     Start Mail
VK_LAUNCH_MEDIA_SELECT  0xB5     Select Media
VK_LAUNCH_APP1          0xB6     Start Application 1
VK_LAUNCH_APP2          0xB7     Start Application 2
-     0xB8-B9     Reserved

VK_OEM_1                0xBA     [1] US standardboard ';:'
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     [1] US standardboard '/?'
VK_OEM_3                0xC0     [1] US standardboard '`~'
-     0xC1-D7     Reserved
-     0xD8-DA     Unassigned
VK_OEM_4                0xDB     [1] US standardboard '[{'
VK_OEM_5                0xDC     [1] US standardboard '\|'
VK_OEM_6                0xDD     [1] US standardboard ']}'
VK_OEM_7                0xDE     [1] US standardboard 'single-/double-quote'
VK_OEM_8                0xDF     [1] None
-     0xE0     Reserved
VK_OEM_101              0xE1     OEM specific
VK_OEM_102              0xE2     [2]
-   0xE3-E4     OEM specific
VK_PROCESSKEY           0xE5     IME PROCESS
-   0xE6     OEM specific
VK_PACKET               0xE7     [3]
-     0xE8     Unassigned
0   0xE9-F5     OEM specific
VK_ATTN                 0xF6     Attn
VK_CRSEL                0xF7     CrSel
VK_EXSEL                0xF8     ExSel
VK_EREOF                0xF9     Erase EOF
VK_PLAY                 0xFA     Play
VK_ZOOM                 0xFB     Zoom
VK_NONAME               0xFC     Reserved
VK_PA1                  0xFD     PA1
VK_OEM_CLEAR            0xFE     Clear

