Module scancode

Available on crate feature dep_sdl3 only.
Expand description

Defines keyboard scancodes.

Please refer to the Best Keyboard Practices document for details on what this information means and how best to use it.

https://wiki.libsdl.org/SDL3/BestKeyboardPractices

Structs§

SDL_Scancode
The SDL keyboard scancode representation.

Constants§

SDL_SCANCODE_0
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_A
SDL_SCANCODE_AC_BACK
AC Back
SDL_SCANCODE_AC_BOOKMARKS
AC Bookmarks
SDL_SCANCODE_AC_CLOSE
AC Close
SDL_SCANCODE_AC_EXIT
AC Exit
SDL_SCANCODE_AC_FORWARD
AC Forward
SDL_SCANCODE_AC_HOME
AC Home
SDL_SCANCODE_AC_NEW
AC New
SDL_SCANCODE_AC_OPEN
AC Open
SDL_SCANCODE_AC_PRINT
AC Print
SDL_SCANCODE_AC_PROPERTIES
AC Properties
SDL_SCANCODE_AC_REFRESH
AC Refresh
SDL_SCANCODE_AC_SAVE
AC Save
SDL_SCANCODE_AC_SEARCH
AC Search
SDL_SCANCODE_AC_STOP
AC Stop
SDL_SCANCODE_AGAIN
AC Redo/Repeat
SDL_SCANCODE_ALTERASE
Erase-Eaze
SDL_SCANCODE_APOSTROPHE
SDL_SCANCODE_APPLICATION
windows contextual menu, compose
SDL_SCANCODE_B
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_BACKSPACE
SDL_SCANCODE_C
SDL_SCANCODE_CALL
Used for accepting phone calls.
SDL_SCANCODE_CANCEL
AC Cancel
SDL_SCANCODE_CAPSLOCK
SDL_SCANCODE_CHANNEL_DECREMENT
Channel Decrement
SDL_SCANCODE_CHANNEL_INCREMENT
Channel Increment
SDL_SCANCODE_CLEAR
SDL_SCANCODE_CLEARAGAIN
SDL_SCANCODE_COMMA
SDL_SCANCODE_COPY
AC Copy
SDL_SCANCODE_COUNT
not a key, just marks the number of scancodes for array bounds
SDL_SCANCODE_CRSEL
SDL_SCANCODE_CURRENCYSUBUNIT
SDL_SCANCODE_CURRENCYUNIT
SDL_SCANCODE_CUT
AC Cut
SDL_SCANCODE_D
SDL_SCANCODE_DECIMALSEPARATOR
SDL_SCANCODE_DELETE
SDL_SCANCODE_DOWN
SDL_SCANCODE_E
SDL_SCANCODE_END
SDL_SCANCODE_ENDCALL
Used for rejecting phone calls.
SDL_SCANCODE_EQUALS
SDL_SCANCODE_ESCAPE
SDL_SCANCODE_EXECUTE
SDL_SCANCODE_EXSEL
SDL_SCANCODE_F
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_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_FIND
AC Find
SDL_SCANCODE_G
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_H
SDL_SCANCODE_HELP
AL Integrated Help Center
SDL_SCANCODE_HOME
SDL_SCANCODE_I
SDL_SCANCODE_INSERT
insert on PC, help on some Mac keyboards (but does send code 73, not 117)
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_J
SDL_SCANCODE_K
SDL_SCANCODE_KP_0
SDL_SCANCODE_KP_00
SDL_SCANCODE_KP_000
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_A
SDL_SCANCODE_KP_AMPERSAND
SDL_SCANCODE_KP_AT
SDL_SCANCODE_KP_B
SDL_SCANCODE_KP_BACKSPACE
SDL_SCANCODE_KP_BINARY
SDL_SCANCODE_KP_C
SDL_SCANCODE_KP_CLEAR
SDL_SCANCODE_KP_CLEARENTRY
SDL_SCANCODE_KP_COLON
SDL_SCANCODE_KP_COMMA
SDL_SCANCODE_KP_D
SDL_SCANCODE_KP_DBLAMPERSAND
SDL_SCANCODE_KP_DBLVERTICALBAR
SDL_SCANCODE_KP_DECIMAL
SDL_SCANCODE_KP_DIVIDE
SDL_SCANCODE_KP_E
SDL_SCANCODE_KP_ENTER
SDL_SCANCODE_KP_EQUALS
SDL_SCANCODE_KP_EQUALSAS400
SDL_SCANCODE_KP_EXCLAM
SDL_SCANCODE_KP_F
SDL_SCANCODE_KP_GREATER
SDL_SCANCODE_KP_HASH
SDL_SCANCODE_KP_HEXADECIMAL
SDL_SCANCODE_KP_LEFTBRACE
SDL_SCANCODE_KP_LEFTPAREN
SDL_SCANCODE_KP_LESS
SDL_SCANCODE_KP_MEMADD
SDL_SCANCODE_KP_MEMCLEAR
SDL_SCANCODE_KP_MEMDIVIDE
SDL_SCANCODE_KP_MEMMULTIPLY
SDL_SCANCODE_KP_MEMRECALL
SDL_SCANCODE_KP_MEMSTORE
SDL_SCANCODE_KP_MEMSUBTRACT
SDL_SCANCODE_KP_MINUS
SDL_SCANCODE_KP_MULTIPLY
SDL_SCANCODE_KP_OCTAL
SDL_SCANCODE_KP_PERCENT
SDL_SCANCODE_KP_PERIOD
SDL_SCANCODE_KP_PLUS
SDL_SCANCODE_KP_PLUSMINUS
SDL_SCANCODE_KP_POWER
SDL_SCANCODE_KP_RIGHTBRACE
SDL_SCANCODE_KP_RIGHTPAREN
SDL_SCANCODE_KP_SPACE
SDL_SCANCODE_KP_TAB
SDL_SCANCODE_KP_VERTICALBAR
SDL_SCANCODE_KP_XOR
SDL_SCANCODE_L
SDL_SCANCODE_LALT
alt, option
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_LCTRL
SDL_SCANCODE_LEFT
SDL_SCANCODE_LEFTBRACKET
SDL_SCANCODE_LGUI
windows, command (apple), meta
SDL_SCANCODE_LSHIFT
SDL_SCANCODE_M
SDL_SCANCODE_MEDIA_EJECT
Eject
SDL_SCANCODE_MEDIA_FAST_FORWARD
Fast Forward
SDL_SCANCODE_MEDIA_NEXT_TRACK
Next Track
SDL_SCANCODE_MEDIA_PAUSE
Pause
SDL_SCANCODE_MEDIA_PLAY
Play
SDL_SCANCODE_MEDIA_PLAY_PAUSE
Play / Pause
SDL_SCANCODE_MEDIA_PREVIOUS_TRACK
Previous Track
SDL_SCANCODE_MEDIA_RECORD
Record
SDL_SCANCODE_MEDIA_REWIND
Rewind
SDL_SCANCODE_MEDIA_SELECT
SDL_SCANCODE_MEDIA_STOP
Stop
SDL_SCANCODE_MENU
Menu (show menu)
SDL_SCANCODE_MINUS
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_MUTE
SDL_SCANCODE_N
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_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_NUMLOCKCLEAR
num lock on PC, clear on Mac keyboards
SDL_SCANCODE_O
SDL_SCANCODE_OPER
SDL_SCANCODE_OUT
SDL_SCANCODE_P
SDL_SCANCODE_PAGEDOWN
SDL_SCANCODE_PAGEUP
SDL_SCANCODE_PASTE
AC Paste
SDL_SCANCODE_PAUSE
SDL_SCANCODE_PERIOD
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_PRINTSCREEN
SDL_SCANCODE_PRIOR
SDL_SCANCODE_Q
SDL_SCANCODE_R
SDL_SCANCODE_RALT
alt gr, option
SDL_SCANCODE_RCTRL
SDL_SCANCODE_RESERVED
400-500 reserved for dynamic keycodes
SDL_SCANCODE_RETURN
SDL_SCANCODE_RETURN2
SDL_SCANCODE_RGUI
windows, command (apple), meta
SDL_SCANCODE_RIGHT
SDL_SCANCODE_RIGHTBRACKET
SDL_SCANCODE_RSHIFT
SDL_SCANCODE_S
SDL_SCANCODE_SCROLLLOCK
SDL_SCANCODE_SELECT
SDL_SCANCODE_SEMICOLON
SDL_SCANCODE_SEPARATOR
SDL_SCANCODE_SLASH
SDL_SCANCODE_SLEEP
Sleep
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_SPACE
SDL_SCANCODE_STOP
AC Stop
SDL_SCANCODE_SYSREQ
SDL_SCANCODE_T
SDL_SCANCODE_TAB
SDL_SCANCODE_THOUSANDSSEPARATOR
SDL_SCANCODE_U
SDL_SCANCODE_UNDO
AC Undo
SDL_SCANCODE_UNKNOWN
SDL_SCANCODE_UP
SDL_SCANCODE_V
SDL_SCANCODE_VOLUMEDOWN
SDL_SCANCODE_VOLUMEUP
SDL_SCANCODE_W
SDL_SCANCODE_WAKE
Wake
SDL_SCANCODE_X
SDL_SCANCODE_Y
SDL_SCANCODE_Z