The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

SDL2::scancode - Defines Keyboard Scancodes

SYNOPSIS

    use SDL2 qw[:scancode];

DESCRIPTION

SDL2::scancode defines values of this type are used to represent keyboard keys, among other places in the scancode field of the SDL2::Event structure.

Definitions and Enumerations

The SDL keyboard scancode representation.

SDL_Scancode

The values in this enumeration are based on the USB usage page standard: https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf and may be imported by name or with the :scancode tag.

These values are from usage page 0x07 (USB keyboard page).

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
SDL_SCANCODE_MENU
SDL_SCANCODE_SELECT
SDL_SCANCODE_STOP
SDL_SCANCODE_AGAIN

redo

SDL_SCANCODE_UNDO
SDL_SCANCODE_CUT
SDL_SCANCODE_COPY
SDL_SCANCODE_PASTE
SDL_SCANCODE_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
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 KMOD_MODE for it I'm adding it here

These values are mapped from usage page 0x0C (USB consumer page).

SDL_SCANCODE_AUDIONEXT
SDL_SCANCODE_AUDIOPREV
SDL_SCANCODE_AUDIOSTOP
SDL_SCANCODE_AUDIOPLAY
SDL_SCANCODE_AUDIOMUTE
SDL_SCANCODE_MEDIASELECT
SDL_SCANCODE_WWW
SDL_SCANCODE_MAIL
SDL_SCANCODE_CALCULATOR
SDL_SCANCODE_COMPUTER
SDL_SCANCODE_AC_HOME
SDL_SCANCODE_AC_BACK
SDL_SCANCODE_AC_FORWARD
SDL_SCANCODE_AC_STOP
SDL_SCANCODE_AC_REFRESH
SDL_SCANCODE_AC_BOOKMARKS

These are values that Christian Walther added (for mac keyboard?).

SDL_SCANCODE_BRIGHTNESSDOWN
SDL_SCANCODE_BRIGHTNESSUP
SDL_SCANCODE_DISPLAYSWITCH - display mirroring/dual display switch, video mode switch
SDL_SCANCODE_KBDILLUMTOGGLE
SDL_SCANCODE_KBDILLUMDOWN
SDL_SCANCODE_KBDILLUMUP>
SDL_SCANCODE_EJECT
SDL_SCANCODE_SLEEP
SDL_SCANCODE_APP1
SDL_SCANCODE_APP2

These values are mapped from usage page 0x0C (USB consumer page).

SDL_SCANCODE_AUDIOREWIND
SDL_SCANCODE_AUDIOFASTFORWARD

Add any other keys here.

SDL_NUM_SCANCODES

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

LICENSE

Copyright (C) Sanko Robinson.

This library is free software; you can redistribute it and/or modify it under the terms found in the Artistic License 2. Other copyrights, terms, and conditions may apply to data transmitted through this module.

AUTHOR

Sanko Robinson <sanko@cpan.org>