123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330 |
- package sdl2
- SCANCODE_MASK :: 1<<30
- SCANCODE_TO_KEYCODE :: #force_inline proc "c" (X: Scancode) -> Keycode {
- return Keycode(i32(X) | SCANCODE_MASK)
- }
- Keycode :: enum i32 {
- UNKNOWN = 0,
- RETURN = '\r',
- ESCAPE = '\x1B',
- BACKSPACE = '\b',
- TAB = '\t',
- SPACE = ' ',
- EXCLAIM = '!',
- QUOTEDBL = '"',
- HASH = '#',
- PERCENT = '%',
- DOLLAR = '$',
- AMPERSAND = '&',
- QUOTE = '\'',
- LEFTPAREN = '(',
- RIGHTPAREN = ')',
- ASTERISK = '*',
- PLUS = '+',
- COMMA = ',',
- MINUS = '-',
- PERIOD = '.',
- SLASH = '/',
- NUM0 = '0',
- NUM1 = '1',
- NUM2 = '2',
- NUM3 = '3',
- NUM4 = '4',
- NUM5 = '5',
- NUM6 = '6',
- NUM7 = '7',
- NUM8 = '8',
- NUM9 = '9',
- COLON = ':',
- SEMICOLON = ';',
- LESS = '<',
- EQUALS = '=',
- GREATER = '>',
- QUESTION = '?',
- AT = '@',
- /*
- Skip uppercase letters
- */
- LEFTBRACKET = '[',
- BACKSLASH = '\\',
- RIGHTBRACKET = ']',
- CARET = '^',
- UNDERSCORE = '_',
- BACKQUOTE = '`',
- a = 'a',
- b = 'b',
- c = 'c',
- d = 'd',
- e = 'e',
- f = 'f',
- g = 'g',
- h = 'h',
- i = 'i',
- j = 'j',
- k = 'k',
- l = 'l',
- m = 'm',
- n = 'n',
- o = 'o',
- p = 'p',
- q = 'q',
- r = 'r',
- s = 's',
- t = 't',
- u = 'u',
- v = 'v',
- w = 'w',
- x = 'x',
- y = 'y',
- z = 'z',
- A = a,
- B = b,
- C = c,
- D = d,
- E = e,
- F = f,
- G = g,
- H = h,
- I = i,
- J = j,
- K = k,
- L = l,
- M = m,
- N = n,
- O = o,
- P = p,
- Q = q,
- R = r,
- S = s,
- T = t,
- U = u,
- V = v,
- W = w,
- X = x,
- Y = y,
- Z = z,
- CAPSLOCK = auto_cast (Scancode.CAPSLOCK|SCANCODE_MASK),
- F1 = auto_cast (Scancode.F1|SCANCODE_MASK),
- F2 = auto_cast (Scancode.F2|SCANCODE_MASK),
- F3 = auto_cast (Scancode.F3|SCANCODE_MASK),
- F4 = auto_cast (Scancode.F4|SCANCODE_MASK),
- F5 = auto_cast (Scancode.F5|SCANCODE_MASK),
- F6 = auto_cast (Scancode.F6|SCANCODE_MASK),
- F7 = auto_cast (Scancode.F7|SCANCODE_MASK),
- F8 = auto_cast (Scancode.F8|SCANCODE_MASK),
- F9 = auto_cast (Scancode.F9|SCANCODE_MASK),
- F10 = auto_cast (Scancode.F10|SCANCODE_MASK),
- F11 = auto_cast (Scancode.F11|SCANCODE_MASK),
- F12 = auto_cast (Scancode.F12|SCANCODE_MASK),
- PRINTSCREEN = auto_cast (Scancode.PRINTSCREEN|SCANCODE_MASK),
- SCROLLLOCK = auto_cast (Scancode.SCROLLLOCK|SCANCODE_MASK),
- PAUSE = auto_cast (Scancode.PAUSE|SCANCODE_MASK),
- INSERT = auto_cast (Scancode.INSERT|SCANCODE_MASK),
- HOME = auto_cast (Scancode.HOME|SCANCODE_MASK),
- PAGEUP = auto_cast (Scancode.PAGEUP|SCANCODE_MASK),
- DELETE = '\x7F',
- END = auto_cast (Scancode.END|SCANCODE_MASK),
- PAGEDOWN = auto_cast (Scancode.PAGEDOWN|SCANCODE_MASK),
- RIGHT = auto_cast (Scancode.RIGHT|SCANCODE_MASK),
- LEFT = auto_cast (Scancode.LEFT|SCANCODE_MASK),
- DOWN = auto_cast (Scancode.DOWN|SCANCODE_MASK),
- UP = auto_cast (Scancode.UP|SCANCODE_MASK),
- NUMLOCKCLEAR = auto_cast (Scancode.NUMLOCKCLEAR|SCANCODE_MASK),
- KP_DIVIDE = auto_cast (Scancode.KP_DIVIDE|SCANCODE_MASK),
- KP_MULTIPLY = auto_cast (Scancode.KP_MULTIPLY|SCANCODE_MASK),
- KP_MINUS = auto_cast (Scancode.KP_MINUS|SCANCODE_MASK),
- KP_PLUS = auto_cast (Scancode.KP_PLUS|SCANCODE_MASK),
- KP_ENTER = auto_cast (Scancode.KP_ENTER|SCANCODE_MASK),
- KP_1 = auto_cast (Scancode.KP_1|SCANCODE_MASK),
- KP_2 = auto_cast (Scancode.KP_2|SCANCODE_MASK),
- KP_3 = auto_cast (Scancode.KP_3|SCANCODE_MASK),
- KP_4 = auto_cast (Scancode.KP_4|SCANCODE_MASK),
- KP_5 = auto_cast (Scancode.KP_5|SCANCODE_MASK),
- KP_6 = auto_cast (Scancode.KP_6|SCANCODE_MASK),
- KP_7 = auto_cast (Scancode.KP_7|SCANCODE_MASK),
- KP_8 = auto_cast (Scancode.KP_8|SCANCODE_MASK),
- KP_9 = auto_cast (Scancode.KP_9|SCANCODE_MASK),
- KP_0 = auto_cast (Scancode.KP_0|SCANCODE_MASK),
- KP_PERIOD = auto_cast (Scancode.KP_PERIOD|SCANCODE_MASK),
- APPLICATION = auto_cast (Scancode.APPLICATION|SCANCODE_MASK),
- POWER = auto_cast (Scancode.POWER|SCANCODE_MASK),
- KP_EQUALS = auto_cast (Scancode.KP_EQUALS|SCANCODE_MASK),
- F13 = auto_cast (Scancode.F13|SCANCODE_MASK),
- F14 = auto_cast (Scancode.F14|SCANCODE_MASK),
- F15 = auto_cast (Scancode.F15|SCANCODE_MASK),
- F16 = auto_cast (Scancode.F16|SCANCODE_MASK),
- F17 = auto_cast (Scancode.F17|SCANCODE_MASK),
- F18 = auto_cast (Scancode.F18|SCANCODE_MASK),
- F19 = auto_cast (Scancode.F19|SCANCODE_MASK),
- F20 = auto_cast (Scancode.F20|SCANCODE_MASK),
- F21 = auto_cast (Scancode.F21|SCANCODE_MASK),
- F22 = auto_cast (Scancode.F22|SCANCODE_MASK),
- F23 = auto_cast (Scancode.F23|SCANCODE_MASK),
- F24 = auto_cast (Scancode.F24|SCANCODE_MASK),
- EXECUTE = auto_cast (Scancode.EXECUTE|SCANCODE_MASK),
- HELP = auto_cast (Scancode.HELP|SCANCODE_MASK),
- MENU = auto_cast (Scancode.MENU|SCANCODE_MASK),
- SELECT = auto_cast (Scancode.SELECT|SCANCODE_MASK),
- STOP = auto_cast (Scancode.STOP|SCANCODE_MASK),
- AGAIN = auto_cast (Scancode.AGAIN|SCANCODE_MASK),
- UNDO = auto_cast (Scancode.UNDO|SCANCODE_MASK),
- CUT = auto_cast (Scancode.CUT|SCANCODE_MASK),
- COPY = auto_cast (Scancode.COPY|SCANCODE_MASK),
- PASTE = auto_cast (Scancode.PASTE|SCANCODE_MASK),
- FIND = auto_cast (Scancode.FIND|SCANCODE_MASK),
- MUTE = auto_cast (Scancode.MUTE|SCANCODE_MASK),
- VOLUMEUP = auto_cast (Scancode.VOLUMEUP|SCANCODE_MASK),
- VOLUMEDOWN = auto_cast (Scancode.VOLUMEDOWN|SCANCODE_MASK),
- KP_COMMA = auto_cast (Scancode.KP_COMMA|SCANCODE_MASK),
- KP_EQUALSAS400 = auto_cast (Scancode.KP_EQUALSAS400|SCANCODE_MASK),
- ALTERASE = auto_cast (Scancode.ALTERASE|SCANCODE_MASK),
- SYSREQ = auto_cast (Scancode.SYSREQ|SCANCODE_MASK),
- CANCEL = auto_cast (Scancode.CANCEL|SCANCODE_MASK),
- CLEAR = auto_cast (Scancode.CLEAR|SCANCODE_MASK),
- PRIOR = auto_cast (Scancode.PRIOR|SCANCODE_MASK),
- RETURN2 = auto_cast (Scancode.RETURN2|SCANCODE_MASK),
- SEPARATOR = auto_cast (Scancode.SEPARATOR|SCANCODE_MASK),
- OUT = auto_cast (Scancode.OUT|SCANCODE_MASK),
- OPER = auto_cast (Scancode.OPER|SCANCODE_MASK),
- CLEARAGAIN = auto_cast (Scancode.CLEARAGAIN|SCANCODE_MASK),
- CRSEL = auto_cast (Scancode.CRSEL|SCANCODE_MASK),
- EXSEL = auto_cast (Scancode.EXSEL|SCANCODE_MASK),
- KP_00 = auto_cast (Scancode.KP_00|SCANCODE_MASK),
- KP_000 = auto_cast (Scancode.KP_000|SCANCODE_MASK),
- THOUSANDSSEPARATOR = auto_cast (Scancode.THOUSANDSSEPARATOR|SCANCODE_MASK),
- DECIMALSEPARATOR = auto_cast (Scancode.DECIMALSEPARATOR|SCANCODE_MASK),
- CURRENCYUNIT = auto_cast (Scancode.CURRENCYUNIT|SCANCODE_MASK),
- CURRENCYSUBUNIT = auto_cast (Scancode.CURRENCYSUBUNIT|SCANCODE_MASK),
- KP_LEFTPAREN = auto_cast (Scancode.KP_LEFTPAREN|SCANCODE_MASK),
- KP_RIGHTPAREN = auto_cast (Scancode.KP_RIGHTPAREN|SCANCODE_MASK),
- KP_LEFTBRACE = auto_cast (Scancode.KP_LEFTBRACE|SCANCODE_MASK),
- KP_RIGHTBRACE = auto_cast (Scancode.KP_RIGHTBRACE|SCANCODE_MASK),
- KP_TAB = auto_cast (Scancode.KP_TAB|SCANCODE_MASK),
- KP_BACKSPACE = auto_cast (Scancode.KP_BACKSPACE|SCANCODE_MASK),
- KP_A = auto_cast (Scancode.KP_A|SCANCODE_MASK),
- KP_B = auto_cast (Scancode.KP_B|SCANCODE_MASK),
- KP_C = auto_cast (Scancode.KP_C|SCANCODE_MASK),
- KP_D = auto_cast (Scancode.KP_D|SCANCODE_MASK),
- KP_E = auto_cast (Scancode.KP_E|SCANCODE_MASK),
- KP_F = auto_cast (Scancode.KP_F|SCANCODE_MASK),
- KP_XOR = auto_cast (Scancode.KP_XOR|SCANCODE_MASK),
- KP_POWER = auto_cast (Scancode.KP_POWER|SCANCODE_MASK),
- KP_PERCENT = auto_cast (Scancode.KP_PERCENT|SCANCODE_MASK),
- KP_LESS = auto_cast (Scancode.KP_LESS|SCANCODE_MASK),
- KP_GREATER = auto_cast (Scancode.KP_GREATER|SCANCODE_MASK),
- KP_AMPERSAND = auto_cast (Scancode.KP_AMPERSAND|SCANCODE_MASK),
- KP_DBLAMPERSAND = auto_cast (Scancode.KP_DBLAMPERSAND|SCANCODE_MASK),
- KP_VERTICALBAR = auto_cast (Scancode.KP_VERTICALBAR|SCANCODE_MASK),
- KP_DBLVERTICALBAR = auto_cast (Scancode.KP_DBLVERTICALBAR|SCANCODE_MASK),
- KP_COLON = auto_cast (Scancode.KP_COLON|SCANCODE_MASK),
- KP_HASH = auto_cast (Scancode.KP_HASH|SCANCODE_MASK),
- KP_SPACE = auto_cast (Scancode.KP_SPACE|SCANCODE_MASK),
- KP_AT = auto_cast (Scancode.KP_AT|SCANCODE_MASK),
- KP_EXCLAM = auto_cast (Scancode.KP_EXCLAM|SCANCODE_MASK),
- KP_MEMSTORE = auto_cast (Scancode.KP_MEMSTORE|SCANCODE_MASK),
- KP_MEMRECALL = auto_cast (Scancode.KP_MEMRECALL|SCANCODE_MASK),
- KP_MEMCLEAR = auto_cast (Scancode.KP_MEMCLEAR|SCANCODE_MASK),
- KP_MEMADD = auto_cast (Scancode.KP_MEMADD|SCANCODE_MASK),
- KP_MEMSUBTRACT = auto_cast (Scancode.KP_MEMSUBTRACT|SCANCODE_MASK),
- KP_MEMMULTIPLY = auto_cast (Scancode.KP_MEMMULTIPLY|SCANCODE_MASK),
- KP_MEMDIVIDE = auto_cast (Scancode.KP_MEMDIVIDE|SCANCODE_MASK),
- KP_PLUSMINUS = auto_cast (Scancode.KP_PLUSMINUS|SCANCODE_MASK),
- KP_CLEAR = auto_cast (Scancode.KP_CLEAR|SCANCODE_MASK),
- KP_CLEARENTRY = auto_cast (Scancode.KP_CLEARENTRY|SCANCODE_MASK),
- KP_BINARY = auto_cast (Scancode.KP_BINARY|SCANCODE_MASK),
- KP_OCTAL = auto_cast (Scancode.KP_OCTAL|SCANCODE_MASK),
- KP_DECIMAL = auto_cast (Scancode.KP_DECIMAL|SCANCODE_MASK),
- KP_HEXADECIMAL = auto_cast (Scancode.KP_HEXADECIMAL|SCANCODE_MASK),
- LCTRL = auto_cast (Scancode.LCTRL|SCANCODE_MASK),
- LSHIFT = auto_cast (Scancode.LSHIFT|SCANCODE_MASK),
- LALT = auto_cast (Scancode.LALT|SCANCODE_MASK),
- LGUI = auto_cast (Scancode.LGUI|SCANCODE_MASK),
- RCTRL = auto_cast (Scancode.RCTRL|SCANCODE_MASK),
- RSHIFT = auto_cast (Scancode.RSHIFT|SCANCODE_MASK),
- RALT = auto_cast (Scancode.RALT|SCANCODE_MASK),
- RGUI = auto_cast (Scancode.RGUI|SCANCODE_MASK),
- MODE = auto_cast (Scancode.MODE|SCANCODE_MASK),
- AUDIONEXT = auto_cast (Scancode.AUDIONEXT|SCANCODE_MASK),
- AUDIOPREV = auto_cast (Scancode.AUDIOPREV|SCANCODE_MASK),
- AUDIOSTOP = auto_cast (Scancode.AUDIOSTOP|SCANCODE_MASK),
- AUDIOPLAY = auto_cast (Scancode.AUDIOPLAY|SCANCODE_MASK),
- AUDIOMUTE = auto_cast (Scancode.AUDIOMUTE|SCANCODE_MASK),
- MEDIASELECT = auto_cast (Scancode.MEDIASELECT|SCANCODE_MASK),
- WWW = auto_cast (Scancode.WWW|SCANCODE_MASK),
- MAIL = auto_cast (Scancode.MAIL|SCANCODE_MASK),
- CALCULATOR = auto_cast (Scancode.CALCULATOR|SCANCODE_MASK),
- COMPUTER = auto_cast (Scancode.COMPUTER|SCANCODE_MASK),
- AC_SEARCH = auto_cast (Scancode.AC_SEARCH|SCANCODE_MASK),
- AC_HOME = auto_cast (Scancode.AC_HOME|SCANCODE_MASK),
- AC_BACK = auto_cast (Scancode.AC_BACK|SCANCODE_MASK),
- AC_FORWARD = auto_cast (Scancode.AC_FORWARD|SCANCODE_MASK),
- AC_STOP = auto_cast (Scancode.AC_STOP|SCANCODE_MASK),
- AC_REFRESH = auto_cast (Scancode.AC_REFRESH|SCANCODE_MASK),
- AC_BOOKMARKS = auto_cast (Scancode.AC_BOOKMARKS|SCANCODE_MASK),
- BRIGHTNESSDOWN = auto_cast (Scancode.BRIGHTNESSDOWN|SCANCODE_MASK),
- BRIGHTNESSUP = auto_cast (Scancode.BRIGHTNESSUP|SCANCODE_MASK),
- DISPLAYSWITCH = auto_cast (Scancode.DISPLAYSWITCH|SCANCODE_MASK),
- KBDILLUMTOGGLE = auto_cast (Scancode.KBDILLUMTOGGLE|SCANCODE_MASK),
- KBDILLUMDOWN = auto_cast (Scancode.KBDILLUMDOWN|SCANCODE_MASK),
- KBDILLUMUP = auto_cast (Scancode.KBDILLUMUP|SCANCODE_MASK),
- EJECT = auto_cast (Scancode.EJECT|SCANCODE_MASK),
- SLEEP = auto_cast (Scancode.SLEEP|SCANCODE_MASK),
- APP1 = auto_cast (Scancode.APP1|SCANCODE_MASK),
- APP2 = auto_cast (Scancode.APP2|SCANCODE_MASK),
- AUDIOREWIND = auto_cast (Scancode.AUDIOREWIND|SCANCODE_MASK),
- AUDIOFASTFORWARD = auto_cast (Scancode.AUDIOFASTFORWARD|SCANCODE_MASK),
- }
- KeymodFlag :: enum u16 {
- LSHIFT = 0x0,
- RSHIFT = 0x1,
- LCTRL = 0x6,
- RCTRL = 0x7,
- LALT = 0x8,
- RALT = 0x9,
- LGUI = 0xa,
- RGUI = 0xb,
- NUM = 0xc,
- CAPS = 0xd,
- MODE = 0xe,
- RESERVED = 0xf,
- }
- Keymod :: distinct bit_set[KeymodFlag; u16]
- KMOD_NONE :: Keymod{}
- KMOD_LSHIFT :: Keymod{.LSHIFT}
- KMOD_RSHIFT :: Keymod{.RSHIFT}
- KMOD_LCTRL :: Keymod{.LCTRL}
- KMOD_RCTRL :: Keymod{.RCTRL}
- KMOD_LALT :: Keymod{.LALT}
- KMOD_RALT :: Keymod{.RALT}
- KMOD_LGUI :: Keymod{.LGUI}
- KMOD_RGUI :: Keymod{.RGUI}
- KMOD_NUM :: Keymod{.NUM}
- KMOD_CAPS :: Keymod{.CAPS}
- KMOD_MODE :: Keymod{.MODE}
- KMOD_RESERVED :: Keymod{.RESERVED}
- KMOD_CTRL :: Keymod{.LCTRL, .RCTRL}
- KMOD_SHIFT :: Keymod{.LSHIFT, .RSHIFT}
- KMOD_ALT :: Keymod{.LALT, .RALT}
- KMOD_GUI :: Keymod{.LGUI, .RGUI}
|