Files
Odin/vendor/sdl2/sdl_keycode.odin
2023-05-02 12:06:41 +01:00

331 lines
11 KiB
Odin

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}