mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-30 01:44:36 +00:00
331 lines
11 KiB
Odin
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}
|