Backlog/lib/sdl3/src/scancode.zig

372 lines
10 KiB
Zig

pub const Scancode = enum(c_uint) {
unknown,
//**
//* \name Usage page 0x07
//*
//* These values are from usage page 0x07 (USB keyboard page).
//*/
//* @{ */
a = 4,
b = 5,
c = 6,
d = 7,
e = 8,
f = 9,
g = 10,
h = 11,
i = 12,
j = 13,
k = 14,
l = 15,
m = 16,
n = 17,
o = 18,
p = 19,
q = 20,
r = 21,
s = 22,
t = 23,
u = 24,
v = 25,
w = 26,
x = 27,
y = 28,
z = 29,
@"1" = 30,
@"2" = 31,
@"3" = 32,
@"4" = 33,
@"5" = 34,
@"6" = 35,
@"7" = 36,
@"8" = 37,
@"9" = 38,
@"0" = 39,
@"return" = 40,
escape = 41,
backspace = 42,
tab = 43,
space = 44,
minus = 45,
equals = 46,
leftbracket = 47,
rightbracket = 48,
backslash = 49, //**< Located at the lower left of the return
// * key on ISO keyboards and at the right end
// * of the QWERTY row on ANSI keyboards.
// * Produces REVERSE SOLIDUS (backslash) and
// * VERTICAL LINE in a US layout, REVERSE
// * SOLIDUS and VERTICAL LINE in a UK Mac
// * layout, NUMBER SIGN and TILDE in a UK
// * Windows layout, DOLLAR SIGN and POUND SIGN
// * in a Swiss German layout, NUMBER SIGN and
// * APOSTROPHE in a German layout, GRAVE
// * ACCENT and POUND SIGN in a French Mac
// * layout, and ASTERISK and MICRO SIGN in a
// * French Windows layout.
// */
nonushash = 50, //**< iso usb keyboards actually use this code
//* instead of 49 for the same key, but all
//* OSes I've seen treat the two codes
//* identically. So, as an implementor, unless
//* your keyboard generates both of those
//* codes and your OS treats them differently,
//* you should generate SDL_SCANCODE_BACKSLASH
//* instead of this code. As a user, you
//* should not rely on this code because SDL
//* will never generate it with most (all?)
//* keyboards.
//*/
semicolon = 51,
apostrophe = 52,
grave = 53, //**< located in the top left corner (on both ansi
//* and ISO keyboards). Produces GRAVE ACCENT and
//* TILDE in a US Windows layout and in US and UK
//* Mac layouts on ANSI keyboards, GRAVE ACCENT
//* and NOT SIGN in a UK Windows layout, SECTION
//* SIGN and PLUS-MINUS SIGN in US and UK Mac
//* layouts on ISO keyboards, SECTION SIGN and
//* DEGREE SIGN in a Swiss German layout (Mac:
//* only on ISO keyboards), CIRCUMFLEX ACCENT and
//* DEGREE SIGN in a German layout (Mac: only on
//* ISO keyboards), SUPERSCRIPT TWO and TILDE in a
//* French Windows layout, COMMERCIAL AT and
//* NUMBER SIGN in a French Mac layout on ISO
//* keyboards, and LESS-THAN SIGN and GREATER-THAN
//* SIGN in a Swiss German, German, or French Mac
//* layout on ANSI keyboards.
//*/
comma = 54,
period = 55,
slash = 56,
capslock = 57,
f1 = 58,
f2 = 59,
f3 = 60,
f4 = 61,
f5 = 62,
f6 = 63,
f7 = 64,
f8 = 65,
f9 = 66,
f10 = 67,
f11 = 68,
f12 = 69,
printscreen = 70,
scrolllock = 71,
pause = 72,
insert = 73, //**< insert on pc, help on some mac keyboards (but
// does send code 73, not 117) */
home = 74,
pageup = 75,
delete = 76,
end = 77,
pagedown = 78,
right = 79,
left = 80,
down = 81,
up = 82,
numlockclear = 83, //**< num lock on pc, clear on mac keyboards
//*/
kp_divide = 84,
kp_multiply = 85,
kp_minus = 86,
kp_plus = 87,
kp_enter = 88,
kp_1 = 89,
kp_2 = 90,
kp_3 = 91,
kp_4 = 92,
kp_5 = 93,
kp_6 = 94,
kp_7 = 95,
kp_8 = 96,
kp_9 = 97,
kp_0 = 98,
kp_period = 99,
nonusbackslash = 100, //**< this is the additional key that iso
//* keyboards have over ANSI ones,
//* located between left shift and Y.
//* Produces GRAVE ACCENT and TILDE in a
//* US or UK Mac layout, REVERSE SOLIDUS
//* (backslash) and VERTICAL LINE in a
//* US or UK Windows layout, and
//* LESS-THAN SIGN and GREATER-THAN SIGN
//* in a Swiss German, German, or French
//* layout. */
application = 101, //**< windows contextual menu, compose */
power = 102, //**< the usb document says this is a status flag,
// * not a physical key - but some Mac keyboards
// * do have a power key. */
kp_equals = 103,
f13 = 104,
f14 = 105,
f15 = 106,
f16 = 107,
f17 = 108,
f18 = 109,
f19 = 110,
f20 = 111,
f21 = 112,
f22 = 113,
f23 = 114,
f24 = 115,
execute = 116,
help = 117, //**< al integrated help center */
menu = 118, //**< menu (show menu) */
select = 119,
stop = 120, //**< ac stop */
again = 121, //**< ac redo/repeat */
undo = 122, //**< ac undo */
cut = 123, //**< ac cut */
copy = 124, //**< ac copy */
paste = 125, //**< ac paste */
find = 126, //**< ac find */
mute = 127,
volumeup = 128,
volumedown = 129,
///* not sure whether there's a reason to enable these */
///* sdl_scancode_lockingcapslock = 130, */
///* sdl_scancode_lockingnumlock = 131, */
///* sdl_scancode_lockingscrolllock = 132, */
kp_comma = 133,
kp_equalsas400 = 134,
international1 = 135, // **< used on asian keyboards, see
// footnotes in usb doc */
international2 = 136,
international3 = 137, //**< yen */
international4 = 138,
international5 = 139,
international6 = 140,
international7 = 141,
international8 = 142,
international9 = 143,
lang1 = 144, //**< hangul/english toggle */
lang2 = 145, //**< hanja conversion */
lang3 = 146, //**< katakana */
lang4 = 147, //**< hiragana */
lang5 = 148, //**< zenkaku/hankaku */
lang6 = 149, //**< reserved */
lang7 = 150, //**< reserved */
lang8 = 151, //**< reserved */
lang9 = 152, //**< reserved */
alterase = 153, //**< erase-eaze */
sysreq = 154,
cancel = 155, //**< ac cancel */
clear = 156,
prior = 157,
return2 = 158,
separator = 159,
out = 160,
oper = 161,
clearagain = 162,
crsel = 163,
exsel = 164,
kp_00 = 176,
kp_000 = 177,
thousandsseparator = 178,
decimalseparator = 179,
currencyunit = 180,
currencysubunit = 181,
kp_leftparen = 182,
kp_rightparen = 183,
kp_leftbrace = 184,
kp_rightbrace = 185,
kp_tab = 186,
kp_backspace = 187,
kp_a = 188,
kp_b = 189,
kp_c = 190,
kp_d = 191,
kp_e = 192,
kp_f = 193,
kp_xor = 194,
kp_power = 195,
kp_percent = 196,
kp_less = 197,
kp_greater = 198,
kp_ampersand = 199,
kp_dblampersand = 200,
kp_verticalbar = 201,
kp_dblverticalbar = 202,
kp_colon = 203,
kp_hash = 204,
kp_space = 205,
kp_at = 206,
kp_exclam = 207,
kp_memstore = 208,
kp_memrecall = 209,
kp_memclear = 210,
kp_memadd = 211,
kp_memsubtract = 212,
kp_memmultiply = 213,
kp_memdivide = 214,
kp_plusminus = 215,
kp_clear = 216,
kp_clearentry = 217,
kp_binary = 218,
kp_octal = 219,
kp_decimal = 220,
kp_hexadecimal = 221,
lctrl = 224,
lshift = 225,
lalt = 226, //**< alt, option */
lgui = 227, //**< windows, command (apple), meta */
rctrl = 228,
rshift = 229,
ralt = 230, //**< alt gr, option */
rgui = 231, //**< windows, command (apple), meta */
mode = 257, //**< i'm not sure if this is really not covered
//* by any of the above, but since there's a
//* special sdl_kmod_mode for it i'm adding it here
//*/
//* @} *//* Usage page 0x07 */
///**
// * \name Usage page 0x0C
// *
// * These values are mapped from usage page 0x0C (USB consumer page).
// *
// * There are way more keys in the spec than we can represent in the
// * current scancode range, so pick the ones that commonly come up in
// * real world usage.
// */
///* @{ */
sleep = 258, //**< sleep */
wake = 259, //**< wake */
channel_increment = 260, //**< channel increment */
channel_decrement = 261, //**< channel decrement */
media_play = 262, //**< play */
media_pause = 263, //**< pause */
media_record = 264, //**< record */
media_fast_forward = 265, //**< fast forward */
media_rewind = 266, //**< rewind */
media_next_track = 267, //**< next track */
media_previous_track = 268, //**< previous track */
media_stop = 269, //**< stop */
media_eject = 270, //**< eject */
media_play_pause = 271, //**< play / pause */
media_select = 272, //* media select */
ac_new = 273, //**< ac new */
ac_open = 274, //**< ac open */
ac_close = 275, //**< ac close */
ac_exit = 276, //**< ac exit */
ac_save = 277, //**< ac save */
ac_print = 278, //**< ac print */
ac_properties = 279, //**< ac properties */
ac_search = 280, //**< ac search */
ac_home = 281, //**< ac home */
ac_back = 282, //**< ac back */
ac_forward = 283, //**< ac forward */
ac_stop = 284, //**< ac stop */
ac_refresh = 285, //**< ac refresh */
ac_bookmarks = 286, //**< ac bookmarks */
//* @} *//* Usage page 0x0C */
//**
//* \name Mobile keys
//*
//* These are values that are often used on mobile phones.
//*/
//* @{ */
softleft = 287, //**< usually situated below the display on phones and
// used as a multi-function feature key for selecting
// a software defined function shown on the bottom left
// of the display. */
softright = 288, //**< usually situated below the display on phones and
// used as a multi-function feature key for selecting
// a software defined function shown on the bottom right
// of the display. */
call = 289, //**< used for accepting phone calls. */
endcall = 290, //**< used for rejecting phone calls. */
//* @} *//* Mobile keys */
//* Add any other keys here. */
reserved = 400, //**< 400-500 reserved for dynamic keycodes */
count = 512, //**< not a key, just marks the number of scancodes for array bounds */
};