include/SDL_scancode.h
author Ozkan Sezer <sezeroz@gmail.com>
Thu, 16 Aug 2018 11:01:02 +0300
changeset 12120 0131b11bd03f
parent 11811 5d94cb6b24d3
permissions -rw-r--r--
SDL_hidapi_ps4.c: define NTDDI_VISTA / _WIN32_WINNT_VISTA if not defined

it still needs a Vista or newer Platform SDK to build, though.
     1 /*
     2   Simple DirectMedia Layer
     3   Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
     4 
     5   This software is provided 'as-is', without any express or implied
     6   warranty.  In no event will the authors be held liable for any damages
     7   arising from the use of this software.
     8 
     9   Permission is granted to anyone to use this software for any purpose,
    10   including commercial applications, and to alter it and redistribute it
    11   freely, subject to the following restrictions:
    12 
    13   1. The origin of this software must not be misrepresented; you must not
    14      claim that you wrote the original software. If you use this software
    15      in a product, an acknowledgment in the product documentation would be
    16      appreciated but is not required.
    17   2. Altered source versions must be plainly marked as such, and must not be
    18      misrepresented as being the original software.
    19   3. This notice may not be removed or altered from any source distribution.
    20 */
    21 
    22 /**
    23  *  \file SDL_scancode.h
    24  *
    25  *  Defines keyboard scancodes.
    26  */
    27 
    28 #ifndef SDL_scancode_h_
    29 #define SDL_scancode_h_
    30 
    31 #include "SDL_stdinc.h"
    32 
    33 /**
    34  *  \brief The SDL keyboard scancode representation.
    35  *
    36  *  Values of this type are used to represent keyboard keys, among other places
    37  *  in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the
    38  *  SDL_Event structure.
    39  *
    40  *  The values in this enumeration are based on the USB usage page standard:
    41  *  http://www.usb.org/developers/hidpage/Hut1_12v2.pdf
    42  */
    43 typedef enum
    44 {
    45     SDL_SCANCODE_UNKNOWN = 0,
    46 
    47     /**
    48      *  \name Usage page 0x07
    49      *
    50      *  These values are from usage page 0x07 (USB keyboard page).
    51      */
    52     /* @{ */
    53 
    54     SDL_SCANCODE_A = 4,
    55     SDL_SCANCODE_B = 5,
    56     SDL_SCANCODE_C = 6,
    57     SDL_SCANCODE_D = 7,
    58     SDL_SCANCODE_E = 8,
    59     SDL_SCANCODE_F = 9,
    60     SDL_SCANCODE_G = 10,
    61     SDL_SCANCODE_H = 11,
    62     SDL_SCANCODE_I = 12,
    63     SDL_SCANCODE_J = 13,
    64     SDL_SCANCODE_K = 14,
    65     SDL_SCANCODE_L = 15,
    66     SDL_SCANCODE_M = 16,
    67     SDL_SCANCODE_N = 17,
    68     SDL_SCANCODE_O = 18,
    69     SDL_SCANCODE_P = 19,
    70     SDL_SCANCODE_Q = 20,
    71     SDL_SCANCODE_R = 21,
    72     SDL_SCANCODE_S = 22,
    73     SDL_SCANCODE_T = 23,
    74     SDL_SCANCODE_U = 24,
    75     SDL_SCANCODE_V = 25,
    76     SDL_SCANCODE_W = 26,
    77     SDL_SCANCODE_X = 27,
    78     SDL_SCANCODE_Y = 28,
    79     SDL_SCANCODE_Z = 29,
    80 
    81     SDL_SCANCODE_1 = 30,
    82     SDL_SCANCODE_2 = 31,
    83     SDL_SCANCODE_3 = 32,
    84     SDL_SCANCODE_4 = 33,
    85     SDL_SCANCODE_5 = 34,
    86     SDL_SCANCODE_6 = 35,
    87     SDL_SCANCODE_7 = 36,
    88     SDL_SCANCODE_8 = 37,
    89     SDL_SCANCODE_9 = 38,
    90     SDL_SCANCODE_0 = 39,
    91 
    92     SDL_SCANCODE_RETURN = 40,
    93     SDL_SCANCODE_ESCAPE = 41,
    94     SDL_SCANCODE_BACKSPACE = 42,
    95     SDL_SCANCODE_TAB = 43,
    96     SDL_SCANCODE_SPACE = 44,
    97 
    98     SDL_SCANCODE_MINUS = 45,
    99     SDL_SCANCODE_EQUALS = 46,
   100     SDL_SCANCODE_LEFTBRACKET = 47,
   101     SDL_SCANCODE_RIGHTBRACKET = 48,
   102     SDL_SCANCODE_BACKSLASH = 49, /**< Located at the lower left of the return
   103                                   *   key on ISO keyboards and at the right end
   104                                   *   of the QWERTY row on ANSI keyboards.
   105                                   *   Produces REVERSE SOLIDUS (backslash) and
   106                                   *   VERTICAL LINE in a US layout, REVERSE
   107                                   *   SOLIDUS and VERTICAL LINE in a UK Mac
   108                                   *   layout, NUMBER SIGN and TILDE in a UK
   109                                   *   Windows layout, DOLLAR SIGN and POUND SIGN
   110                                   *   in a Swiss German layout, NUMBER SIGN and
   111                                   *   APOSTROPHE in a German layout, GRAVE
   112                                   *   ACCENT and POUND SIGN in a French Mac
   113                                   *   layout, and ASTERISK and MICRO SIGN in a
   114                                   *   French Windows layout.
   115                                   */
   116     SDL_SCANCODE_NONUSHASH = 50, /**< ISO USB keyboards actually use this code
   117                                   *   instead of 49 for the same key, but all
   118                                   *   OSes I've seen treat the two codes
   119                                   *   identically. So, as an implementor, unless
   120                                   *   your keyboard generates both of those
   121                                   *   codes and your OS treats them differently,
   122                                   *   you should generate SDL_SCANCODE_BACKSLASH
   123                                   *   instead of this code. As a user, you
   124                                   *   should not rely on this code because SDL
   125                                   *   will never generate it with most (all?)
   126                                   *   keyboards.
   127                                   */
   128     SDL_SCANCODE_SEMICOLON = 51,
   129     SDL_SCANCODE_APOSTROPHE = 52,
   130     SDL_SCANCODE_GRAVE = 53, /**< Located in the top left corner (on both ANSI
   131                               *   and ISO keyboards). Produces GRAVE ACCENT and
   132                               *   TILDE in a US Windows layout and in US and UK
   133                               *   Mac layouts on ANSI keyboards, GRAVE ACCENT
   134                               *   and NOT SIGN in a UK Windows layout, SECTION
   135                               *   SIGN and PLUS-MINUS SIGN in US and UK Mac
   136                               *   layouts on ISO keyboards, SECTION SIGN and
   137                               *   DEGREE SIGN in a Swiss German layout (Mac:
   138                               *   only on ISO keyboards), CIRCUMFLEX ACCENT and
   139                               *   DEGREE SIGN in a German layout (Mac: only on
   140                               *   ISO keyboards), SUPERSCRIPT TWO and TILDE in a
   141                               *   French Windows layout, COMMERCIAL AT and
   142                               *   NUMBER SIGN in a French Mac layout on ISO
   143                               *   keyboards, and LESS-THAN SIGN and GREATER-THAN
   144                               *   SIGN in a Swiss German, German, or French Mac
   145                               *   layout on ANSI keyboards.
   146                               */
   147     SDL_SCANCODE_COMMA = 54,
   148     SDL_SCANCODE_PERIOD = 55,
   149     SDL_SCANCODE_SLASH = 56,
   150 
   151     SDL_SCANCODE_CAPSLOCK = 57,
   152 
   153     SDL_SCANCODE_F1 = 58,
   154     SDL_SCANCODE_F2 = 59,
   155     SDL_SCANCODE_F3 = 60,
   156     SDL_SCANCODE_F4 = 61,
   157     SDL_SCANCODE_F5 = 62,
   158     SDL_SCANCODE_F6 = 63,
   159     SDL_SCANCODE_F7 = 64,
   160     SDL_SCANCODE_F8 = 65,
   161     SDL_SCANCODE_F9 = 66,
   162     SDL_SCANCODE_F10 = 67,
   163     SDL_SCANCODE_F11 = 68,
   164     SDL_SCANCODE_F12 = 69,
   165 
   166     SDL_SCANCODE_PRINTSCREEN = 70,
   167     SDL_SCANCODE_SCROLLLOCK = 71,
   168     SDL_SCANCODE_PAUSE = 72,
   169     SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but
   170                                    does send code 73, not 117) */
   171     SDL_SCANCODE_HOME = 74,
   172     SDL_SCANCODE_PAGEUP = 75,
   173     SDL_SCANCODE_DELETE = 76,
   174     SDL_SCANCODE_END = 77,
   175     SDL_SCANCODE_PAGEDOWN = 78,
   176     SDL_SCANCODE_RIGHT = 79,
   177     SDL_SCANCODE_LEFT = 80,
   178     SDL_SCANCODE_DOWN = 81,
   179     SDL_SCANCODE_UP = 82,
   180 
   181     SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards
   182                                      */
   183     SDL_SCANCODE_KP_DIVIDE = 84,
   184     SDL_SCANCODE_KP_MULTIPLY = 85,
   185     SDL_SCANCODE_KP_MINUS = 86,
   186     SDL_SCANCODE_KP_PLUS = 87,
   187     SDL_SCANCODE_KP_ENTER = 88,
   188     SDL_SCANCODE_KP_1 = 89,
   189     SDL_SCANCODE_KP_2 = 90,
   190     SDL_SCANCODE_KP_3 = 91,
   191     SDL_SCANCODE_KP_4 = 92,
   192     SDL_SCANCODE_KP_5 = 93,
   193     SDL_SCANCODE_KP_6 = 94,
   194     SDL_SCANCODE_KP_7 = 95,
   195     SDL_SCANCODE_KP_8 = 96,
   196     SDL_SCANCODE_KP_9 = 97,
   197     SDL_SCANCODE_KP_0 = 98,
   198     SDL_SCANCODE_KP_PERIOD = 99,
   199 
   200     SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO
   201                                         *   keyboards have over ANSI ones,
   202                                         *   located between left shift and Y.
   203                                         *   Produces GRAVE ACCENT and TILDE in a
   204                                         *   US or UK Mac layout, REVERSE SOLIDUS
   205                                         *   (backslash) and VERTICAL LINE in a
   206                                         *   US or UK Windows layout, and
   207                                         *   LESS-THAN SIGN and GREATER-THAN SIGN
   208                                         *   in a Swiss German, German, or French
   209                                         *   layout. */
   210     SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */
   211     SDL_SCANCODE_POWER = 102, /**< The USB document says this is a status flag,
   212                                *   not a physical key - but some Mac keyboards
   213                                *   do have a power key. */
   214     SDL_SCANCODE_KP_EQUALS = 103,
   215     SDL_SCANCODE_F13 = 104,
   216     SDL_SCANCODE_F14 = 105,
   217     SDL_SCANCODE_F15 = 106,
   218     SDL_SCANCODE_F16 = 107,
   219     SDL_SCANCODE_F17 = 108,
   220     SDL_SCANCODE_F18 = 109,
   221     SDL_SCANCODE_F19 = 110,
   222     SDL_SCANCODE_F20 = 111,
   223     SDL_SCANCODE_F21 = 112,
   224     SDL_SCANCODE_F22 = 113,
   225     SDL_SCANCODE_F23 = 114,
   226     SDL_SCANCODE_F24 = 115,
   227     SDL_SCANCODE_EXECUTE = 116,
   228     SDL_SCANCODE_HELP = 117,
   229     SDL_SCANCODE_MENU = 118,
   230     SDL_SCANCODE_SELECT = 119,
   231     SDL_SCANCODE_STOP = 120,
   232     SDL_SCANCODE_AGAIN = 121,   /**< redo */
   233     SDL_SCANCODE_UNDO = 122,
   234     SDL_SCANCODE_CUT = 123,
   235     SDL_SCANCODE_COPY = 124,
   236     SDL_SCANCODE_PASTE = 125,
   237     SDL_SCANCODE_FIND = 126,
   238     SDL_SCANCODE_MUTE = 127,
   239     SDL_SCANCODE_VOLUMEUP = 128,
   240     SDL_SCANCODE_VOLUMEDOWN = 129,
   241 /* not sure whether there's a reason to enable these */
   242 /*     SDL_SCANCODE_LOCKINGCAPSLOCK = 130,  */
   243 /*     SDL_SCANCODE_LOCKINGNUMLOCK = 131, */
   244 /*     SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */
   245     SDL_SCANCODE_KP_COMMA = 133,
   246     SDL_SCANCODE_KP_EQUALSAS400 = 134,
   247 
   248     SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see
   249                                             footnotes in USB doc */
   250     SDL_SCANCODE_INTERNATIONAL2 = 136,
   251     SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */
   252     SDL_SCANCODE_INTERNATIONAL4 = 138,
   253     SDL_SCANCODE_INTERNATIONAL5 = 139,
   254     SDL_SCANCODE_INTERNATIONAL6 = 140,
   255     SDL_SCANCODE_INTERNATIONAL7 = 141,
   256     SDL_SCANCODE_INTERNATIONAL8 = 142,
   257     SDL_SCANCODE_INTERNATIONAL9 = 143,
   258     SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */
   259     SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */
   260     SDL_SCANCODE_LANG3 = 146, /**< Katakana */
   261     SDL_SCANCODE_LANG4 = 147, /**< Hiragana */
   262     SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */
   263     SDL_SCANCODE_LANG6 = 149, /**< reserved */
   264     SDL_SCANCODE_LANG7 = 150, /**< reserved */
   265     SDL_SCANCODE_LANG8 = 151, /**< reserved */
   266     SDL_SCANCODE_LANG9 = 152, /**< reserved */
   267 
   268     SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */
   269     SDL_SCANCODE_SYSREQ = 154,
   270     SDL_SCANCODE_CANCEL = 155,
   271     SDL_SCANCODE_CLEAR = 156,
   272     SDL_SCANCODE_PRIOR = 157,
   273     SDL_SCANCODE_RETURN2 = 158,
   274     SDL_SCANCODE_SEPARATOR = 159,
   275     SDL_SCANCODE_OUT = 160,
   276     SDL_SCANCODE_OPER = 161,
   277     SDL_SCANCODE_CLEARAGAIN = 162,
   278     SDL_SCANCODE_CRSEL = 163,
   279     SDL_SCANCODE_EXSEL = 164,
   280 
   281     SDL_SCANCODE_KP_00 = 176,
   282     SDL_SCANCODE_KP_000 = 177,
   283     SDL_SCANCODE_THOUSANDSSEPARATOR = 178,
   284     SDL_SCANCODE_DECIMALSEPARATOR = 179,
   285     SDL_SCANCODE_CURRENCYUNIT = 180,
   286     SDL_SCANCODE_CURRENCYSUBUNIT = 181,
   287     SDL_SCANCODE_KP_LEFTPAREN = 182,
   288     SDL_SCANCODE_KP_RIGHTPAREN = 183,
   289     SDL_SCANCODE_KP_LEFTBRACE = 184,
   290     SDL_SCANCODE_KP_RIGHTBRACE = 185,
   291     SDL_SCANCODE_KP_TAB = 186,
   292     SDL_SCANCODE_KP_BACKSPACE = 187,
   293     SDL_SCANCODE_KP_A = 188,
   294     SDL_SCANCODE_KP_B = 189,
   295     SDL_SCANCODE_KP_C = 190,
   296     SDL_SCANCODE_KP_D = 191,
   297     SDL_SCANCODE_KP_E = 192,
   298     SDL_SCANCODE_KP_F = 193,
   299     SDL_SCANCODE_KP_XOR = 194,
   300     SDL_SCANCODE_KP_POWER = 195,
   301     SDL_SCANCODE_KP_PERCENT = 196,
   302     SDL_SCANCODE_KP_LESS = 197,
   303     SDL_SCANCODE_KP_GREATER = 198,
   304     SDL_SCANCODE_KP_AMPERSAND = 199,
   305     SDL_SCANCODE_KP_DBLAMPERSAND = 200,
   306     SDL_SCANCODE_KP_VERTICALBAR = 201,
   307     SDL_SCANCODE_KP_DBLVERTICALBAR = 202,
   308     SDL_SCANCODE_KP_COLON = 203,
   309     SDL_SCANCODE_KP_HASH = 204,
   310     SDL_SCANCODE_KP_SPACE = 205,
   311     SDL_SCANCODE_KP_AT = 206,
   312     SDL_SCANCODE_KP_EXCLAM = 207,
   313     SDL_SCANCODE_KP_MEMSTORE = 208,
   314     SDL_SCANCODE_KP_MEMRECALL = 209,
   315     SDL_SCANCODE_KP_MEMCLEAR = 210,
   316     SDL_SCANCODE_KP_MEMADD = 211,
   317     SDL_SCANCODE_KP_MEMSUBTRACT = 212,
   318     SDL_SCANCODE_KP_MEMMULTIPLY = 213,
   319     SDL_SCANCODE_KP_MEMDIVIDE = 214,
   320     SDL_SCANCODE_KP_PLUSMINUS = 215,
   321     SDL_SCANCODE_KP_CLEAR = 216,
   322     SDL_SCANCODE_KP_CLEARENTRY = 217,
   323     SDL_SCANCODE_KP_BINARY = 218,
   324     SDL_SCANCODE_KP_OCTAL = 219,
   325     SDL_SCANCODE_KP_DECIMAL = 220,
   326     SDL_SCANCODE_KP_HEXADECIMAL = 221,
   327 
   328     SDL_SCANCODE_LCTRL = 224,
   329     SDL_SCANCODE_LSHIFT = 225,
   330     SDL_SCANCODE_LALT = 226, /**< alt, option */
   331     SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */
   332     SDL_SCANCODE_RCTRL = 228,
   333     SDL_SCANCODE_RSHIFT = 229,
   334     SDL_SCANCODE_RALT = 230, /**< alt gr, option */
   335     SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */
   336 
   337     SDL_SCANCODE_MODE = 257,    /**< I'm not sure if this is really not covered
   338                                  *   by any of the above, but since there's a
   339                                  *   special KMOD_MODE for it I'm adding it here
   340                                  */
   341 
   342     /* @} *//* Usage page 0x07 */
   343 
   344     /**
   345      *  \name Usage page 0x0C
   346      *
   347      *  These values are mapped from usage page 0x0C (USB consumer page).
   348      */
   349     /* @{ */
   350 
   351     SDL_SCANCODE_AUDIONEXT = 258,
   352     SDL_SCANCODE_AUDIOPREV = 259,
   353     SDL_SCANCODE_AUDIOSTOP = 260,
   354     SDL_SCANCODE_AUDIOPLAY = 261,
   355     SDL_SCANCODE_AUDIOMUTE = 262,
   356     SDL_SCANCODE_MEDIASELECT = 263,
   357     SDL_SCANCODE_WWW = 264,
   358     SDL_SCANCODE_MAIL = 265,
   359     SDL_SCANCODE_CALCULATOR = 266,
   360     SDL_SCANCODE_COMPUTER = 267,
   361     SDL_SCANCODE_AC_SEARCH = 268,
   362     SDL_SCANCODE_AC_HOME = 269,
   363     SDL_SCANCODE_AC_BACK = 270,
   364     SDL_SCANCODE_AC_FORWARD = 271,
   365     SDL_SCANCODE_AC_STOP = 272,
   366     SDL_SCANCODE_AC_REFRESH = 273,
   367     SDL_SCANCODE_AC_BOOKMARKS = 274,
   368 
   369     /* @} *//* Usage page 0x0C */
   370 
   371     /**
   372      *  \name Walther keys
   373      *
   374      *  These are values that Christian Walther added (for mac keyboard?).
   375      */
   376     /* @{ */
   377 
   378     SDL_SCANCODE_BRIGHTNESSDOWN = 275,
   379     SDL_SCANCODE_BRIGHTNESSUP = 276,
   380     SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display
   381                                            switch, video mode switch */
   382     SDL_SCANCODE_KBDILLUMTOGGLE = 278,
   383     SDL_SCANCODE_KBDILLUMDOWN = 279,
   384     SDL_SCANCODE_KBDILLUMUP = 280,
   385     SDL_SCANCODE_EJECT = 281,
   386     SDL_SCANCODE_SLEEP = 282,
   387 
   388     SDL_SCANCODE_APP1 = 283,
   389     SDL_SCANCODE_APP2 = 284,
   390 
   391     /* @} *//* Walther keys */
   392 
   393     /**
   394      *  \name Usage page 0x0C (additional media keys)
   395      *
   396      *  These values are mapped from usage page 0x0C (USB consumer page).
   397      */
   398     /* @{ */
   399 
   400     SDL_SCANCODE_AUDIOREWIND = 285,
   401     SDL_SCANCODE_AUDIOFASTFORWARD = 286,
   402 
   403     /* @} *//* Usage page 0x0C (additional media keys) */
   404 
   405     /* Add any other keys here. */
   406 
   407     SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes
   408                                  for array bounds */
   409 } SDL_Scancode;
   410 
   411 #endif /* SDL_scancode_h_ */
   412 
   413 /* vi: set ts=4 sw=4 expandtab: */