SDL 3.0
SDL_scancode.h File Reference
#include <SDL3/SDL_stdinc.h>
+ Include dependency graph for SDL_scancode.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Enumerations

enum  SDL_Scancode {
  SDL_SCANCODE_UNKNOWN = 0 ,
  SDL_SCANCODE_A = 4 ,
  SDL_SCANCODE_B = 5 ,
  SDL_SCANCODE_C = 6 ,
  SDL_SCANCODE_D = 7 ,
  SDL_SCANCODE_E = 8 ,
  SDL_SCANCODE_F = 9 ,
  SDL_SCANCODE_G = 10 ,
  SDL_SCANCODE_H = 11 ,
  SDL_SCANCODE_I = 12 ,
  SDL_SCANCODE_J = 13 ,
  SDL_SCANCODE_K = 14 ,
  SDL_SCANCODE_L = 15 ,
  SDL_SCANCODE_M = 16 ,
  SDL_SCANCODE_N = 17 ,
  SDL_SCANCODE_O = 18 ,
  SDL_SCANCODE_P = 19 ,
  SDL_SCANCODE_Q = 20 ,
  SDL_SCANCODE_R = 21 ,
  SDL_SCANCODE_S = 22 ,
  SDL_SCANCODE_T = 23 ,
  SDL_SCANCODE_U = 24 ,
  SDL_SCANCODE_V = 25 ,
  SDL_SCANCODE_W = 26 ,
  SDL_SCANCODE_X = 27 ,
  SDL_SCANCODE_Y = 28 ,
  SDL_SCANCODE_Z = 29 ,
  SDL_SCANCODE_1 = 30 ,
  SDL_SCANCODE_2 = 31 ,
  SDL_SCANCODE_3 = 32 ,
  SDL_SCANCODE_4 = 33 ,
  SDL_SCANCODE_5 = 34 ,
  SDL_SCANCODE_6 = 35 ,
  SDL_SCANCODE_7 = 36 ,
  SDL_SCANCODE_8 = 37 ,
  SDL_SCANCODE_9 = 38 ,
  SDL_SCANCODE_0 = 39 ,
  SDL_SCANCODE_RETURN = 40 ,
  SDL_SCANCODE_ESCAPE = 41 ,
  SDL_SCANCODE_BACKSPACE = 42 ,
  SDL_SCANCODE_TAB = 43 ,
  SDL_SCANCODE_SPACE = 44 ,
  SDL_SCANCODE_MINUS = 45 ,
  SDL_SCANCODE_EQUALS = 46 ,
  SDL_SCANCODE_LEFTBRACKET = 47 ,
  SDL_SCANCODE_RIGHTBRACKET = 48 ,
  SDL_SCANCODE_BACKSLASH = 49 ,
  SDL_SCANCODE_NONUSHASH = 50 ,
  SDL_SCANCODE_SEMICOLON = 51 ,
  SDL_SCANCODE_APOSTROPHE = 52 ,
  SDL_SCANCODE_GRAVE = 53 ,
  SDL_SCANCODE_COMMA = 54 ,
  SDL_SCANCODE_PERIOD = 55 ,
  SDL_SCANCODE_SLASH = 56 ,
  SDL_SCANCODE_CAPSLOCK = 57 ,
  SDL_SCANCODE_F1 = 58 ,
  SDL_SCANCODE_F2 = 59 ,
  SDL_SCANCODE_F3 = 60 ,
  SDL_SCANCODE_F4 = 61 ,
  SDL_SCANCODE_F5 = 62 ,
  SDL_SCANCODE_F6 = 63 ,
  SDL_SCANCODE_F7 = 64 ,
  SDL_SCANCODE_F8 = 65 ,
  SDL_SCANCODE_F9 = 66 ,
  SDL_SCANCODE_F10 = 67 ,
  SDL_SCANCODE_F11 = 68 ,
  SDL_SCANCODE_F12 = 69 ,
  SDL_SCANCODE_PRINTSCREEN = 70 ,
  SDL_SCANCODE_SCROLLLOCK = 71 ,
  SDL_SCANCODE_PAUSE = 72 ,
  SDL_SCANCODE_INSERT = 73 ,
  SDL_SCANCODE_HOME = 74 ,
  SDL_SCANCODE_PAGEUP = 75 ,
  SDL_SCANCODE_DELETE = 76 ,
  SDL_SCANCODE_END = 77 ,
  SDL_SCANCODE_PAGEDOWN = 78 ,
  SDL_SCANCODE_RIGHT = 79 ,
  SDL_SCANCODE_LEFT = 80 ,
  SDL_SCANCODE_DOWN = 81 ,
  SDL_SCANCODE_UP = 82 ,
  SDL_SCANCODE_NUMLOCKCLEAR = 83 ,
  SDL_SCANCODE_KP_DIVIDE = 84 ,
  SDL_SCANCODE_KP_MULTIPLY = 85 ,
  SDL_SCANCODE_KP_MINUS = 86 ,
  SDL_SCANCODE_KP_PLUS = 87 ,
  SDL_SCANCODE_KP_ENTER = 88 ,
  SDL_SCANCODE_KP_1 = 89 ,
  SDL_SCANCODE_KP_2 = 90 ,
  SDL_SCANCODE_KP_3 = 91 ,
  SDL_SCANCODE_KP_4 = 92 ,
  SDL_SCANCODE_KP_5 = 93 ,
  SDL_SCANCODE_KP_6 = 94 ,
  SDL_SCANCODE_KP_7 = 95 ,
  SDL_SCANCODE_KP_8 = 96 ,
  SDL_SCANCODE_KP_9 = 97 ,
  SDL_SCANCODE_KP_0 = 98 ,
  SDL_SCANCODE_KP_PERIOD = 99 ,
  SDL_SCANCODE_NONUSBACKSLASH = 100 ,
  SDL_SCANCODE_APPLICATION = 101 ,
  SDL_SCANCODE_POWER = 102 ,
  SDL_SCANCODE_KP_EQUALS = 103 ,
  SDL_SCANCODE_F13 = 104 ,
  SDL_SCANCODE_F14 = 105 ,
  SDL_SCANCODE_F15 = 106 ,
  SDL_SCANCODE_F16 = 107 ,
  SDL_SCANCODE_F17 = 108 ,
  SDL_SCANCODE_F18 = 109 ,
  SDL_SCANCODE_F19 = 110 ,
  SDL_SCANCODE_F20 = 111 ,
  SDL_SCANCODE_F21 = 112 ,
  SDL_SCANCODE_F22 = 113 ,
  SDL_SCANCODE_F23 = 114 ,
  SDL_SCANCODE_F24 = 115 ,
  SDL_SCANCODE_EXECUTE = 116 ,
  SDL_SCANCODE_HELP = 117 ,
  SDL_SCANCODE_MENU = 118 ,
  SDL_SCANCODE_SELECT = 119 ,
  SDL_SCANCODE_STOP = 120 ,
  SDL_SCANCODE_AGAIN = 121 ,
  SDL_SCANCODE_UNDO = 122 ,
  SDL_SCANCODE_CUT = 123 ,
  SDL_SCANCODE_COPY = 124 ,
  SDL_SCANCODE_PASTE = 125 ,
  SDL_SCANCODE_FIND = 126 ,
  SDL_SCANCODE_MUTE = 127 ,
  SDL_SCANCODE_VOLUMEUP = 128 ,
  SDL_SCANCODE_VOLUMEDOWN = 129 ,
  SDL_SCANCODE_KP_COMMA = 133 ,
  SDL_SCANCODE_KP_EQUALSAS400 = 134 ,
  SDL_SCANCODE_INTERNATIONAL1 = 135 ,
  SDL_SCANCODE_INTERNATIONAL2 = 136 ,
  SDL_SCANCODE_INTERNATIONAL3 = 137 ,
  SDL_SCANCODE_INTERNATIONAL4 = 138 ,
  SDL_SCANCODE_INTERNATIONAL5 = 139 ,
  SDL_SCANCODE_INTERNATIONAL6 = 140 ,
  SDL_SCANCODE_INTERNATIONAL7 = 141 ,
  SDL_SCANCODE_INTERNATIONAL8 = 142 ,
  SDL_SCANCODE_INTERNATIONAL9 = 143 ,
  SDL_SCANCODE_LANG1 = 144 ,
  SDL_SCANCODE_LANG2 = 145 ,
  SDL_SCANCODE_LANG3 = 146 ,
  SDL_SCANCODE_LANG4 = 147 ,
  SDL_SCANCODE_LANG5 = 148 ,
  SDL_SCANCODE_LANG6 = 149 ,
  SDL_SCANCODE_LANG7 = 150 ,
  SDL_SCANCODE_LANG8 = 151 ,
  SDL_SCANCODE_LANG9 = 152 ,
  SDL_SCANCODE_ALTERASE = 153 ,
  SDL_SCANCODE_SYSREQ = 154 ,
  SDL_SCANCODE_CANCEL = 155 ,
  SDL_SCANCODE_CLEAR = 156 ,
  SDL_SCANCODE_PRIOR = 157 ,
  SDL_SCANCODE_RETURN2 = 158 ,
  SDL_SCANCODE_SEPARATOR = 159 ,
  SDL_SCANCODE_OUT = 160 ,
  SDL_SCANCODE_OPER = 161 ,
  SDL_SCANCODE_CLEARAGAIN = 162 ,
  SDL_SCANCODE_CRSEL = 163 ,
  SDL_SCANCODE_EXSEL = 164 ,
  SDL_SCANCODE_KP_00 = 176 ,
  SDL_SCANCODE_KP_000 = 177 ,
  SDL_SCANCODE_THOUSANDSSEPARATOR = 178 ,
  SDL_SCANCODE_DECIMALSEPARATOR = 179 ,
  SDL_SCANCODE_CURRENCYUNIT = 180 ,
  SDL_SCANCODE_CURRENCYSUBUNIT = 181 ,
  SDL_SCANCODE_KP_LEFTPAREN = 182 ,
  SDL_SCANCODE_KP_RIGHTPAREN = 183 ,
  SDL_SCANCODE_KP_LEFTBRACE = 184 ,
  SDL_SCANCODE_KP_RIGHTBRACE = 185 ,
  SDL_SCANCODE_KP_TAB = 186 ,
  SDL_SCANCODE_KP_BACKSPACE = 187 ,
  SDL_SCANCODE_KP_A = 188 ,
  SDL_SCANCODE_KP_B = 189 ,
  SDL_SCANCODE_KP_C = 190 ,
  SDL_SCANCODE_KP_D = 191 ,
  SDL_SCANCODE_KP_E = 192 ,
  SDL_SCANCODE_KP_F = 193 ,
  SDL_SCANCODE_KP_XOR = 194 ,
  SDL_SCANCODE_KP_POWER = 195 ,
  SDL_SCANCODE_KP_PERCENT = 196 ,
  SDL_SCANCODE_KP_LESS = 197 ,
  SDL_SCANCODE_KP_GREATER = 198 ,
  SDL_SCANCODE_KP_AMPERSAND = 199 ,
  SDL_SCANCODE_KP_DBLAMPERSAND = 200 ,
  SDL_SCANCODE_KP_VERTICALBAR = 201 ,
  SDL_SCANCODE_KP_DBLVERTICALBAR = 202 ,
  SDL_SCANCODE_KP_COLON = 203 ,
  SDL_SCANCODE_KP_HASH = 204 ,
  SDL_SCANCODE_KP_SPACE = 205 ,
  SDL_SCANCODE_KP_AT = 206 ,
  SDL_SCANCODE_KP_EXCLAM = 207 ,
  SDL_SCANCODE_KP_MEMSTORE = 208 ,
  SDL_SCANCODE_KP_MEMRECALL = 209 ,
  SDL_SCANCODE_KP_MEMCLEAR = 210 ,
  SDL_SCANCODE_KP_MEMADD = 211 ,
  SDL_SCANCODE_KP_MEMSUBTRACT = 212 ,
  SDL_SCANCODE_KP_MEMMULTIPLY = 213 ,
  SDL_SCANCODE_KP_MEMDIVIDE = 214 ,
  SDL_SCANCODE_KP_PLUSMINUS = 215 ,
  SDL_SCANCODE_KP_CLEAR = 216 ,
  SDL_SCANCODE_KP_CLEARENTRY = 217 ,
  SDL_SCANCODE_KP_BINARY = 218 ,
  SDL_SCANCODE_KP_OCTAL = 219 ,
  SDL_SCANCODE_KP_DECIMAL = 220 ,
  SDL_SCANCODE_KP_HEXADECIMAL = 221 ,
  SDL_SCANCODE_LCTRL = 224 ,
  SDL_SCANCODE_LSHIFT = 225 ,
  SDL_SCANCODE_LALT = 226 ,
  SDL_SCANCODE_LGUI = 227 ,
  SDL_SCANCODE_RCTRL = 228 ,
  SDL_SCANCODE_RSHIFT = 229 ,
  SDL_SCANCODE_RALT = 230 ,
  SDL_SCANCODE_RGUI = 231 ,
  SDL_SCANCODE_MODE = 257 ,
  SDL_SCANCODE_SLEEP = 258 ,
  SDL_SCANCODE_WAKE = 259 ,
  SDL_SCANCODE_CHANNEL_INCREMENT = 260 ,
  SDL_SCANCODE_CHANNEL_DECREMENT = 261 ,
  SDL_SCANCODE_MEDIA_PLAY = 262 ,
  SDL_SCANCODE_MEDIA_PAUSE = 263 ,
  SDL_SCANCODE_MEDIA_RECORD = 264 ,
  SDL_SCANCODE_MEDIA_FAST_FORWARD = 265 ,
  SDL_SCANCODE_MEDIA_REWIND = 266 ,
  SDL_SCANCODE_MEDIA_NEXT_TRACK = 267 ,
  SDL_SCANCODE_MEDIA_PREVIOUS_TRACK = 268 ,
  SDL_SCANCODE_MEDIA_STOP = 269 ,
  SDL_SCANCODE_MEDIA_EJECT = 270 ,
  SDL_SCANCODE_MEDIA_PLAY_PAUSE = 271 ,
  SDL_SCANCODE_MEDIA_SELECT = 272 ,
  SDL_SCANCODE_AC_NEW = 273 ,
  SDL_SCANCODE_AC_OPEN = 274 ,
  SDL_SCANCODE_AC_CLOSE = 275 ,
  SDL_SCANCODE_AC_EXIT = 276 ,
  SDL_SCANCODE_AC_SAVE = 277 ,
  SDL_SCANCODE_AC_PRINT = 278 ,
  SDL_SCANCODE_AC_PROPERTIES = 279 ,
  SDL_SCANCODE_AC_SEARCH = 280 ,
  SDL_SCANCODE_AC_HOME = 281 ,
  SDL_SCANCODE_AC_BACK = 282 ,
  SDL_SCANCODE_AC_FORWARD = 283 ,
  SDL_SCANCODE_AC_STOP = 284 ,
  SDL_SCANCODE_AC_REFRESH = 285 ,
  SDL_SCANCODE_AC_BOOKMARKS = 286 ,
  SDL_SCANCODE_SOFTLEFT = 287 ,
  SDL_SCANCODE_SOFTRIGHT = 288 ,
  SDL_SCANCODE_CALL = 289 ,
  SDL_SCANCODE_ENDCALL = 290 ,
  SDL_SCANCODE_RESERVED = 400 ,
  SDL_SCANCODE_COUNT = 512
}
 

Enumeration Type Documentation

◆ SDL_Scancode

CategoryScancode

Defines keyboard scancodes. The SDL keyboard scancode representation.

An SDL scancode is the physical representation of a key on the keyboard, independent of language and keyboard mapping.

Values of this type are used to represent keyboard keys, among other places in the scancode field of the SDL_KeyboardEvent structure.

The values in this enumeration are based on the USB usage page standard: https://usb.org/sites/default/files/hut1_5.pdf

Since
This enum is available since SDL 3.0.0.
Enumerator
SDL_SCANCODE_UNKNOWN 
SDL_SCANCODE_A 
SDL_SCANCODE_B 
SDL_SCANCODE_C 
SDL_SCANCODE_D 
SDL_SCANCODE_E 
SDL_SCANCODE_F 
SDL_SCANCODE_G 
SDL_SCANCODE_H 
SDL_SCANCODE_I 
SDL_SCANCODE_J 
SDL_SCANCODE_K 
SDL_SCANCODE_L 
SDL_SCANCODE_M 
SDL_SCANCODE_N 
SDL_SCANCODE_O 
SDL_SCANCODE_P 
SDL_SCANCODE_Q 
SDL_SCANCODE_R 
SDL_SCANCODE_S 
SDL_SCANCODE_T 
SDL_SCANCODE_U 
SDL_SCANCODE_V 
SDL_SCANCODE_W 
SDL_SCANCODE_X 
SDL_SCANCODE_Y 
SDL_SCANCODE_Z 
SDL_SCANCODE_1 
SDL_SCANCODE_2 
SDL_SCANCODE_3 
SDL_SCANCODE_4 
SDL_SCANCODE_5 
SDL_SCANCODE_6 
SDL_SCANCODE_7 
SDL_SCANCODE_8 
SDL_SCANCODE_9 
SDL_SCANCODE_0 
SDL_SCANCODE_RETURN 
SDL_SCANCODE_ESCAPE 
SDL_SCANCODE_BACKSPACE 
SDL_SCANCODE_TAB 
SDL_SCANCODE_SPACE 
SDL_SCANCODE_MINUS 
SDL_SCANCODE_EQUALS 
SDL_SCANCODE_LEFTBRACKET 
SDL_SCANCODE_RIGHTBRACKET 
SDL_SCANCODE_BACKSLASH 

Located at the lower left of the return key on ISO keyboards and at the right end of the QWERTY row on ANSI keyboards. Produces REVERSE SOLIDUS (backslash) and VERTICAL LINE in a US layout, REVERSE SOLIDUS and VERTICAL LINE in a UK Mac layout, NUMBER SIGN and TILDE in a UK Windows layout, DOLLAR SIGN and POUND SIGN in a Swiss German layout, NUMBER SIGN and APOSTROPHE in a German layout, GRAVE ACCENT and POUND SIGN in a French Mac layout, and ASTERISK and MICRO SIGN in a French Windows layout.

SDL_SCANCODE_NONUSHASH 

ISO USB keyboards actually use this code instead of 49 for the same key, but all OSes I've seen treat the two codes identically. So, as an implementor, unless your keyboard generates both of those codes and your OS treats them differently, you should generate SDL_SCANCODE_BACKSLASH instead of this code. As a user, you should not rely on this code because SDL will never generate it with most (all?) keyboards.

SDL_SCANCODE_SEMICOLON 
SDL_SCANCODE_APOSTROPHE 
SDL_SCANCODE_GRAVE 

Located in the top left corner (on both ANSI and ISO keyboards). Produces GRAVE ACCENT and TILDE in a US Windows layout and in US and UK Mac layouts on ANSI keyboards, GRAVE ACCENT and NOT SIGN in a UK Windows layout, SECTION SIGN and PLUS-MINUS SIGN in US and UK Mac layouts on ISO keyboards, SECTION SIGN and DEGREE SIGN in a Swiss German layout (Mac: only on ISO keyboards), CIRCUMFLEX ACCENT and DEGREE SIGN in a German layout (Mac: only on ISO keyboards), SUPERSCRIPT TWO and TILDE in a French Windows layout, COMMERCIAL AT and NUMBER SIGN in a French Mac layout on ISO keyboards, and LESS-THAN SIGN and GREATER-THAN SIGN in a Swiss German, German, or French Mac layout on ANSI keyboards.

SDL_SCANCODE_COMMA 
SDL_SCANCODE_PERIOD 
SDL_SCANCODE_SLASH 
SDL_SCANCODE_CAPSLOCK 
SDL_SCANCODE_F1 
SDL_SCANCODE_F2 
SDL_SCANCODE_F3 
SDL_SCANCODE_F4 
SDL_SCANCODE_F5 
SDL_SCANCODE_F6 
SDL_SCANCODE_F7 
SDL_SCANCODE_F8 
SDL_SCANCODE_F9 
SDL_SCANCODE_F10 
SDL_SCANCODE_F11 
SDL_SCANCODE_F12 
SDL_SCANCODE_PRINTSCREEN 
SDL_SCANCODE_SCROLLLOCK 
SDL_SCANCODE_PAUSE 
SDL_SCANCODE_INSERT 

insert on PC, help on some Mac keyboards (but does send code 73, not 117)

SDL_SCANCODE_HOME 
SDL_SCANCODE_PAGEUP 
SDL_SCANCODE_DELETE 
SDL_SCANCODE_END 
SDL_SCANCODE_PAGEDOWN 
SDL_SCANCODE_RIGHT 
SDL_SCANCODE_LEFT 
SDL_SCANCODE_DOWN 
SDL_SCANCODE_UP 
SDL_SCANCODE_NUMLOCKCLEAR 

num lock on PC, clear on Mac keyboards

SDL_SCANCODE_KP_DIVIDE 
SDL_SCANCODE_KP_MULTIPLY 
SDL_SCANCODE_KP_MINUS 
SDL_SCANCODE_KP_PLUS 
SDL_SCANCODE_KP_ENTER 
SDL_SCANCODE_KP_1 
SDL_SCANCODE_KP_2 
SDL_SCANCODE_KP_3 
SDL_SCANCODE_KP_4 
SDL_SCANCODE_KP_5 
SDL_SCANCODE_KP_6 
SDL_SCANCODE_KP_7 
SDL_SCANCODE_KP_8 
SDL_SCANCODE_KP_9 
SDL_SCANCODE_KP_0 
SDL_SCANCODE_KP_PERIOD 
SDL_SCANCODE_NONUSBACKSLASH 

This is the additional key that ISO keyboards have over ANSI ones, located between left shift and Y. Produces GRAVE ACCENT and TILDE in a US or UK Mac layout, REVERSE SOLIDUS (backslash) and VERTICAL LINE in a US or UK Windows layout, and LESS-THAN SIGN and GREATER-THAN SIGN in a Swiss German, German, or French layout.

SDL_SCANCODE_APPLICATION 

windows contextual menu, compose

SDL_SCANCODE_POWER 

The USB document says this is a status flag, not a physical key - but some Mac keyboards do have a power key.

SDL_SCANCODE_KP_EQUALS 
SDL_SCANCODE_F13 
SDL_SCANCODE_F14 
SDL_SCANCODE_F15 
SDL_SCANCODE_F16 
SDL_SCANCODE_F17 
SDL_SCANCODE_F18 
SDL_SCANCODE_F19 
SDL_SCANCODE_F20 
SDL_SCANCODE_F21 
SDL_SCANCODE_F22 
SDL_SCANCODE_F23 
SDL_SCANCODE_F24 
SDL_SCANCODE_EXECUTE 
SDL_SCANCODE_HELP 

AL Integrated Help Center

SDL_SCANCODE_MENU 

Menu (show menu)

SDL_SCANCODE_SELECT 
SDL_SCANCODE_STOP 

AC Stop

SDL_SCANCODE_AGAIN 

AC Redo/Repeat

SDL_SCANCODE_UNDO 

AC Undo

SDL_SCANCODE_CUT 

AC Cut

SDL_SCANCODE_COPY 

AC Copy

SDL_SCANCODE_PASTE 

AC Paste

SDL_SCANCODE_FIND 

AC Find

SDL_SCANCODE_MUTE 
SDL_SCANCODE_VOLUMEUP 
SDL_SCANCODE_VOLUMEDOWN 
SDL_SCANCODE_KP_COMMA 
SDL_SCANCODE_KP_EQUALSAS400 
SDL_SCANCODE_INTERNATIONAL1 

used on Asian keyboards, see footnotes in USB doc

SDL_SCANCODE_INTERNATIONAL2 
SDL_SCANCODE_INTERNATIONAL3 

Yen

SDL_SCANCODE_INTERNATIONAL4 
SDL_SCANCODE_INTERNATIONAL5 
SDL_SCANCODE_INTERNATIONAL6 
SDL_SCANCODE_INTERNATIONAL7 
SDL_SCANCODE_INTERNATIONAL8 
SDL_SCANCODE_INTERNATIONAL9 
SDL_SCANCODE_LANG1 

Hangul/English toggle

SDL_SCANCODE_LANG2 

Hanja conversion

SDL_SCANCODE_LANG3 

Katakana

SDL_SCANCODE_LANG4 

Hiragana

SDL_SCANCODE_LANG5 

Zenkaku/Hankaku

SDL_SCANCODE_LANG6 

reserved

SDL_SCANCODE_LANG7 

reserved

SDL_SCANCODE_LANG8 

reserved

SDL_SCANCODE_LANG9 

reserved

SDL_SCANCODE_ALTERASE 

Erase-Eaze

SDL_SCANCODE_SYSREQ 
SDL_SCANCODE_CANCEL 

AC Cancel

SDL_SCANCODE_CLEAR 
SDL_SCANCODE_PRIOR 
SDL_SCANCODE_RETURN2 
SDL_SCANCODE_SEPARATOR 
SDL_SCANCODE_OUT 
SDL_SCANCODE_OPER 
SDL_SCANCODE_CLEARAGAIN 
SDL_SCANCODE_CRSEL 
SDL_SCANCODE_EXSEL 
SDL_SCANCODE_KP_00 
SDL_SCANCODE_KP_000 
SDL_SCANCODE_THOUSANDSSEPARATOR 
SDL_SCANCODE_DECIMALSEPARATOR 
SDL_SCANCODE_CURRENCYUNIT 
SDL_SCANCODE_CURRENCYSUBUNIT 
SDL_SCANCODE_KP_LEFTPAREN 
SDL_SCANCODE_KP_RIGHTPAREN 
SDL_SCANCODE_KP_LEFTBRACE 
SDL_SCANCODE_KP_RIGHTBRACE 
SDL_SCANCODE_KP_TAB 
SDL_SCANCODE_KP_BACKSPACE 
SDL_SCANCODE_KP_A 
SDL_SCANCODE_KP_B 
SDL_SCANCODE_KP_C 
SDL_SCANCODE_KP_D 
SDL_SCANCODE_KP_E 
SDL_SCANCODE_KP_F 
SDL_SCANCODE_KP_XOR 
SDL_SCANCODE_KP_POWER 
SDL_SCANCODE_KP_PERCENT 
SDL_SCANCODE_KP_LESS 
SDL_SCANCODE_KP_GREATER 
SDL_SCANCODE_KP_AMPERSAND 
SDL_SCANCODE_KP_DBLAMPERSAND 
SDL_SCANCODE_KP_VERTICALBAR 
SDL_SCANCODE_KP_DBLVERTICALBAR 
SDL_SCANCODE_KP_COLON 
SDL_SCANCODE_KP_HASH 
SDL_SCANCODE_KP_SPACE 
SDL_SCANCODE_KP_AT 
SDL_SCANCODE_KP_EXCLAM 
SDL_SCANCODE_KP_MEMSTORE 
SDL_SCANCODE_KP_MEMRECALL 
SDL_SCANCODE_KP_MEMCLEAR 
SDL_SCANCODE_KP_MEMADD 
SDL_SCANCODE_KP_MEMSUBTRACT 
SDL_SCANCODE_KP_MEMMULTIPLY 
SDL_SCANCODE_KP_MEMDIVIDE 
SDL_SCANCODE_KP_PLUSMINUS 
SDL_SCANCODE_KP_CLEAR 
SDL_SCANCODE_KP_CLEARENTRY 
SDL_SCANCODE_KP_BINARY 
SDL_SCANCODE_KP_OCTAL 
SDL_SCANCODE_KP_DECIMAL 
SDL_SCANCODE_KP_HEXADECIMAL 
SDL_SCANCODE_LCTRL 
SDL_SCANCODE_LSHIFT 
SDL_SCANCODE_LALT 

alt, option

SDL_SCANCODE_LGUI 

windows, command (apple), meta

SDL_SCANCODE_RCTRL 
SDL_SCANCODE_RSHIFT 
SDL_SCANCODE_RALT 

alt gr, option

SDL_SCANCODE_RGUI 

windows, command (apple), meta

SDL_SCANCODE_MODE 

I'm not sure if this is really not covered by any of the above, but since there's a special SDL_KMOD_MODE for it I'm adding it here

SDL_SCANCODE_SLEEP 

Sleep

SDL_SCANCODE_WAKE 

Wake

SDL_SCANCODE_CHANNEL_INCREMENT 

Channel Increment

SDL_SCANCODE_CHANNEL_DECREMENT 

Channel Decrement

SDL_SCANCODE_MEDIA_PLAY 

Play

SDL_SCANCODE_MEDIA_PAUSE 

Pause

SDL_SCANCODE_MEDIA_RECORD 

Record

SDL_SCANCODE_MEDIA_FAST_FORWARD 

Fast Forward

SDL_SCANCODE_MEDIA_REWIND 

Rewind

SDL_SCANCODE_MEDIA_NEXT_TRACK 

Next Track

SDL_SCANCODE_MEDIA_PREVIOUS_TRACK 

Previous Track

SDL_SCANCODE_MEDIA_STOP 

Stop

SDL_SCANCODE_MEDIA_EJECT 

Eject

SDL_SCANCODE_MEDIA_PLAY_PAUSE 

Play / Pause

SDL_SCANCODE_MEDIA_SELECT 
SDL_SCANCODE_AC_NEW 

AC New

SDL_SCANCODE_AC_OPEN 

AC Open

SDL_SCANCODE_AC_CLOSE 

AC Close

SDL_SCANCODE_AC_EXIT 

AC Exit

SDL_SCANCODE_AC_SAVE 

AC Save

SDL_SCANCODE_AC_PRINT 

AC Print

SDL_SCANCODE_AC_PROPERTIES 

AC Properties

SDL_SCANCODE_AC_SEARCH 

AC Search

SDL_SCANCODE_AC_HOME 

AC Home

SDL_SCANCODE_AC_BACK 

AC Back

SDL_SCANCODE_AC_FORWARD 

AC Forward

SDL_SCANCODE_AC_STOP 

AC Stop

SDL_SCANCODE_AC_REFRESH 

AC Refresh

SDL_SCANCODE_AC_BOOKMARKS 

AC Bookmarks

SDL_SCANCODE_SOFTLEFT 

Usually situated below the display on phones and used as a multi-function feature key for selecting a software defined function shown on the bottom left of the display.

SDL_SCANCODE_SOFTRIGHT 

Usually situated below the display on phones and used as a multi-function feature key for selecting a software defined function shown on the bottom right of the display.

SDL_SCANCODE_CALL 

Used for accepting phone calls.

SDL_SCANCODE_ENDCALL 

Used for rejecting phone calls.

SDL_SCANCODE_RESERVED 

400-500 reserved for dynamic keycodes

SDL_SCANCODE_COUNT 

not a key, just marks the number of scancodes for array bounds

Definition at line 47 of file SDL_scancode.h.

48{
50
51 /**
52 * \name Usage page 0x07
53 *
54 * These values are from usage page 0x07 (USB keyboard page).
55 */
56 /* @{ */
57
64 SDL_SCANCODE_G = 10,
65 SDL_SCANCODE_H = 11,
66 SDL_SCANCODE_I = 12,
67 SDL_SCANCODE_J = 13,
68 SDL_SCANCODE_K = 14,
69 SDL_SCANCODE_L = 15,
70 SDL_SCANCODE_M = 16,
71 SDL_SCANCODE_N = 17,
72 SDL_SCANCODE_O = 18,
73 SDL_SCANCODE_P = 19,
74 SDL_SCANCODE_Q = 20,
75 SDL_SCANCODE_R = 21,
76 SDL_SCANCODE_S = 22,
77 SDL_SCANCODE_T = 23,
78 SDL_SCANCODE_U = 24,
79 SDL_SCANCODE_V = 25,
80 SDL_SCANCODE_W = 26,
81 SDL_SCANCODE_X = 27,
82 SDL_SCANCODE_Y = 28,
83 SDL_SCANCODE_Z = 29,
84
85 SDL_SCANCODE_1 = 30,
86 SDL_SCANCODE_2 = 31,
87 SDL_SCANCODE_3 = 32,
88 SDL_SCANCODE_4 = 33,
89 SDL_SCANCODE_5 = 34,
90 SDL_SCANCODE_6 = 35,
91 SDL_SCANCODE_7 = 36,
92 SDL_SCANCODE_8 = 37,
93 SDL_SCANCODE_9 = 38,
94 SDL_SCANCODE_0 = 39,
95
101
106 SDL_SCANCODE_BACKSLASH = 49, /**< Located at the lower left of the return
107 * key on ISO keyboards and at the right end
108 * of the QWERTY row on ANSI keyboards.
109 * Produces REVERSE SOLIDUS (backslash) and
110 * VERTICAL LINE in a US layout, REVERSE
111 * SOLIDUS and VERTICAL LINE in a UK Mac
112 * layout, NUMBER SIGN and TILDE in a UK
113 * Windows layout, DOLLAR SIGN and POUND SIGN
114 * in a Swiss German layout, NUMBER SIGN and
115 * APOSTROPHE in a German layout, GRAVE
116 * ACCENT and POUND SIGN in a French Mac
117 * layout, and ASTERISK and MICRO SIGN in a
118 * French Windows layout.
119 */
120 SDL_SCANCODE_NONUSHASH = 50, /**< ISO USB keyboards actually use this code
121 * instead of 49 for the same key, but all
122 * OSes I've seen treat the two codes
123 * identically. So, as an implementor, unless
124 * your keyboard generates both of those
125 * codes and your OS treats them differently,
126 * you should generate SDL_SCANCODE_BACKSLASH
127 * instead of this code. As a user, you
128 * should not rely on this code because SDL
129 * will never generate it with most (all?)
130 * keyboards.
131 */
134 SDL_SCANCODE_GRAVE = 53, /**< Located in the top left corner (on both ANSI
135 * and ISO keyboards). Produces GRAVE ACCENT and
136 * TILDE in a US Windows layout and in US and UK
137 * Mac layouts on ANSI keyboards, GRAVE ACCENT
138 * and NOT SIGN in a UK Windows layout, SECTION
139 * SIGN and PLUS-MINUS SIGN in US and UK Mac
140 * layouts on ISO keyboards, SECTION SIGN and
141 * DEGREE SIGN in a Swiss German layout (Mac:
142 * only on ISO keyboards), CIRCUMFLEX ACCENT and
143 * DEGREE SIGN in a German layout (Mac: only on
144 * ISO keyboards), SUPERSCRIPT TWO and TILDE in a
145 * French Windows layout, COMMERCIAL AT and
146 * NUMBER SIGN in a French Mac layout on ISO
147 * keyboards, and LESS-THAN SIGN and GREATER-THAN
148 * SIGN in a Swiss German, German, or French Mac
149 * layout on ANSI keyboards.
150 */
154
156
157 SDL_SCANCODE_F1 = 58,
158 SDL_SCANCODE_F2 = 59,
159 SDL_SCANCODE_F3 = 60,
160 SDL_SCANCODE_F4 = 61,
161 SDL_SCANCODE_F5 = 62,
162 SDL_SCANCODE_F6 = 63,
163 SDL_SCANCODE_F7 = 64,
164 SDL_SCANCODE_F8 = 65,
165 SDL_SCANCODE_F9 = 66,
166 SDL_SCANCODE_F10 = 67,
167 SDL_SCANCODE_F11 = 68,
168 SDL_SCANCODE_F12 = 69,
169
173 SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but
174 does send code 73, not 117) */
178 SDL_SCANCODE_END = 77,
183 SDL_SCANCODE_UP = 82,
184
185 SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards
186 */
203
204 SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO
205 * keyboards have over ANSI ones,
206 * located between left shift and Y.
207 * Produces GRAVE ACCENT and TILDE in a
208 * US or UK Mac layout, REVERSE SOLIDUS
209 * (backslash) and VERTICAL LINE in a
210 * US or UK Windows layout, and
211 * LESS-THAN SIGN and GREATER-THAN SIGN
212 * in a Swiss German, German, or French
213 * layout. */
214 SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */
215 SDL_SCANCODE_POWER = 102, /**< The USB document says this is a status flag,
216 * not a physical key - but some Mac keyboards
217 * do have a power key. */
219 SDL_SCANCODE_F13 = 104,
220 SDL_SCANCODE_F14 = 105,
221 SDL_SCANCODE_F15 = 106,
222 SDL_SCANCODE_F16 = 107,
223 SDL_SCANCODE_F17 = 108,
224 SDL_SCANCODE_F18 = 109,
225 SDL_SCANCODE_F19 = 110,
226 SDL_SCANCODE_F20 = 111,
227 SDL_SCANCODE_F21 = 112,
228 SDL_SCANCODE_F22 = 113,
229 SDL_SCANCODE_F23 = 114,
230 SDL_SCANCODE_F24 = 115,
232 SDL_SCANCODE_HELP = 117, /**< AL Integrated Help Center */
233 SDL_SCANCODE_MENU = 118, /**< Menu (show menu) */
235 SDL_SCANCODE_STOP = 120, /**< AC Stop */
236 SDL_SCANCODE_AGAIN = 121, /**< AC Redo/Repeat */
237 SDL_SCANCODE_UNDO = 122, /**< AC Undo */
238 SDL_SCANCODE_CUT = 123, /**< AC Cut */
239 SDL_SCANCODE_COPY = 124, /**< AC Copy */
240 SDL_SCANCODE_PASTE = 125, /**< AC Paste */
241 SDL_SCANCODE_FIND = 126, /**< AC Find */
242 SDL_SCANCODE_MUTE = 127,
245/* not sure whether there's a reason to enable these */
246/* SDL_SCANCODE_LOCKINGCAPSLOCK = 130, */
247/* SDL_SCANCODE_LOCKINGNUMLOCK = 131, */
248/* SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */
251
252 SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see
253 footnotes in USB doc */
255 SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */
262 SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */
263 SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */
264 SDL_SCANCODE_LANG3 = 146, /**< Katakana */
265 SDL_SCANCODE_LANG4 = 147, /**< Hiragana */
266 SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */
267 SDL_SCANCODE_LANG6 = 149, /**< reserved */
268 SDL_SCANCODE_LANG7 = 150, /**< reserved */
269 SDL_SCANCODE_LANG8 = 151, /**< reserved */
270 SDL_SCANCODE_LANG9 = 152, /**< reserved */
271
272 SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */
274 SDL_SCANCODE_CANCEL = 155, /**< AC Cancel */
275 SDL_SCANCODE_CLEAR = 156,
276 SDL_SCANCODE_PRIOR = 157,
279 SDL_SCANCODE_OUT = 160,
280 SDL_SCANCODE_OPER = 161,
282 SDL_SCANCODE_CRSEL = 163,
283 SDL_SCANCODE_EXSEL = 164,
284
285 SDL_SCANCODE_KP_00 = 176,
297 SDL_SCANCODE_KP_A = 188,
298 SDL_SCANCODE_KP_B = 189,
299 SDL_SCANCODE_KP_C = 190,
300 SDL_SCANCODE_KP_D = 191,
301 SDL_SCANCODE_KP_E = 192,
302 SDL_SCANCODE_KP_F = 193,
315 SDL_SCANCODE_KP_AT = 206,
331
332 SDL_SCANCODE_LCTRL = 224,
334 SDL_SCANCODE_LALT = 226, /**< alt, option */
335 SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */
336 SDL_SCANCODE_RCTRL = 228,
338 SDL_SCANCODE_RALT = 230, /**< alt gr, option */
339 SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */
340
341 SDL_SCANCODE_MODE = 257, /**< I'm not sure if this is really not covered
342 * by any of the above, but since there's a
343 * special SDL_KMOD_MODE for it I'm adding it here
344 */
345
346 /* @} *//* Usage page 0x07 */
347
348 /**
349 * \name Usage page 0x0C
350 *
351 * These values are mapped from usage page 0x0C (USB consumer page).
352 *
353 * There are way more keys in the spec than we can represent in the
354 * current scancode range, so pick the ones that commonly come up in
355 * real world usage.
356 */
357 /* @{ */
358
359 SDL_SCANCODE_SLEEP = 258, /**< Sleep */
360 SDL_SCANCODE_WAKE = 259, /**< Wake */
361
362 SDL_SCANCODE_CHANNEL_INCREMENT = 260, /**< Channel Increment */
363 SDL_SCANCODE_CHANNEL_DECREMENT = 261, /**< Channel Decrement */
364
365 SDL_SCANCODE_MEDIA_PLAY = 262, /**< Play */
366 SDL_SCANCODE_MEDIA_PAUSE = 263, /**< Pause */
367 SDL_SCANCODE_MEDIA_RECORD = 264, /**< Record */
368 SDL_SCANCODE_MEDIA_FAST_FORWARD = 265, /**< Fast Forward */
369 SDL_SCANCODE_MEDIA_REWIND = 266, /**< Rewind */
370 SDL_SCANCODE_MEDIA_NEXT_TRACK = 267, /**< Next Track */
371 SDL_SCANCODE_MEDIA_PREVIOUS_TRACK = 268, /**< Previous Track */
372 SDL_SCANCODE_MEDIA_STOP = 269, /**< Stop */
373 SDL_SCANCODE_MEDIA_EJECT = 270, /**< Eject */
374 SDL_SCANCODE_MEDIA_PLAY_PAUSE = 271, /**< Play / Pause */
375 SDL_SCANCODE_MEDIA_SELECT = 272, /* Media Select */
376
377 SDL_SCANCODE_AC_NEW = 273, /**< AC New */
378 SDL_SCANCODE_AC_OPEN = 274, /**< AC Open */
379 SDL_SCANCODE_AC_CLOSE = 275, /**< AC Close */
380 SDL_SCANCODE_AC_EXIT = 276, /**< AC Exit */
381 SDL_SCANCODE_AC_SAVE = 277, /**< AC Save */
382 SDL_SCANCODE_AC_PRINT = 278, /**< AC Print */
383 SDL_SCANCODE_AC_PROPERTIES = 279, /**< AC Properties */
384
385 SDL_SCANCODE_AC_SEARCH = 280, /**< AC Search */
386 SDL_SCANCODE_AC_HOME = 281, /**< AC Home */
387 SDL_SCANCODE_AC_BACK = 282, /**< AC Back */
388 SDL_SCANCODE_AC_FORWARD = 283, /**< AC Forward */
389 SDL_SCANCODE_AC_STOP = 284, /**< AC Stop */
390 SDL_SCANCODE_AC_REFRESH = 285, /**< AC Refresh */
391 SDL_SCANCODE_AC_BOOKMARKS = 286, /**< AC Bookmarks */
392
393 /* @} *//* Usage page 0x0C */
394
395
396 /**
397 * \name Mobile keys
398 *
399 * These are values that are often used on mobile phones.
400 */
401 /* @{ */
402
403 SDL_SCANCODE_SOFTLEFT = 287, /**< Usually situated below the display on phones and
404 used as a multi-function feature key for selecting
405 a software defined function shown on the bottom left
406 of the display. */
407 SDL_SCANCODE_SOFTRIGHT = 288, /**< Usually situated below the display on phones and
408 used as a multi-function feature key for selecting
409 a software defined function shown on the bottom right
410 of the display. */
411 SDL_SCANCODE_CALL = 289, /**< Used for accepting phone calls. */
412 SDL_SCANCODE_ENDCALL = 290, /**< Used for rejecting phone calls. */
413
414 /* @} *//* Mobile keys */
415
416 /* Add any other keys here. */
417
418 SDL_SCANCODE_RESERVED = 400, /**< 400-500 reserved for dynamic keycodes */
419
420 SDL_SCANCODE_COUNT = 512 /**< not a key, just marks the number of scancodes for array bounds */
421
SDL_Scancode
@ SDL_SCANCODE_E
@ SDL_SCANCODE_END
@ SDL_SCANCODE_OUT
@ SDL_SCANCODE_AC_NEW
@ SDL_SCANCODE_BACKSLASH
@ SDL_SCANCODE_MEDIA_PREVIOUS_TRACK
@ SDL_SCANCODE_ESCAPE
@ SDL_SCANCODE_KP_OCTAL
@ SDL_SCANCODE_KP_CLEARENTRY
@ SDL_SCANCODE_KP_EXCLAM
@ SDL_SCANCODE_KP_DECIMAL
@ SDL_SCANCODE_F15
@ SDL_SCANCODE_M
@ SDL_SCANCODE_F12
@ SDL_SCANCODE_X
@ SDL_SCANCODE_W
@ SDL_SCANCODE_KP_E
@ SDL_SCANCODE_INTERNATIONAL4
@ SDL_SCANCODE_KP_PLUS
@ SDL_SCANCODE_MEDIA_REWIND
@ SDL_SCANCODE_F4
@ SDL_SCANCODE_LANG8
@ SDL_SCANCODE_RIGHTBRACKET
@ SDL_SCANCODE_MEDIA_PLAY
@ SDL_SCANCODE_INTERNATIONAL1
@ SDL_SCANCODE_INTERNATIONAL7
@ SDL_SCANCODE_KP_GREATER
@ SDL_SCANCODE_LANG2
@ SDL_SCANCODE_CAPSLOCK
@ SDL_SCANCODE_B
@ SDL_SCANCODE_F2
@ SDL_SCANCODE_KP_MINUS
@ SDL_SCANCODE_KP_00
@ SDL_SCANCODE_F6
@ SDL_SCANCODE_NONUSBACKSLASH
@ SDL_SCANCODE_KP_0
@ SDL_SCANCODE_KP_B
@ SDL_SCANCODE_F11
@ SDL_SCANCODE_CANCEL
@ SDL_SCANCODE_COMMA
@ SDL_SCANCODE_KP_PERIOD
@ SDL_SCANCODE_KP_F
@ SDL_SCANCODE_KP_LEFTPAREN
@ SDL_SCANCODE_F24
@ SDL_SCANCODE_AC_SAVE
@ SDL_SCANCODE_CUT
@ SDL_SCANCODE_Y
@ SDL_SCANCODE_KP_VERTICALBAR
@ SDL_SCANCODE_APOSTROPHE
@ SDL_SCANCODE_KP_HEXADECIMAL
@ SDL_SCANCODE_KP_COMMA
@ SDL_SCANCODE_KP_SPACE
@ SDL_SCANCODE_2
@ SDL_SCANCODE_KP_BACKSPACE
@ SDL_SCANCODE_AC_EXIT
@ SDL_SCANCODE_O
@ SDL_SCANCODE_CLEARAGAIN
@ SDL_SCANCODE_RGUI
@ SDL_SCANCODE_K
@ SDL_SCANCODE_F
@ SDL_SCANCODE_DELETE
@ SDL_SCANCODE_F10
@ SDL_SCANCODE_F3
@ SDL_SCANCODE_KP_AMPERSAND
@ SDL_SCANCODE_CHANNEL_INCREMENT
@ SDL_SCANCODE_KP_COLON
@ SDL_SCANCODE_CHANNEL_DECREMENT
@ SDL_SCANCODE_5
@ SDL_SCANCODE_KP_RIGHTPAREN
@ SDL_SCANCODE_H
@ SDL_SCANCODE_KP_D
@ SDL_SCANCODE_SLASH
@ SDL_SCANCODE_F1
@ SDL_SCANCODE_KP_EQUALS
@ SDL_SCANCODE_F21
@ SDL_SCANCODE_KP_6
@ SDL_SCANCODE_KP_HASH
@ SDL_SCANCODE_7
@ SDL_SCANCODE_9
@ SDL_SCANCODE_KP_TAB
@ SDL_SCANCODE_KP_7
@ SDL_SCANCODE_AC_REFRESH
@ SDL_SCANCODE_INTERNATIONAL9
@ SDL_SCANCODE_KP_9
@ SDL_SCANCODE_EXSEL
@ SDL_SCANCODE_MEDIA_FAST_FORWARD
@ SDL_SCANCODE_MEDIA_RECORD
@ SDL_SCANCODE_VOLUMEUP
@ SDL_SCANCODE_INTERNATIONAL8
@ SDL_SCANCODE_CRSEL
@ SDL_SCANCODE_ENDCALL
@ SDL_SCANCODE_NUMLOCKCLEAR
@ SDL_SCANCODE_MEDIA_PLAY_PAUSE
@ SDL_SCANCODE_PRINTSCREEN
@ SDL_SCANCODE_KP_XOR
@ SDL_SCANCODE_POWER
@ SDL_SCANCODE_KP_3
@ SDL_SCANCODE_SCROLLLOCK
@ SDL_SCANCODE_PAUSE
@ SDL_SCANCODE_RETURN
@ SDL_SCANCODE_KP_000
@ SDL_SCANCODE_HELP
@ SDL_SCANCODE_PAGEDOWN
@ SDL_SCANCODE_INTERNATIONAL3
@ SDL_SCANCODE_LSHIFT
@ SDL_SCANCODE_TAB
@ SDL_SCANCODE_STOP
@ SDL_SCANCODE_CURRENCYSUBUNIT
@ SDL_SCANCODE_LANG1
@ SDL_SCANCODE_3
@ SDL_SCANCODE_LCTRL
@ SDL_SCANCODE_SEMICOLON
@ SDL_SCANCODE_F16
@ SDL_SCANCODE_F22
@ SDL_SCANCODE_UNKNOWN
@ SDL_SCANCODE_KP_MEMCLEAR
@ SDL_SCANCODE_LGUI
@ SDL_SCANCODE_0
@ SDL_SCANCODE_KP_LESS
@ SDL_SCANCODE_AC_STOP
@ SDL_SCANCODE_OPER
@ SDL_SCANCODE_LEFTBRACKET
@ SDL_SCANCODE_KP_MEMSUBTRACT
@ SDL_SCANCODE_KP_A
@ SDL_SCANCODE_AC_SEARCH
@ SDL_SCANCODE_INTERNATIONAL2
@ SDL_SCANCODE_DECIMALSEPARATOR
@ SDL_SCANCODE_F19
@ SDL_SCANCODE_V
@ SDL_SCANCODE_EXECUTE
@ SDL_SCANCODE_GRAVE
@ SDL_SCANCODE_KP_LEFTBRACE
@ SDL_SCANCODE_MENU
@ SDL_SCANCODE_RALT
@ SDL_SCANCODE_MUTE
@ SDL_SCANCODE_SYSREQ
@ SDL_SCANCODE_8
@ SDL_SCANCODE_MEDIA_STOP
@ SDL_SCANCODE_I
@ SDL_SCANCODE_LANG4
@ SDL_SCANCODE_KP_PERCENT
@ SDL_SCANCODE_F17
@ SDL_SCANCODE_RETURN2
@ SDL_SCANCODE_LANG3
@ SDL_SCANCODE_KP_MEMADD
@ SDL_SCANCODE_KP_PLUSMINUS
@ SDL_SCANCODE_INTERNATIONAL5
@ SDL_SCANCODE_AC_OPEN
@ SDL_SCANCODE_THOUSANDSSEPARATOR
@ SDL_SCANCODE_6
@ SDL_SCANCODE_S
@ SDL_SCANCODE_KP_ENTER
@ SDL_SCANCODE_AC_BACK
@ SDL_SCANCODE_FIND
@ SDL_SCANCODE_KP_MEMSTORE
@ SDL_SCANCODE_PAGEUP
@ SDL_SCANCODE_Z
@ SDL_SCANCODE_P
@ SDL_SCANCODE_D
@ SDL_SCANCODE_F23
@ SDL_SCANCODE_PERIOD
@ SDL_SCANCODE_CALL
@ SDL_SCANCODE_KP_MEMRECALL
@ SDL_SCANCODE_MEDIA_NEXT_TRACK
@ SDL_SCANCODE_R
@ SDL_SCANCODE_KP_AT
@ SDL_SCANCODE_KP_1
@ SDL_SCANCODE_AC_BOOKMARKS
@ SDL_SCANCODE_KP_MEMMULTIPLY
@ SDL_SCANCODE_DOWN
@ SDL_SCANCODE_COPY
@ SDL_SCANCODE_RIGHT
@ SDL_SCANCODE_F7
@ SDL_SCANCODE_INTERNATIONAL6
@ SDL_SCANCODE_MINUS
@ SDL_SCANCODE_MEDIA_SELECT
@ SDL_SCANCODE_A
@ SDL_SCANCODE_MODE
@ SDL_SCANCODE_NONUSHASH
@ SDL_SCANCODE_WAKE
@ SDL_SCANCODE_LANG7
@ SDL_SCANCODE_ALTERASE
@ SDL_SCANCODE_G
@ SDL_SCANCODE_KP_2
@ SDL_SCANCODE_KP_RIGHTBRACE
@ SDL_SCANCODE_U
@ SDL_SCANCODE_AGAIN
@ SDL_SCANCODE_MEDIA_EJECT
@ SDL_SCANCODE_KP_EQUALSAS400
@ SDL_SCANCODE_KP_MULTIPLY
@ SDL_SCANCODE_KP_C
@ SDL_SCANCODE_KP_POWER
@ SDL_SCANCODE_4
@ SDL_SCANCODE_KP_DBLVERTICALBAR
@ SDL_SCANCODE_F9
@ SDL_SCANCODE_AC_PRINT
@ SDL_SCANCODE_F5
@ SDL_SCANCODE_AC_CLOSE
@ SDL_SCANCODE_UP
@ SDL_SCANCODE_LEFT
@ SDL_SCANCODE_KP_BINARY
@ SDL_SCANCODE_SELECT
@ SDL_SCANCODE_APPLICATION
@ SDL_SCANCODE_LANG5
@ SDL_SCANCODE_KP_4
@ SDL_SCANCODE_C
@ SDL_SCANCODE_HOME
@ SDL_SCANCODE_F14
@ SDL_SCANCODE_T
@ SDL_SCANCODE_KP_CLEAR
@ SDL_SCANCODE_F8
@ SDL_SCANCODE_LALT
@ SDL_SCANCODE_KP_8
@ SDL_SCANCODE_MEDIA_PAUSE
@ SDL_SCANCODE_PASTE
@ SDL_SCANCODE_RCTRL
@ SDL_SCANCODE_F20
@ SDL_SCANCODE_KP_5
@ SDL_SCANCODE_L
@ SDL_SCANCODE_UNDO
@ SDL_SCANCODE_KP_DBLAMPERSAND
@ SDL_SCANCODE_CLEAR
@ SDL_SCANCODE_LANG6
@ SDL_SCANCODE_AC_HOME
@ SDL_SCANCODE_VOLUMEDOWN
@ SDL_SCANCODE_SOFTRIGHT
@ SDL_SCANCODE_SLEEP
@ SDL_SCANCODE_KP_DIVIDE
@ SDL_SCANCODE_PRIOR
@ SDL_SCANCODE_F18
@ SDL_SCANCODE_F13
@ SDL_SCANCODE_RESERVED
@ SDL_SCANCODE_CURRENCYUNIT
@ SDL_SCANCODE_N
@ SDL_SCANCODE_SOFTLEFT
@ SDL_SCANCODE_BACKSPACE
@ SDL_SCANCODE_LANG9
@ SDL_SCANCODE_EQUALS
@ SDL_SCANCODE_SPACE
@ SDL_SCANCODE_COUNT
@ SDL_SCANCODE_SEPARATOR
@ SDL_SCANCODE_RSHIFT
@ SDL_SCANCODE_INSERT
@ SDL_SCANCODE_AC_FORWARD
@ SDL_SCANCODE_KP_MEMDIVIDE
@ SDL_SCANCODE_J
@ SDL_SCANCODE_AC_PROPERTIES
@ SDL_SCANCODE_1
@ SDL_SCANCODE_Q