aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2018-01-05 16:32:06 +0100
committerLoïc Hoguin <[email protected]>2018-01-05 16:32:06 +0100
commit30cd5551c4cdc7a2d9bbc92dfbc0313764d2bdad (patch)
tree328202812f754455471c883b7f8ab6b68f0f895f /include
parent435845af18dead29addb2d88e32bf919011a0a51 (diff)
downloadesdl2-30cd5551c4cdc7a2d9bbc92dfbc0313764d2bdad.tar.gz
esdl2-30cd5551c4cdc7a2d9bbc92dfbc0313764d2bdad.tar.bz2
esdl2-30cd5551c4cdc7a2d9bbc92dfbc0313764d2bdad.zip
Add the remaining keyboard functions
Also adds defines for all the keycode and scancode in SDL 2.0.7.
Diffstat (limited to 'include')
-rw-r--r--include/sdl_keycode.hrl261
-rw-r--r--include/sdl_scancode.hrl261
2 files changed, 522 insertions, 0 deletions
diff --git a/include/sdl_keycode.hrl b/include/sdl_keycode.hrl
new file mode 100644
index 0000000..f33765c
--- /dev/null
+++ b/include/sdl_keycode.hrl
@@ -0,0 +1,261 @@
+%% Copyright (c) 2018, Loïc Hoguin <[email protected]>
+%%
+%% Permission to use, copy, modify, and/or distribute this software for any
+%% purpose with or without fee is hereby granted, provided that the above
+%% copyright notice and this permission notice appear in all copies.
+%%
+%% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+%% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+%% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+%% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+%% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+%% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-ifndef(__SDL_KEYCODE_HRL__).
+-define(__SDL_KEYCODE_HRL__, 1).
+
+-define(SDLK_SCANCODE_MASK, (1 bsl 30)).
+-define(SDL_SCANCODE_TO_KEYCODE(X), (X bor ?SDLK_SCANCODE_MASK)).
+
+-define(SDLK_RETURN, $\r).
+-define(SDLK_ESCAPE, $\033).
+-define(SDLK_BACKSPACE, $\b).
+-define(SDLK_TAB, $\t).
+-define(SDLK_SPACE, $ ).
+-define(SDLK_EXCLAIM, $!).
+-define(SDLK_QUOTEDBL, $").
+-define(SDLK_HASH, $#).
+-define(SDLK_PERCENT, $%).
+-define(SDLK_DOLLAR, $$).
+-define(SDLK_AMPERSAND, $&).
+-define(SDLK_QUOTE, $').
+-define(SDLK_LEFTPAREN, $().
+-define(SDLK_RIGHTPAREN, $)).
+-define(SDLK_ASTERISK, $*).
+-define(SDLK_PLUS, $+).
+-define(SDLK_COMMA, $,).
+-define(SDLK_MINUS, $-).
+-define(SDLK_PERIOD, $.).
+-define(SDLK_SLASH, $/).
+-define(SDLK_0, $0).
+-define(SDLK_1, $1).
+-define(SDLK_2, $2).
+-define(SDLK_3, $3).
+-define(SDLK_4, $4).
+-define(SDLK_5, $5).
+-define(SDLK_6, $6).
+-define(SDLK_7, $7).
+-define(SDLK_8, $8).
+-define(SDLK_9, $9).
+-define(SDLK_COLON, $:).
+-define(SDLK_SEMICOLON, $;).
+-define(SDLK_LESS, $<).
+-define(SDLK_EQUALS, $=).
+-define(SDLK_GREATER, $>).
+-define(SDLK_QUESTION, $?).
+-define(SDLK_AT, $@).
+-define(SDLK_LEFTBRACKET, $[).
+-define(SDLK_BACKSLASH, $\\).
+-define(SDLK_RIGHTBRACKET, $]).
+-define(SDLK_CARET, $^).
+-define(SDLK_UNDERSCORE, $_).
+-define(SDLK_BACKQUOTE, $`).
+-define(SDLK_a, $a).
+-define(SDLK_b, $b).
+-define(SDLK_c, $c).
+-define(SDLK_d, $d).
+-define(SDLK_e, $e).
+-define(SDLK_f, $f).
+-define(SDLK_g, $g).
+-define(SDLK_h, $h).
+-define(SDLK_i, $i).
+-define(SDLK_j, $j).
+-define(SDLK_k, $k).
+-define(SDLK_l, $l).
+-define(SDLK_m, $m).
+-define(SDLK_n, $n).
+-define(SDLK_o, $o).
+-define(SDLK_p, $p).
+-define(SDLK_q, $q).
+-define(SDLK_r, $r).
+-define(SDLK_s, $s).
+-define(SDLK_t, $t).
+-define(SDLK_u, $u).
+-define(SDLK_v, $v).
+-define(SDLK_w, $w).
+-define(SDLK_x, $x).
+-define(SDLK_y, $y).
+-define(SDLK_z, $z).
+-define(SDLK_CAPSLOCK, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_CAPSLOCK)).
+-define(SDLK_F1, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F1)).
+-define(SDLK_F2, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F2)).
+-define(SDLK_F3, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F3)).
+-define(SDLK_F4, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F4)).
+-define(SDLK_F5, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F5)).
+-define(SDLK_F6, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F6)).
+-define(SDLK_F7, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F7)).
+-define(SDLK_F8, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F8)).
+-define(SDLK_F9, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F9)).
+-define(SDLK_F10, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F10)).
+-define(SDLK_F11, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F11)).
+-define(SDLK_F12, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F12)).
+-define(SDLK_PRINTSCREEN, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_PRINTSCREEN)).
+-define(SDLK_SCROLLLOCK, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_SCROLLLOCK)).
+-define(SDLK_PAUSE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_PAUSE)).
+-define(SDLK_INSERT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_INSERT)).
+-define(SDLK_HOME, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_HOME)).
+-define(SDLK_PAGEUP, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_PAGEUP)).
+-define(SDLK_DELETE, $\177).
+-define(SDLK_END, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_END)).
+-define(SDLK_PAGEDOWN, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_PAGEDOWN)).
+-define(SDLK_RIGHT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_RIGHT)).
+-define(SDLK_LEFT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_LEFT)).
+-define(SDLK_DOWN, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_DOWN)).
+-define(SDLK_UP, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_UP)).
+-define(SDLK_NUMLOCKCLEAR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_NUMLOCKCLEAR)).
+-define(SDLK_KP_DIVIDE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_DIVIDE)).
+-define(SDLK_KP_MULTIPLY, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_MULTIPLY)).
+-define(SDLK_KP_MINUS, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_MINUS)).
+-define(SDLK_KP_PLUS, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_PLUS)).
+-define(SDLK_KP_ENTER, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_ENTER)).
+-define(SDLK_KP_1, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_1)).
+-define(SDLK_KP_2, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_2)).
+-define(SDLK_KP_3, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_3)).
+-define(SDLK_KP_4, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_4)).
+-define(SDLK_KP_5, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_5)).
+-define(SDLK_KP_6, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_6)).
+-define(SDLK_KP_7, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_7)).
+-define(SDLK_KP_8, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_8)).
+-define(SDLK_KP_9, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_9)).
+-define(SDLK_KP_0, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_0)).
+-define(SDLK_KP_PERIOD, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_PERIOD)).
+-define(SDLK_APPLICATION, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_APPLICATION)).
+-define(SDLK_POWER, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_POWER)).
+-define(SDLK_KP_EQUALS, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_EQUALS)).
+-define(SDLK_F13, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F13)).
+-define(SDLK_F14, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F14)).
+-define(SDLK_F15, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F15)).
+-define(SDLK_F16, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F16)).
+-define(SDLK_F17, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F17)).
+-define(SDLK_F18, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F18)).
+-define(SDLK_F19, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F19)).
+-define(SDLK_F20, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F20)).
+-define(SDLK_F21, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F21)).
+-define(SDLK_F22, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F22)).
+-define(SDLK_F23, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F23)).
+-define(SDLK_F24, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_F24)).
+-define(SDLK_EXECUTE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_EXECUTE)).
+-define(SDLK_HELP, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_HELP)).
+-define(SDLK_MENU, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_MENU)).
+-define(SDLK_SELECT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_SELECT)).
+-define(SDLK_STOP, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_STOP)).
+-define(SDLK_AGAIN, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AGAIN)).
+-define(SDLK_UNDO, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_UNDO)).
+-define(SDLK_CUT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_CUT)).
+-define(SDLK_COPY, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_COPY)).
+-define(SDLK_PASTE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_PASTE)).
+-define(SDLK_FIND, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_FIND)).
+-define(SDLK_MUTE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_MUTE)).
+-define(SDLK_VOLUMEUP, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_VOLUMEUP)).
+-define(SDLK_VOLUMEDOWN, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_VOLUMEDOWN)).
+-define(SDLK_KP_COMMA, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_COMMA)).
+-define(SDLK_KP_EQUALSAS400, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_EQUALSAS400)).
+-define(SDLK_ALTERASE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_ALTERASE)).
+-define(SDLK_SYSREQ, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_SYSREQ)).
+-define(SDLK_CANCEL, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_CANCEL)).
+-define(SDLK_CLEAR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_CLEAR)).
+-define(SDLK_PRIOR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_PRIOR)).
+-define(SDLK_RETURN2, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_RETURN2)).
+-define(SDLK_SEPARATOR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_SEPARATOR)).
+-define(SDLK_OUT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_OUT)).
+-define(SDLK_OPER, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_OPER)).
+-define(SDLK_CLEARAGAIN, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_CLEARAGAIN)).
+-define(SDLK_CRSEL, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_CRSEL)).
+-define(SDLK_EXSEL, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_EXSEL)).
+-define(SDLK_KP_00, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_00)).
+-define(SDLK_KP_000, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_000)).
+-define(SDLK_THOUSANDSSEPARATOR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_THOUSANDSSEPARATOR)).
+-define(SDLK_DECIMALSEPARATOR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_DECIMALSEPARATOR)).
+-define(SDLK_CURRENCYUNIT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_CURRENCYUNIT)).
+-define(SDLK_CURRENCYSUBUNIT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_CURRENCYSUBUNIT)).
+-define(SDLK_KP_LEFTPAREN, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_LEFTPAREN)).
+-define(SDLK_KP_RIGHTPAREN, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_RIGHTPAREN)).
+-define(SDLK_KP_LEFTBRACE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_LEFTBRACE)).
+-define(SDLK_KP_RIGHTBRACE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_RIGHTBRACE)).
+-define(SDLK_KP_TAB, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_TAB)).
+-define(SDLK_KP_BACKSPACE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_BACKSPACE)).
+-define(SDLK_KP_A, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_A)).
+-define(SDLK_KP_B, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_B)).
+-define(SDLK_KP_C, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_C)).
+-define(SDLK_KP_D, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_D)).
+-define(SDLK_KP_E, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_E)).
+-define(SDLK_KP_F, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_F)).
+-define(SDLK_KP_XOR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_XOR)).
+-define(SDLK_KP_POWER, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_POWER)).
+-define(SDLK_KP_PERCENT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_PERCENT)).
+-define(SDLK_KP_LESS, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_LESS)).
+-define(SDLK_KP_GREATER, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_GREATER)).
+-define(SDLK_KP_AMPERSAND, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_AMPERSAND)).
+-define(SDLK_KP_DBLAMPERSAND, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_DBLAMPERSAND)).
+-define(SDLK_KP_VERTICALBAR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_VERTICALBAR)).
+-define(SDLK_KP_DBLVERTICALBAR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_DBLVERTICALBAR)).
+-define(SDLK_KP_COLON, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_COLON)).
+-define(SDLK_KP_HASH, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_HASH)).
+-define(SDLK_KP_SPACE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_SPACE)).
+-define(SDLK_KP_AT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_AT)).
+-define(SDLK_KP_EXCLAM, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_EXCLAM)).
+-define(SDLK_KP_MEMSTORE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_MEMSTORE)).
+-define(SDLK_KP_MEMRECALL, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_MEMRECALL)).
+-define(SDLK_KP_MEMCLEAR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_MEMCLEAR)).
+-define(SDLK_KP_MEMADD, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_MEMADD)).
+-define(SDLK_KP_MEMSUBTRACT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_MEMSUBTRACT)).
+-define(SDLK_KP_MEMMULTIPLY, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_MEMMULTIPLY)).
+-define(SDLK_KP_MEMDIVIDE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_MEMDIVIDE)).
+-define(SDLK_KP_PLUSMINUS, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_PLUSMINUS)).
+-define(SDLK_KP_CLEAR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_CLEAR)).
+-define(SDLK_KP_CLEARENTRY, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_CLEARENTRY)).
+-define(SDLK_KP_BINARY, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_BINARY)).
+-define(SDLK_KP_OCTAL, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_OCTAL)).
+-define(SDLK_KP_DECIMAL, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_DECIMAL)).
+-define(SDLK_KP_HEXADECIMAL, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KP_HEXADECIMAL)).
+-define(SDLK_LCTRL, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_LCTRL)).
+-define(SDLK_LSHIFT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_LSHIFT)).
+-define(SDLK_LALT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_LALT)).
+-define(SDLK_LGUI, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_LGUI)).
+-define(SDLK_RCTRL, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_RCTRL)).
+-define(SDLK_RSHIFT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_RSHIFT)).
+-define(SDLK_RALT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_RALT)).
+-define(SDLK_RGUI, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_RGUI)).
+-define(SDLK_MODE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_MODE)).
+-define(SDLK_AUDIONEXT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AUDIONEXT)).
+-define(SDLK_AUDIOPREV, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AUDIOPREV)).
+-define(SDLK_AUDIOSTOP, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AUDIOSTOP)).
+-define(SDLK_AUDIOPLAY, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AUDIOPLAY)).
+-define(SDLK_AUDIOMUTE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AUDIOMUTE)).
+-define(SDLK_MEDIASELECT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_MEDIASELECT)).
+-define(SDLK_WWW, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_WWW)).
+-define(SDLK_MAIL, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_MAIL)).
+-define(SDLK_CALCULATOR, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_CALCULATOR)).
+-define(SDLK_COMPUTER, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_COMPUTER)).
+-define(SDLK_AC_SEARCH, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AC_SEARCH)).
+-define(SDLK_AC_HOME, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AC_HOME)).
+-define(SDLK_AC_BACK, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AC_BACK)).
+-define(SDLK_AC_FORWARD, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AC_FORWARD)).
+-define(SDLK_AC_STOP, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AC_STOP)).
+-define(SDLK_AC_REFRESH, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AC_REFRESH)).
+-define(SDLK_AC_BOOKMARKS, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AC_BOOKMARKS)).
+-define(SDLK_BRIGHTNESSDOWN, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_BRIGHTNESSDOWN)).
+-define(SDLK_BRIGHTNESSUP, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_BRIGHTNESSUP)).
+-define(SDLK_DISPLAYSWITCH, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_DISPLAYSWITCH)).
+-define(SDLK_KBDILLUMTOGGLE, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KBDILLUMTOGGLE)).
+-define(SDLK_KBDILLUMDOWN, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KBDILLUMDOWN)).
+-define(SDLK_KBDILLUMUP, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_KBDILLUMUP)).
+-define(SDLK_EJECT, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_EJECT)).
+-define(SDLK_SLEEP, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_SLEEP)).
+-define(SDLK_APP1, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_APP1)).
+-define(SDLK_APP2, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_APP2)).
+-define(SDLK_AUDIOREWIND, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AUDIOREWIND)).
+-define(SDLK_AUDIOFASTFORWARD, ?SDL_SCANCODE_TO_KEYCODE(?SDL_SCANCODE_AUDIOFASTFORWARD)).
+
+-endif.
diff --git a/include/sdl_scancode.hrl b/include/sdl_scancode.hrl
new file mode 100644
index 0000000..54f9df6
--- /dev/null
+++ b/include/sdl_scancode.hrl
@@ -0,0 +1,261 @@
+%% Copyright (c) 2018, Loïc Hoguin <[email protected]>
+%%
+%% Permission to use, copy, modify, and/or distribute this software for any
+%% purpose with or without fee is hereby granted, provided that the above
+%% copyright notice and this permission notice appear in all copies.
+%%
+%% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+%% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+%% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+%% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+%% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+%% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-ifndef(__SDL_SCANCODE_HRL__).
+-define(__SDL_SCANCODE_HRL__, 1).
+
+-define(SDL_SCANCODE_A, 4).
+-define(SDL_SCANCODE_B, 5).
+-define(SDL_SCANCODE_C, 6).
+-define(SDL_SCANCODE_D, 7).
+-define(SDL_SCANCODE_E, 8).
+-define(SDL_SCANCODE_F, 9).
+-define(SDL_SCANCODE_G, 10).
+-define(SDL_SCANCODE_H, 11).
+-define(SDL_SCANCODE_I, 12).
+-define(SDL_SCANCODE_J, 13).
+-define(SDL_SCANCODE_K, 14).
+-define(SDL_SCANCODE_L, 15).
+-define(SDL_SCANCODE_M, 16).
+-define(SDL_SCANCODE_N, 17).
+-define(SDL_SCANCODE_O, 18).
+-define(SDL_SCANCODE_P, 19).
+-define(SDL_SCANCODE_Q, 20).
+-define(SDL_SCANCODE_R, 21).
+-define(SDL_SCANCODE_S, 22).
+-define(SDL_SCANCODE_T, 23).
+-define(SDL_SCANCODE_U, 24).
+-define(SDL_SCANCODE_V, 25).
+-define(SDL_SCANCODE_W, 26).
+-define(SDL_SCANCODE_X, 27).
+-define(SDL_SCANCODE_Y, 28).
+-define(SDL_SCANCODE_Z, 29).
+-define(SDL_SCANCODE_1, 30).
+-define(SDL_SCANCODE_2, 31).
+-define(SDL_SCANCODE_3, 32).
+-define(SDL_SCANCODE_4, 33).
+-define(SDL_SCANCODE_5, 34).
+-define(SDL_SCANCODE_6, 35).
+-define(SDL_SCANCODE_7, 36).
+-define(SDL_SCANCODE_8, 37).
+-define(SDL_SCANCODE_9, 38).
+-define(SDL_SCANCODE_0, 39).
+-define(SDL_SCANCODE_RETURN, 40).
+-define(SDL_SCANCODE_ESCAPE, 41).
+-define(SDL_SCANCODE_BACKSPACE, 42).
+-define(SDL_SCANCODE_TAB, 43).
+-define(SDL_SCANCODE_SPACE, 44).
+-define(SDL_SCANCODE_MINUS, 45).
+-define(SDL_SCANCODE_EQUALS, 46).
+-define(SDL_SCANCODE_LEFTBRACKET, 47).
+-define(SDL_SCANCODE_RIGHTBRACKET, 48).
+-define(SDL_SCANCODE_BACKSLASH, 49).
+-define(SDL_SCANCODE_NONUSHASH, 50).
+-define(SDL_SCANCODE_SEMICOLON, 51).
+-define(SDL_SCANCODE_APOSTROPHE, 52).
+-define(SDL_SCANCODE_GRAVE, 53).
+-define(SDL_SCANCODE_COMMA, 54).
+-define(SDL_SCANCODE_PERIOD, 55).
+-define(SDL_SCANCODE_SLASH, 56).
+-define(SDL_SCANCODE_CAPSLOCK, 57).
+-define(SDL_SCANCODE_F1, 58).
+-define(SDL_SCANCODE_F2, 59).
+-define(SDL_SCANCODE_F3, 60).
+-define(SDL_SCANCODE_F4, 61).
+-define(SDL_SCANCODE_F5, 62).
+-define(SDL_SCANCODE_F6, 63).
+-define(SDL_SCANCODE_F7, 64).
+-define(SDL_SCANCODE_F8, 65).
+-define(SDL_SCANCODE_F9, 66).
+-define(SDL_SCANCODE_F10, 67).
+-define(SDL_SCANCODE_F11, 68).
+-define(SDL_SCANCODE_F12, 69).
+-define(SDL_SCANCODE_PRINTSCREEN, 70).
+-define(SDL_SCANCODE_SCROLLLOCK, 71).
+-define(SDL_SCANCODE_PAUSE, 72).
+-define(SDL_SCANCODE_INSERT, 73).
+-define(SDL_SCANCODE_HOME, 74).
+-define(SDL_SCANCODE_PAGEUP, 75).
+-define(SDL_SCANCODE_DELETE, 76).
+-define(SDL_SCANCODE_END, 77).
+-define(SDL_SCANCODE_PAGEDOWN, 78).
+-define(SDL_SCANCODE_RIGHT, 79).
+-define(SDL_SCANCODE_LEFT, 80).
+-define(SDL_SCANCODE_DOWN, 81).
+-define(SDL_SCANCODE_UP, 82).
+-define(SDL_SCANCODE_NUMLOCKCLEAR, 83).
+-define(SDL_SCANCODE_KP_DIVIDE, 84).
+-define(SDL_SCANCODE_KP_MULTIPLY, 85).
+-define(SDL_SCANCODE_KP_MINUS, 86).
+-define(SDL_SCANCODE_KP_PLUS, 87).
+-define(SDL_SCANCODE_KP_ENTER, 88).
+-define(SDL_SCANCODE_KP_1, 89).
+-define(SDL_SCANCODE_KP_2, 90).
+-define(SDL_SCANCODE_KP_3, 91).
+-define(SDL_SCANCODE_KP_4, 92).
+-define(SDL_SCANCODE_KP_5, 93).
+-define(SDL_SCANCODE_KP_6, 94).
+-define(SDL_SCANCODE_KP_7, 95).
+-define(SDL_SCANCODE_KP_8, 96).
+-define(SDL_SCANCODE_KP_9, 97).
+-define(SDL_SCANCODE_KP_0, 98).
+-define(SDL_SCANCODE_KP_PERIOD, 99).
+-define(SDL_SCANCODE_NONUSBACKSLASH, 100).
+-define(SDL_SCANCODE_APPLICATION, 101).
+-define(SDL_SCANCODE_POWER, 102).
+-define(SDL_SCANCODE_KP_EQUALS, 103).
+-define(SDL_SCANCODE_F13, 104).
+-define(SDL_SCANCODE_F14, 105).
+-define(SDL_SCANCODE_F15, 106).
+-define(SDL_SCANCODE_F16, 107).
+-define(SDL_SCANCODE_F17, 108).
+-define(SDL_SCANCODE_F18, 109).
+-define(SDL_SCANCODE_F19, 110).
+-define(SDL_SCANCODE_F20, 111).
+-define(SDL_SCANCODE_F21, 112).
+-define(SDL_SCANCODE_F22, 113).
+-define(SDL_SCANCODE_F23, 114).
+-define(SDL_SCANCODE_F24, 115).
+-define(SDL_SCANCODE_EXECUTE, 116).
+-define(SDL_SCANCODE_HELP, 117).
+-define(SDL_SCANCODE_MENU, 118).
+-define(SDL_SCANCODE_SELECT, 119).
+-define(SDL_SCANCODE_STOP, 120).
+-define(SDL_SCANCODE_AGAIN, 121).
+-define(SDL_SCANCODE_UNDO, 122).
+-define(SDL_SCANCODE_CUT, 123).
+-define(SDL_SCANCODE_COPY, 124).
+-define(SDL_SCANCODE_PASTE, 125).
+-define(SDL_SCANCODE_FIND, 126).
+-define(SDL_SCANCODE_MUTE, 127).
+-define(SDL_SCANCODE_VOLUMEUP, 128).
+-define(SDL_SCANCODE_VOLUMEDOWN, 129).
+-define(SDL_SCANCODE_KP_COMMA, 133).
+-define(SDL_SCANCODE_KP_EQUALSAS400, 134).
+-define(SDL_SCANCODE_INTERNATIONAL1, 135).
+-define(SDL_SCANCODE_INTERNATIONAL2, 136).
+-define(SDL_SCANCODE_INTERNATIONAL3, 137).
+-define(SDL_SCANCODE_INTERNATIONAL4, 138).
+-define(SDL_SCANCODE_INTERNATIONAL5, 139).
+-define(SDL_SCANCODE_INTERNATIONAL6, 140).
+-define(SDL_SCANCODE_INTERNATIONAL7, 141).
+-define(SDL_SCANCODE_INTERNATIONAL8, 142).
+-define(SDL_SCANCODE_INTERNATIONAL9, 143).
+-define(SDL_SCANCODE_LANG1, 144).
+-define(SDL_SCANCODE_LANG2, 145).
+-define(SDL_SCANCODE_LANG3, 146).
+-define(SDL_SCANCODE_LANG4, 147).
+-define(SDL_SCANCODE_LANG5, 148).
+-define(SDL_SCANCODE_LANG6, 149).
+-define(SDL_SCANCODE_LANG7, 150).
+-define(SDL_SCANCODE_LANG8, 151).
+-define(SDL_SCANCODE_LANG9, 152).
+-define(SDL_SCANCODE_ALTERASE, 153).
+-define(SDL_SCANCODE_SYSREQ, 154).
+-define(SDL_SCANCODE_CANCEL, 155).
+-define(SDL_SCANCODE_CLEAR, 156).
+-define(SDL_SCANCODE_PRIOR, 157).
+-define(SDL_SCANCODE_RETURN2, 158).
+-define(SDL_SCANCODE_SEPARATOR, 159).
+-define(SDL_SCANCODE_OUT, 160).
+-define(SDL_SCANCODE_OPER, 161).
+-define(SDL_SCANCODE_CLEARAGAIN, 162).
+-define(SDL_SCANCODE_CRSEL, 163).
+-define(SDL_SCANCODE_EXSEL, 164).
+-define(SDL_SCANCODE_KP_00, 176).
+-define(SDL_SCANCODE_KP_000, 177).
+-define(SDL_SCANCODE_THOUSANDSSEPARATOR, 178).
+-define(SDL_SCANCODE_DECIMALSEPARATOR, 179).
+-define(SDL_SCANCODE_CURRENCYUNIT, 180).
+-define(SDL_SCANCODE_CURRENCYSUBUNIT, 181).
+-define(SDL_SCANCODE_KP_LEFTPAREN, 182).
+-define(SDL_SCANCODE_KP_RIGHTPAREN, 183).
+-define(SDL_SCANCODE_KP_LEFTBRACE, 184).
+-define(SDL_SCANCODE_KP_RIGHTBRACE, 185).
+-define(SDL_SCANCODE_KP_TAB, 186).
+-define(SDL_SCANCODE_KP_BACKSPACE, 187).
+-define(SDL_SCANCODE_KP_A, 188).
+-define(SDL_SCANCODE_KP_B, 189).
+-define(SDL_SCANCODE_KP_C, 190).
+-define(SDL_SCANCODE_KP_D, 191).
+-define(SDL_SCANCODE_KP_E, 192).
+-define(SDL_SCANCODE_KP_F, 193).
+-define(SDL_SCANCODE_KP_XOR, 194).
+-define(SDL_SCANCODE_KP_POWER, 195).
+-define(SDL_SCANCODE_KP_PERCENT, 196).
+-define(SDL_SCANCODE_KP_LESS, 197).
+-define(SDL_SCANCODE_KP_GREATER, 198).
+-define(SDL_SCANCODE_KP_AMPERSAND, 199).
+-define(SDL_SCANCODE_KP_DBLAMPERSAND, 200).
+-define(SDL_SCANCODE_KP_VERTICALBAR, 201).
+-define(SDL_SCANCODE_KP_DBLVERTICALBAR, 202).
+-define(SDL_SCANCODE_KP_COLON, 203).
+-define(SDL_SCANCODE_KP_HASH, 204).
+-define(SDL_SCANCODE_KP_SPACE, 205).
+-define(SDL_SCANCODE_KP_AT, 206).
+-define(SDL_SCANCODE_KP_EXCLAM, 207).
+-define(SDL_SCANCODE_KP_MEMSTORE, 208).
+-define(SDL_SCANCODE_KP_MEMRECALL, 209).
+-define(SDL_SCANCODE_KP_MEMCLEAR, 210).
+-define(SDL_SCANCODE_KP_MEMADD, 211).
+-define(SDL_SCANCODE_KP_MEMSUBTRACT, 212).
+-define(SDL_SCANCODE_KP_MEMMULTIPLY, 213).
+-define(SDL_SCANCODE_KP_MEMDIVIDE, 214).
+-define(SDL_SCANCODE_KP_PLUSMINUS, 215).
+-define(SDL_SCANCODE_KP_CLEAR, 216).
+-define(SDL_SCANCODE_KP_CLEARENTRY, 217).
+-define(SDL_SCANCODE_KP_BINARY, 218).
+-define(SDL_SCANCODE_KP_OCTAL, 219).
+-define(SDL_SCANCODE_KP_DECIMAL, 220).
+-define(SDL_SCANCODE_KP_HEXADECIMAL, 221).
+-define(SDL_SCANCODE_LCTRL, 224).
+-define(SDL_SCANCODE_LSHIFT, 225).
+-define(SDL_SCANCODE_LALT, 226).
+-define(SDL_SCANCODE_LGUI, 227).
+-define(SDL_SCANCODE_RCTRL, 228).
+-define(SDL_SCANCODE_RSHIFT, 229).
+-define(SDL_SCANCODE_RALT, 230).
+-define(SDL_SCANCODE_RGUI, 231).
+-define(SDL_SCANCODE_MODE, 257).
+-define(SDL_SCANCODE_AUDIONEXT, 258).
+-define(SDL_SCANCODE_AUDIOPREV, 259).
+-define(SDL_SCANCODE_AUDIOSTOP, 260).
+-define(SDL_SCANCODE_AUDIOPLAY, 261).
+-define(SDL_SCANCODE_AUDIOMUTE, 262).
+-define(SDL_SCANCODE_MEDIASELECT, 263).
+-define(SDL_SCANCODE_WWW, 264).
+-define(SDL_SCANCODE_MAIL, 265).
+-define(SDL_SCANCODE_CALCULATOR, 266).
+-define(SDL_SCANCODE_COMPUTER, 267).
+-define(SDL_SCANCODE_AC_SEARCH, 268).
+-define(SDL_SCANCODE_AC_HOME, 269).
+-define(SDL_SCANCODE_AC_BACK, 270).
+-define(SDL_SCANCODE_AC_FORWARD, 271).
+-define(SDL_SCANCODE_AC_STOP, 272).
+-define(SDL_SCANCODE_AC_REFRESH, 273).
+-define(SDL_SCANCODE_AC_BOOKMARKS, 274).
+-define(SDL_SCANCODE_BRIGHTNESSDOWN, 275).
+-define(SDL_SCANCODE_BRIGHTNESSUP, 276).
+-define(SDL_SCANCODE_DISPLAYSWITCH, 277).
+-define(SDL_SCANCODE_KBDILLUMTOGGLE, 278).
+-define(SDL_SCANCODE_KBDILLUMDOWN, 279).
+-define(SDL_SCANCODE_KBDILLUMUP, 280).
+-define(SDL_SCANCODE_EJECT, 281).
+-define(SDL_SCANCODE_SLEEP, 282).
+-define(SDL_SCANCODE_APP1, 283).
+-define(SDL_SCANCODE_APP2, 284).
+-define(SDL_SCANCODE_AUDIOREWIND, 285).
+-define(SDL_SCANCODE_AUDIOFASTFORWARD, 286).
+
+-endif.