sdl3_sys/generated/
scancode.rs

1//! Defines keyboard scancodes.
2//!
3//! Please refer to the Best Keyboard Practices document for details on what
4//! this information means and how best to use it.
5//!
6//! <https://wiki.libsdl.org/SDL3/BestKeyboardPractices>
7
8use super::stdinc::*;
9
10/// The SDL keyboard scancode representation.
11///
12/// An SDL scancode is the physical representation of a key on the keyboard,
13/// independent of language and keyboard mapping.
14///
15/// Values of this type are used to represent keyboard keys, among other places
16/// in the `scancode` field of the [`SDL_KeyboardEvent`] structure.
17///
18/// The values in this enumeration are based on the USB usage page standard:
19/// <https://usb.org/sites/default/files/hut1_5.pdf>
20///
21/// ## Availability
22/// This enum is available since SDL 3.2.0.
23///
24/// ## Known values (`sdl3-sys`)
25/// | Associated constant | Global constant | Description |
26/// | ------------------- | --------------- | ----------- |
27/// | [`UNKNOWN`](SDL_Scancode::UNKNOWN) | [`SDL_SCANCODE_UNKNOWN`] | |
28/// | [`A`](SDL_Scancode::A) | [`SDL_SCANCODE_A`] | |
29/// | [`B`](SDL_Scancode::B) | [`SDL_SCANCODE_B`] | |
30/// | [`C`](SDL_Scancode::C) | [`SDL_SCANCODE_C`] | |
31/// | [`D`](SDL_Scancode::D) | [`SDL_SCANCODE_D`] | |
32/// | [`E`](SDL_Scancode::E) | [`SDL_SCANCODE_E`] | |
33/// | [`F`](SDL_Scancode::F) | [`SDL_SCANCODE_F`] | |
34/// | [`G`](SDL_Scancode::G) | [`SDL_SCANCODE_G`] | |
35/// | [`H`](SDL_Scancode::H) | [`SDL_SCANCODE_H`] | |
36/// | [`I`](SDL_Scancode::I) | [`SDL_SCANCODE_I`] | |
37/// | [`J`](SDL_Scancode::J) | [`SDL_SCANCODE_J`] | |
38/// | [`K`](SDL_Scancode::K) | [`SDL_SCANCODE_K`] | |
39/// | [`L`](SDL_Scancode::L) | [`SDL_SCANCODE_L`] | |
40/// | [`M`](SDL_Scancode::M) | [`SDL_SCANCODE_M`] | |
41/// | [`N`](SDL_Scancode::N) | [`SDL_SCANCODE_N`] | |
42/// | [`O`](SDL_Scancode::O) | [`SDL_SCANCODE_O`] | |
43/// | [`P`](SDL_Scancode::P) | [`SDL_SCANCODE_P`] | |
44/// | [`Q`](SDL_Scancode::Q) | [`SDL_SCANCODE_Q`] | |
45/// | [`R`](SDL_Scancode::R) | [`SDL_SCANCODE_R`] | |
46/// | [`S`](SDL_Scancode::S) | [`SDL_SCANCODE_S`] | |
47/// | [`T`](SDL_Scancode::T) | [`SDL_SCANCODE_T`] | |
48/// | [`U`](SDL_Scancode::U) | [`SDL_SCANCODE_U`] | |
49/// | [`V`](SDL_Scancode::V) | [`SDL_SCANCODE_V`] | |
50/// | [`W`](SDL_Scancode::W) | [`SDL_SCANCODE_W`] | |
51/// | [`X`](SDL_Scancode::X) | [`SDL_SCANCODE_X`] | |
52/// | [`Y`](SDL_Scancode::Y) | [`SDL_SCANCODE_Y`] | |
53/// | [`Z`](SDL_Scancode::Z) | [`SDL_SCANCODE_Z`] | |
54/// | [`_1`](SDL_Scancode::_1) | [`SDL_SCANCODE_1`] | |
55/// | [`_2`](SDL_Scancode::_2) | [`SDL_SCANCODE_2`] | |
56/// | [`_3`](SDL_Scancode::_3) | [`SDL_SCANCODE_3`] | |
57/// | [`_4`](SDL_Scancode::_4) | [`SDL_SCANCODE_4`] | |
58/// | [`_5`](SDL_Scancode::_5) | [`SDL_SCANCODE_5`] | |
59/// | [`_6`](SDL_Scancode::_6) | [`SDL_SCANCODE_6`] | |
60/// | [`_7`](SDL_Scancode::_7) | [`SDL_SCANCODE_7`] | |
61/// | [`_8`](SDL_Scancode::_8) | [`SDL_SCANCODE_8`] | |
62/// | [`_9`](SDL_Scancode::_9) | [`SDL_SCANCODE_9`] | |
63/// | [`_0`](SDL_Scancode::_0) | [`SDL_SCANCODE_0`] | |
64/// | [`RETURN`](SDL_Scancode::RETURN) | [`SDL_SCANCODE_RETURN`] | |
65/// | [`ESCAPE`](SDL_Scancode::ESCAPE) | [`SDL_SCANCODE_ESCAPE`] | |
66/// | [`BACKSPACE`](SDL_Scancode::BACKSPACE) | [`SDL_SCANCODE_BACKSPACE`] | |
67/// | [`TAB`](SDL_Scancode::TAB) | [`SDL_SCANCODE_TAB`] | |
68/// | [`SPACE`](SDL_Scancode::SPACE) | [`SDL_SCANCODE_SPACE`] | |
69/// | [`MINUS`](SDL_Scancode::MINUS) | [`SDL_SCANCODE_MINUS`] | |
70/// | [`EQUALS`](SDL_Scancode::EQUALS) | [`SDL_SCANCODE_EQUALS`] | |
71/// | [`LEFTBRACKET`](SDL_Scancode::LEFTBRACKET) | [`SDL_SCANCODE_LEFTBRACKET`] | |
72/// | [`RIGHTBRACKET`](SDL_Scancode::RIGHTBRACKET) | [`SDL_SCANCODE_RIGHTBRACKET`] | |
73/// | [`BACKSLASH`](SDL_Scancode::BACKSLASH) | [`SDL_SCANCODE_BACKSLASH`] | 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. |
74/// | [`NONUSHASH`](SDL_Scancode::NONUSHASH) | [`SDL_SCANCODE_NONUSHASH`] | 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. |
75/// | [`SEMICOLON`](SDL_Scancode::SEMICOLON) | [`SDL_SCANCODE_SEMICOLON`] | |
76/// | [`APOSTROPHE`](SDL_Scancode::APOSTROPHE) | [`SDL_SCANCODE_APOSTROPHE`] | |
77/// | [`GRAVE`](SDL_Scancode::GRAVE) | [`SDL_SCANCODE_GRAVE`] | 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. |
78/// | [`COMMA`](SDL_Scancode::COMMA) | [`SDL_SCANCODE_COMMA`] | |
79/// | [`PERIOD`](SDL_Scancode::PERIOD) | [`SDL_SCANCODE_PERIOD`] | |
80/// | [`SLASH`](SDL_Scancode::SLASH) | [`SDL_SCANCODE_SLASH`] | |
81/// | [`CAPSLOCK`](SDL_Scancode::CAPSLOCK) | [`SDL_SCANCODE_CAPSLOCK`] | |
82/// | [`F1`](SDL_Scancode::F1) | [`SDL_SCANCODE_F1`] | |
83/// | [`F2`](SDL_Scancode::F2) | [`SDL_SCANCODE_F2`] | |
84/// | [`F3`](SDL_Scancode::F3) | [`SDL_SCANCODE_F3`] | |
85/// | [`F4`](SDL_Scancode::F4) | [`SDL_SCANCODE_F4`] | |
86/// | [`F5`](SDL_Scancode::F5) | [`SDL_SCANCODE_F5`] | |
87/// | [`F6`](SDL_Scancode::F6) | [`SDL_SCANCODE_F6`] | |
88/// | [`F7`](SDL_Scancode::F7) | [`SDL_SCANCODE_F7`] | |
89/// | [`F8`](SDL_Scancode::F8) | [`SDL_SCANCODE_F8`] | |
90/// | [`F9`](SDL_Scancode::F9) | [`SDL_SCANCODE_F9`] | |
91/// | [`F10`](SDL_Scancode::F10) | [`SDL_SCANCODE_F10`] | |
92/// | [`F11`](SDL_Scancode::F11) | [`SDL_SCANCODE_F11`] | |
93/// | [`F12`](SDL_Scancode::F12) | [`SDL_SCANCODE_F12`] | |
94/// | [`PRINTSCREEN`](SDL_Scancode::PRINTSCREEN) | [`SDL_SCANCODE_PRINTSCREEN`] | |
95/// | [`SCROLLLOCK`](SDL_Scancode::SCROLLLOCK) | [`SDL_SCANCODE_SCROLLLOCK`] | |
96/// | [`PAUSE`](SDL_Scancode::PAUSE) | [`SDL_SCANCODE_PAUSE`] | |
97/// | [`INSERT`](SDL_Scancode::INSERT) | [`SDL_SCANCODE_INSERT`] | insert on PC, help on some Mac keyboards (but does send code 73, not 117) |
98/// | [`HOME`](SDL_Scancode::HOME) | [`SDL_SCANCODE_HOME`] | |
99/// | [`PAGEUP`](SDL_Scancode::PAGEUP) | [`SDL_SCANCODE_PAGEUP`] | |
100/// | [`DELETE`](SDL_Scancode::DELETE) | [`SDL_SCANCODE_DELETE`] | |
101/// | [`END`](SDL_Scancode::END) | [`SDL_SCANCODE_END`] | |
102/// | [`PAGEDOWN`](SDL_Scancode::PAGEDOWN) | [`SDL_SCANCODE_PAGEDOWN`] | |
103/// | [`RIGHT`](SDL_Scancode::RIGHT) | [`SDL_SCANCODE_RIGHT`] | |
104/// | [`LEFT`](SDL_Scancode::LEFT) | [`SDL_SCANCODE_LEFT`] | |
105/// | [`DOWN`](SDL_Scancode::DOWN) | [`SDL_SCANCODE_DOWN`] | |
106/// | [`UP`](SDL_Scancode::UP) | [`SDL_SCANCODE_UP`] | |
107/// | [`NUMLOCKCLEAR`](SDL_Scancode::NUMLOCKCLEAR) | [`SDL_SCANCODE_NUMLOCKCLEAR`] | num lock on PC, clear on Mac keyboards |
108/// | [`KP_DIVIDE`](SDL_Scancode::KP_DIVIDE) | [`SDL_SCANCODE_KP_DIVIDE`] | |
109/// | [`KP_MULTIPLY`](SDL_Scancode::KP_MULTIPLY) | [`SDL_SCANCODE_KP_MULTIPLY`] | |
110/// | [`KP_MINUS`](SDL_Scancode::KP_MINUS) | [`SDL_SCANCODE_KP_MINUS`] | |
111/// | [`KP_PLUS`](SDL_Scancode::KP_PLUS) | [`SDL_SCANCODE_KP_PLUS`] | |
112/// | [`KP_ENTER`](SDL_Scancode::KP_ENTER) | [`SDL_SCANCODE_KP_ENTER`] | |
113/// | [`KP_1`](SDL_Scancode::KP_1) | [`SDL_SCANCODE_KP_1`] | |
114/// | [`KP_2`](SDL_Scancode::KP_2) | [`SDL_SCANCODE_KP_2`] | |
115/// | [`KP_3`](SDL_Scancode::KP_3) | [`SDL_SCANCODE_KP_3`] | |
116/// | [`KP_4`](SDL_Scancode::KP_4) | [`SDL_SCANCODE_KP_4`] | |
117/// | [`KP_5`](SDL_Scancode::KP_5) | [`SDL_SCANCODE_KP_5`] | |
118/// | [`KP_6`](SDL_Scancode::KP_6) | [`SDL_SCANCODE_KP_6`] | |
119/// | [`KP_7`](SDL_Scancode::KP_7) | [`SDL_SCANCODE_KP_7`] | |
120/// | [`KP_8`](SDL_Scancode::KP_8) | [`SDL_SCANCODE_KP_8`] | |
121/// | [`KP_9`](SDL_Scancode::KP_9) | [`SDL_SCANCODE_KP_9`] | |
122/// | [`KP_0`](SDL_Scancode::KP_0) | [`SDL_SCANCODE_KP_0`] | |
123/// | [`KP_PERIOD`](SDL_Scancode::KP_PERIOD) | [`SDL_SCANCODE_KP_PERIOD`] | |
124/// | [`NONUSBACKSLASH`](SDL_Scancode::NONUSBACKSLASH) | [`SDL_SCANCODE_NONUSBACKSLASH`] | This is the additional key that ISO keyboards have over ANSI ones, located between left shift and Z. 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. |
125/// | [`APPLICATION`](SDL_Scancode::APPLICATION) | [`SDL_SCANCODE_APPLICATION`] | windows contextual menu, compose |
126/// | [`POWER`](SDL_Scancode::POWER) | [`SDL_SCANCODE_POWER`] | The USB document says this is a status flag, not a physical key - but some Mac keyboards do have a power key. |
127/// | [`KP_EQUALS`](SDL_Scancode::KP_EQUALS) | [`SDL_SCANCODE_KP_EQUALS`] | |
128/// | [`F13`](SDL_Scancode::F13) | [`SDL_SCANCODE_F13`] | |
129/// | [`F14`](SDL_Scancode::F14) | [`SDL_SCANCODE_F14`] | |
130/// | [`F15`](SDL_Scancode::F15) | [`SDL_SCANCODE_F15`] | |
131/// | [`F16`](SDL_Scancode::F16) | [`SDL_SCANCODE_F16`] | |
132/// | [`F17`](SDL_Scancode::F17) | [`SDL_SCANCODE_F17`] | |
133/// | [`F18`](SDL_Scancode::F18) | [`SDL_SCANCODE_F18`] | |
134/// | [`F19`](SDL_Scancode::F19) | [`SDL_SCANCODE_F19`] | |
135/// | [`F20`](SDL_Scancode::F20) | [`SDL_SCANCODE_F20`] | |
136/// | [`F21`](SDL_Scancode::F21) | [`SDL_SCANCODE_F21`] | |
137/// | [`F22`](SDL_Scancode::F22) | [`SDL_SCANCODE_F22`] | |
138/// | [`F23`](SDL_Scancode::F23) | [`SDL_SCANCODE_F23`] | |
139/// | [`F24`](SDL_Scancode::F24) | [`SDL_SCANCODE_F24`] | |
140/// | [`EXECUTE`](SDL_Scancode::EXECUTE) | [`SDL_SCANCODE_EXECUTE`] | |
141/// | [`HELP`](SDL_Scancode::HELP) | [`SDL_SCANCODE_HELP`] | AL Integrated Help Center |
142/// | [`MENU`](SDL_Scancode::MENU) | [`SDL_SCANCODE_MENU`] | Menu (show menu) |
143/// | [`SELECT`](SDL_Scancode::SELECT) | [`SDL_SCANCODE_SELECT`] | |
144/// | [`STOP`](SDL_Scancode::STOP) | [`SDL_SCANCODE_STOP`] | AC Stop |
145/// | [`AGAIN`](SDL_Scancode::AGAIN) | [`SDL_SCANCODE_AGAIN`] | AC Redo/Repeat |
146/// | [`UNDO`](SDL_Scancode::UNDO) | [`SDL_SCANCODE_UNDO`] | AC Undo |
147/// | [`CUT`](SDL_Scancode::CUT) | [`SDL_SCANCODE_CUT`] | AC Cut |
148/// | [`COPY`](SDL_Scancode::COPY) | [`SDL_SCANCODE_COPY`] | AC Copy |
149/// | [`PASTE`](SDL_Scancode::PASTE) | [`SDL_SCANCODE_PASTE`] | AC Paste |
150/// | [`FIND`](SDL_Scancode::FIND) | [`SDL_SCANCODE_FIND`] | AC Find |
151/// | [`MUTE`](SDL_Scancode::MUTE) | [`SDL_SCANCODE_MUTE`] | |
152/// | [`VOLUMEUP`](SDL_Scancode::VOLUMEUP) | [`SDL_SCANCODE_VOLUMEUP`] | |
153/// | [`VOLUMEDOWN`](SDL_Scancode::VOLUMEDOWN) | [`SDL_SCANCODE_VOLUMEDOWN`] | |
154/// | [`KP_COMMA`](SDL_Scancode::KP_COMMA) | [`SDL_SCANCODE_KP_COMMA`] | |
155/// | [`KP_EQUALSAS400`](SDL_Scancode::KP_EQUALSAS400) | [`SDL_SCANCODE_KP_EQUALSAS400`] | |
156/// | [`INTERNATIONAL1`](SDL_Scancode::INTERNATIONAL1) | [`SDL_SCANCODE_INTERNATIONAL1`] | used on Asian keyboards, see footnotes in USB doc |
157/// | [`INTERNATIONAL2`](SDL_Scancode::INTERNATIONAL2) | [`SDL_SCANCODE_INTERNATIONAL2`] | |
158/// | [`INTERNATIONAL3`](SDL_Scancode::INTERNATIONAL3) | [`SDL_SCANCODE_INTERNATIONAL3`] | Yen |
159/// | [`INTERNATIONAL4`](SDL_Scancode::INTERNATIONAL4) | [`SDL_SCANCODE_INTERNATIONAL4`] | |
160/// | [`INTERNATIONAL5`](SDL_Scancode::INTERNATIONAL5) | [`SDL_SCANCODE_INTERNATIONAL5`] | |
161/// | [`INTERNATIONAL6`](SDL_Scancode::INTERNATIONAL6) | [`SDL_SCANCODE_INTERNATIONAL6`] | |
162/// | [`INTERNATIONAL7`](SDL_Scancode::INTERNATIONAL7) | [`SDL_SCANCODE_INTERNATIONAL7`] | |
163/// | [`INTERNATIONAL8`](SDL_Scancode::INTERNATIONAL8) | [`SDL_SCANCODE_INTERNATIONAL8`] | |
164/// | [`INTERNATIONAL9`](SDL_Scancode::INTERNATIONAL9) | [`SDL_SCANCODE_INTERNATIONAL9`] | |
165/// | [`LANG1`](SDL_Scancode::LANG1) | [`SDL_SCANCODE_LANG1`] | Hangul/English toggle |
166/// | [`LANG2`](SDL_Scancode::LANG2) | [`SDL_SCANCODE_LANG2`] | Hanja conversion |
167/// | [`LANG3`](SDL_Scancode::LANG3) | [`SDL_SCANCODE_LANG3`] | Katakana |
168/// | [`LANG4`](SDL_Scancode::LANG4) | [`SDL_SCANCODE_LANG4`] | Hiragana |
169/// | [`LANG5`](SDL_Scancode::LANG5) | [`SDL_SCANCODE_LANG5`] | Zenkaku/Hankaku |
170/// | [`LANG6`](SDL_Scancode::LANG6) | [`SDL_SCANCODE_LANG6`] | reserved |
171/// | [`LANG7`](SDL_Scancode::LANG7) | [`SDL_SCANCODE_LANG7`] | reserved |
172/// | [`LANG8`](SDL_Scancode::LANG8) | [`SDL_SCANCODE_LANG8`] | reserved |
173/// | [`LANG9`](SDL_Scancode::LANG9) | [`SDL_SCANCODE_LANG9`] | reserved |
174/// | [`ALTERASE`](SDL_Scancode::ALTERASE) | [`SDL_SCANCODE_ALTERASE`] | Erase-Eaze |
175/// | [`SYSREQ`](SDL_Scancode::SYSREQ) | [`SDL_SCANCODE_SYSREQ`] | |
176/// | [`CANCEL`](SDL_Scancode::CANCEL) | [`SDL_SCANCODE_CANCEL`] | AC Cancel |
177/// | [`CLEAR`](SDL_Scancode::CLEAR) | [`SDL_SCANCODE_CLEAR`] | |
178/// | [`PRIOR`](SDL_Scancode::PRIOR) | [`SDL_SCANCODE_PRIOR`] | |
179/// | [`RETURN2`](SDL_Scancode::RETURN2) | [`SDL_SCANCODE_RETURN2`] | |
180/// | [`SEPARATOR`](SDL_Scancode::SEPARATOR) | [`SDL_SCANCODE_SEPARATOR`] | |
181/// | [`OUT`](SDL_Scancode::OUT) | [`SDL_SCANCODE_OUT`] | |
182/// | [`OPER`](SDL_Scancode::OPER) | [`SDL_SCANCODE_OPER`] | |
183/// | [`CLEARAGAIN`](SDL_Scancode::CLEARAGAIN) | [`SDL_SCANCODE_CLEARAGAIN`] | |
184/// | [`CRSEL`](SDL_Scancode::CRSEL) | [`SDL_SCANCODE_CRSEL`] | |
185/// | [`EXSEL`](SDL_Scancode::EXSEL) | [`SDL_SCANCODE_EXSEL`] | |
186/// | [`KP_00`](SDL_Scancode::KP_00) | [`SDL_SCANCODE_KP_00`] | |
187/// | [`KP_000`](SDL_Scancode::KP_000) | [`SDL_SCANCODE_KP_000`] | |
188/// | [`THOUSANDSSEPARATOR`](SDL_Scancode::THOUSANDSSEPARATOR) | [`SDL_SCANCODE_THOUSANDSSEPARATOR`] | |
189/// | [`DECIMALSEPARATOR`](SDL_Scancode::DECIMALSEPARATOR) | [`SDL_SCANCODE_DECIMALSEPARATOR`] | |
190/// | [`CURRENCYUNIT`](SDL_Scancode::CURRENCYUNIT) | [`SDL_SCANCODE_CURRENCYUNIT`] | |
191/// | [`CURRENCYSUBUNIT`](SDL_Scancode::CURRENCYSUBUNIT) | [`SDL_SCANCODE_CURRENCYSUBUNIT`] | |
192/// | [`KP_LEFTPAREN`](SDL_Scancode::KP_LEFTPAREN) | [`SDL_SCANCODE_KP_LEFTPAREN`] | |
193/// | [`KP_RIGHTPAREN`](SDL_Scancode::KP_RIGHTPAREN) | [`SDL_SCANCODE_KP_RIGHTPAREN`] | |
194/// | [`KP_LEFTBRACE`](SDL_Scancode::KP_LEFTBRACE) | [`SDL_SCANCODE_KP_LEFTBRACE`] | |
195/// | [`KP_RIGHTBRACE`](SDL_Scancode::KP_RIGHTBRACE) | [`SDL_SCANCODE_KP_RIGHTBRACE`] | |
196/// | [`KP_TAB`](SDL_Scancode::KP_TAB) | [`SDL_SCANCODE_KP_TAB`] | |
197/// | [`KP_BACKSPACE`](SDL_Scancode::KP_BACKSPACE) | [`SDL_SCANCODE_KP_BACKSPACE`] | |
198/// | [`KP_A`](SDL_Scancode::KP_A) | [`SDL_SCANCODE_KP_A`] | |
199/// | [`KP_B`](SDL_Scancode::KP_B) | [`SDL_SCANCODE_KP_B`] | |
200/// | [`KP_C`](SDL_Scancode::KP_C) | [`SDL_SCANCODE_KP_C`] | |
201/// | [`KP_D`](SDL_Scancode::KP_D) | [`SDL_SCANCODE_KP_D`] | |
202/// | [`KP_E`](SDL_Scancode::KP_E) | [`SDL_SCANCODE_KP_E`] | |
203/// | [`KP_F`](SDL_Scancode::KP_F) | [`SDL_SCANCODE_KP_F`] | |
204/// | [`KP_XOR`](SDL_Scancode::KP_XOR) | [`SDL_SCANCODE_KP_XOR`] | |
205/// | [`KP_POWER`](SDL_Scancode::KP_POWER) | [`SDL_SCANCODE_KP_POWER`] | |
206/// | [`KP_PERCENT`](SDL_Scancode::KP_PERCENT) | [`SDL_SCANCODE_KP_PERCENT`] | |
207/// | [`KP_LESS`](SDL_Scancode::KP_LESS) | [`SDL_SCANCODE_KP_LESS`] | |
208/// | [`KP_GREATER`](SDL_Scancode::KP_GREATER) | [`SDL_SCANCODE_KP_GREATER`] | |
209/// | [`KP_AMPERSAND`](SDL_Scancode::KP_AMPERSAND) | [`SDL_SCANCODE_KP_AMPERSAND`] | |
210/// | [`KP_DBLAMPERSAND`](SDL_Scancode::KP_DBLAMPERSAND) | [`SDL_SCANCODE_KP_DBLAMPERSAND`] | |
211/// | [`KP_VERTICALBAR`](SDL_Scancode::KP_VERTICALBAR) | [`SDL_SCANCODE_KP_VERTICALBAR`] | |
212/// | [`KP_DBLVERTICALBAR`](SDL_Scancode::KP_DBLVERTICALBAR) | [`SDL_SCANCODE_KP_DBLVERTICALBAR`] | |
213/// | [`KP_COLON`](SDL_Scancode::KP_COLON) | [`SDL_SCANCODE_KP_COLON`] | |
214/// | [`KP_HASH`](SDL_Scancode::KP_HASH) | [`SDL_SCANCODE_KP_HASH`] | |
215/// | [`KP_SPACE`](SDL_Scancode::KP_SPACE) | [`SDL_SCANCODE_KP_SPACE`] | |
216/// | [`KP_AT`](SDL_Scancode::KP_AT) | [`SDL_SCANCODE_KP_AT`] | |
217/// | [`KP_EXCLAM`](SDL_Scancode::KP_EXCLAM) | [`SDL_SCANCODE_KP_EXCLAM`] | |
218/// | [`KP_MEMSTORE`](SDL_Scancode::KP_MEMSTORE) | [`SDL_SCANCODE_KP_MEMSTORE`] | |
219/// | [`KP_MEMRECALL`](SDL_Scancode::KP_MEMRECALL) | [`SDL_SCANCODE_KP_MEMRECALL`] | |
220/// | [`KP_MEMCLEAR`](SDL_Scancode::KP_MEMCLEAR) | [`SDL_SCANCODE_KP_MEMCLEAR`] | |
221/// | [`KP_MEMADD`](SDL_Scancode::KP_MEMADD) | [`SDL_SCANCODE_KP_MEMADD`] | |
222/// | [`KP_MEMSUBTRACT`](SDL_Scancode::KP_MEMSUBTRACT) | [`SDL_SCANCODE_KP_MEMSUBTRACT`] | |
223/// | [`KP_MEMMULTIPLY`](SDL_Scancode::KP_MEMMULTIPLY) | [`SDL_SCANCODE_KP_MEMMULTIPLY`] | |
224/// | [`KP_MEMDIVIDE`](SDL_Scancode::KP_MEMDIVIDE) | [`SDL_SCANCODE_KP_MEMDIVIDE`] | |
225/// | [`KP_PLUSMINUS`](SDL_Scancode::KP_PLUSMINUS) | [`SDL_SCANCODE_KP_PLUSMINUS`] | |
226/// | [`KP_CLEAR`](SDL_Scancode::KP_CLEAR) | [`SDL_SCANCODE_KP_CLEAR`] | |
227/// | [`KP_CLEARENTRY`](SDL_Scancode::KP_CLEARENTRY) | [`SDL_SCANCODE_KP_CLEARENTRY`] | |
228/// | [`KP_BINARY`](SDL_Scancode::KP_BINARY) | [`SDL_SCANCODE_KP_BINARY`] | |
229/// | [`KP_OCTAL`](SDL_Scancode::KP_OCTAL) | [`SDL_SCANCODE_KP_OCTAL`] | |
230/// | [`KP_DECIMAL`](SDL_Scancode::KP_DECIMAL) | [`SDL_SCANCODE_KP_DECIMAL`] | |
231/// | [`KP_HEXADECIMAL`](SDL_Scancode::KP_HEXADECIMAL) | [`SDL_SCANCODE_KP_HEXADECIMAL`] | |
232/// | [`LCTRL`](SDL_Scancode::LCTRL) | [`SDL_SCANCODE_LCTRL`] | |
233/// | [`LSHIFT`](SDL_Scancode::LSHIFT) | [`SDL_SCANCODE_LSHIFT`] | |
234/// | [`LALT`](SDL_Scancode::LALT) | [`SDL_SCANCODE_LALT`] | alt, option |
235/// | [`LGUI`](SDL_Scancode::LGUI) | [`SDL_SCANCODE_LGUI`] | windows, command (apple), meta |
236/// | [`RCTRL`](SDL_Scancode::RCTRL) | [`SDL_SCANCODE_RCTRL`] | |
237/// | [`RSHIFT`](SDL_Scancode::RSHIFT) | [`SDL_SCANCODE_RSHIFT`] | |
238/// | [`RALT`](SDL_Scancode::RALT) | [`SDL_SCANCODE_RALT`] | alt gr, option |
239/// | [`RGUI`](SDL_Scancode::RGUI) | [`SDL_SCANCODE_RGUI`] | windows, command (apple), meta |
240/// | [`MODE`](SDL_Scancode::MODE) | [`SDL_SCANCODE_MODE`] | 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 |
241/// | [`SLEEP`](SDL_Scancode::SLEEP) | [`SDL_SCANCODE_SLEEP`] | Sleep |
242/// | [`WAKE`](SDL_Scancode::WAKE) | [`SDL_SCANCODE_WAKE`] | Wake |
243/// | [`CHANNEL_INCREMENT`](SDL_Scancode::CHANNEL_INCREMENT) | [`SDL_SCANCODE_CHANNEL_INCREMENT`] | Channel Increment |
244/// | [`CHANNEL_DECREMENT`](SDL_Scancode::CHANNEL_DECREMENT) | [`SDL_SCANCODE_CHANNEL_DECREMENT`] | Channel Decrement |
245/// | [`MEDIA_PLAY`](SDL_Scancode::MEDIA_PLAY) | [`SDL_SCANCODE_MEDIA_PLAY`] | Play |
246/// | [`MEDIA_PAUSE`](SDL_Scancode::MEDIA_PAUSE) | [`SDL_SCANCODE_MEDIA_PAUSE`] | Pause |
247/// | [`MEDIA_RECORD`](SDL_Scancode::MEDIA_RECORD) | [`SDL_SCANCODE_MEDIA_RECORD`] | Record |
248/// | [`MEDIA_FAST_FORWARD`](SDL_Scancode::MEDIA_FAST_FORWARD) | [`SDL_SCANCODE_MEDIA_FAST_FORWARD`] | Fast Forward |
249/// | [`MEDIA_REWIND`](SDL_Scancode::MEDIA_REWIND) | [`SDL_SCANCODE_MEDIA_REWIND`] | Rewind |
250/// | [`MEDIA_NEXT_TRACK`](SDL_Scancode::MEDIA_NEXT_TRACK) | [`SDL_SCANCODE_MEDIA_NEXT_TRACK`] | Next Track |
251/// | [`MEDIA_PREVIOUS_TRACK`](SDL_Scancode::MEDIA_PREVIOUS_TRACK) | [`SDL_SCANCODE_MEDIA_PREVIOUS_TRACK`] | Previous Track |
252/// | [`MEDIA_STOP`](SDL_Scancode::MEDIA_STOP) | [`SDL_SCANCODE_MEDIA_STOP`] | Stop |
253/// | [`MEDIA_EJECT`](SDL_Scancode::MEDIA_EJECT) | [`SDL_SCANCODE_MEDIA_EJECT`] | Eject |
254/// | [`MEDIA_PLAY_PAUSE`](SDL_Scancode::MEDIA_PLAY_PAUSE) | [`SDL_SCANCODE_MEDIA_PLAY_PAUSE`] | Play / Pause |
255/// | [`MEDIA_SELECT`](SDL_Scancode::MEDIA_SELECT) | [`SDL_SCANCODE_MEDIA_SELECT`] | |
256/// | [`AC_NEW`](SDL_Scancode::AC_NEW) | [`SDL_SCANCODE_AC_NEW`] | AC New |
257/// | [`AC_OPEN`](SDL_Scancode::AC_OPEN) | [`SDL_SCANCODE_AC_OPEN`] | AC Open |
258/// | [`AC_CLOSE`](SDL_Scancode::AC_CLOSE) | [`SDL_SCANCODE_AC_CLOSE`] | AC Close |
259/// | [`AC_EXIT`](SDL_Scancode::AC_EXIT) | [`SDL_SCANCODE_AC_EXIT`] | AC Exit |
260/// | [`AC_SAVE`](SDL_Scancode::AC_SAVE) | [`SDL_SCANCODE_AC_SAVE`] | AC Save |
261/// | [`AC_PRINT`](SDL_Scancode::AC_PRINT) | [`SDL_SCANCODE_AC_PRINT`] | AC Print |
262/// | [`AC_PROPERTIES`](SDL_Scancode::AC_PROPERTIES) | [`SDL_SCANCODE_AC_PROPERTIES`] | AC Properties |
263/// | [`AC_SEARCH`](SDL_Scancode::AC_SEARCH) | [`SDL_SCANCODE_AC_SEARCH`] | AC Search |
264/// | [`AC_HOME`](SDL_Scancode::AC_HOME) | [`SDL_SCANCODE_AC_HOME`] | AC Home |
265/// | [`AC_BACK`](SDL_Scancode::AC_BACK) | [`SDL_SCANCODE_AC_BACK`] | AC Back |
266/// | [`AC_FORWARD`](SDL_Scancode::AC_FORWARD) | [`SDL_SCANCODE_AC_FORWARD`] | AC Forward |
267/// | [`AC_STOP`](SDL_Scancode::AC_STOP) | [`SDL_SCANCODE_AC_STOP`] | AC Stop |
268/// | [`AC_REFRESH`](SDL_Scancode::AC_REFRESH) | [`SDL_SCANCODE_AC_REFRESH`] | AC Refresh |
269/// | [`AC_BOOKMARKS`](SDL_Scancode::AC_BOOKMARKS) | [`SDL_SCANCODE_AC_BOOKMARKS`] | AC Bookmarks |
270/// | [`SOFTLEFT`](SDL_Scancode::SOFTLEFT) | [`SDL_SCANCODE_SOFTLEFT`] | 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. |
271/// | [`SOFTRIGHT`](SDL_Scancode::SOFTRIGHT) | [`SDL_SCANCODE_SOFTRIGHT`] | 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. |
272/// | [`CALL`](SDL_Scancode::CALL) | [`SDL_SCANCODE_CALL`] | Used for accepting phone calls. |
273/// | [`ENDCALL`](SDL_Scancode::ENDCALL) | [`SDL_SCANCODE_ENDCALL`] | Used for rejecting phone calls. |
274/// | [`RESERVED`](SDL_Scancode::RESERVED) | [`SDL_SCANCODE_RESERVED`] | 400-500 reserved for dynamic keycodes |
275/// | [`COUNT`](SDL_Scancode::COUNT) | [`SDL_SCANCODE_COUNT`] | not a key, just marks the number of scancodes for array bounds |
276#[repr(transparent)]
277#[derive(Clone, Copy, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
278pub struct SDL_Scancode(pub ::core::ffi::c_int);
279
280impl ::core::cmp::PartialEq<::core::ffi::c_int> for SDL_Scancode {
281    #[inline(always)]
282    fn eq(&self, other: &::core::ffi::c_int) -> bool {
283        &self.0 == other
284    }
285}
286
287impl ::core::cmp::PartialEq<SDL_Scancode> for ::core::ffi::c_int {
288    #[inline(always)]
289    fn eq(&self, other: &SDL_Scancode) -> bool {
290        self == &other.0
291    }
292}
293
294impl From<SDL_Scancode> for ::core::ffi::c_int {
295    #[inline(always)]
296    fn from(value: SDL_Scancode) -> Self {
297        value.0
298    }
299}
300
301#[cfg(feature = "debug-impls")]
302impl ::core::fmt::Debug for SDL_Scancode {
303    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
304        #[allow(unreachable_patterns)]
305        f.write_str(match *self {
306            Self::UNKNOWN => "SDL_SCANCODE_UNKNOWN",
307            Self::A => "SDL_SCANCODE_A",
308            Self::B => "SDL_SCANCODE_B",
309            Self::C => "SDL_SCANCODE_C",
310            Self::D => "SDL_SCANCODE_D",
311            Self::E => "SDL_SCANCODE_E",
312            Self::F => "SDL_SCANCODE_F",
313            Self::G => "SDL_SCANCODE_G",
314            Self::H => "SDL_SCANCODE_H",
315            Self::I => "SDL_SCANCODE_I",
316            Self::J => "SDL_SCANCODE_J",
317            Self::K => "SDL_SCANCODE_K",
318            Self::L => "SDL_SCANCODE_L",
319            Self::M => "SDL_SCANCODE_M",
320            Self::N => "SDL_SCANCODE_N",
321            Self::O => "SDL_SCANCODE_O",
322            Self::P => "SDL_SCANCODE_P",
323            Self::Q => "SDL_SCANCODE_Q",
324            Self::R => "SDL_SCANCODE_R",
325            Self::S => "SDL_SCANCODE_S",
326            Self::T => "SDL_SCANCODE_T",
327            Self::U => "SDL_SCANCODE_U",
328            Self::V => "SDL_SCANCODE_V",
329            Self::W => "SDL_SCANCODE_W",
330            Self::X => "SDL_SCANCODE_X",
331            Self::Y => "SDL_SCANCODE_Y",
332            Self::Z => "SDL_SCANCODE_Z",
333            Self::_1 => "SDL_SCANCODE_1",
334            Self::_2 => "SDL_SCANCODE_2",
335            Self::_3 => "SDL_SCANCODE_3",
336            Self::_4 => "SDL_SCANCODE_4",
337            Self::_5 => "SDL_SCANCODE_5",
338            Self::_6 => "SDL_SCANCODE_6",
339            Self::_7 => "SDL_SCANCODE_7",
340            Self::_8 => "SDL_SCANCODE_8",
341            Self::_9 => "SDL_SCANCODE_9",
342            Self::_0 => "SDL_SCANCODE_0",
343            Self::RETURN => "SDL_SCANCODE_RETURN",
344            Self::ESCAPE => "SDL_SCANCODE_ESCAPE",
345            Self::BACKSPACE => "SDL_SCANCODE_BACKSPACE",
346            Self::TAB => "SDL_SCANCODE_TAB",
347            Self::SPACE => "SDL_SCANCODE_SPACE",
348            Self::MINUS => "SDL_SCANCODE_MINUS",
349            Self::EQUALS => "SDL_SCANCODE_EQUALS",
350            Self::LEFTBRACKET => "SDL_SCANCODE_LEFTBRACKET",
351            Self::RIGHTBRACKET => "SDL_SCANCODE_RIGHTBRACKET",
352            Self::BACKSLASH => "SDL_SCANCODE_BACKSLASH",
353            Self::NONUSHASH => "SDL_SCANCODE_NONUSHASH",
354            Self::SEMICOLON => "SDL_SCANCODE_SEMICOLON",
355            Self::APOSTROPHE => "SDL_SCANCODE_APOSTROPHE",
356            Self::GRAVE => "SDL_SCANCODE_GRAVE",
357            Self::COMMA => "SDL_SCANCODE_COMMA",
358            Self::PERIOD => "SDL_SCANCODE_PERIOD",
359            Self::SLASH => "SDL_SCANCODE_SLASH",
360            Self::CAPSLOCK => "SDL_SCANCODE_CAPSLOCK",
361            Self::F1 => "SDL_SCANCODE_F1",
362            Self::F2 => "SDL_SCANCODE_F2",
363            Self::F3 => "SDL_SCANCODE_F3",
364            Self::F4 => "SDL_SCANCODE_F4",
365            Self::F5 => "SDL_SCANCODE_F5",
366            Self::F6 => "SDL_SCANCODE_F6",
367            Self::F7 => "SDL_SCANCODE_F7",
368            Self::F8 => "SDL_SCANCODE_F8",
369            Self::F9 => "SDL_SCANCODE_F9",
370            Self::F10 => "SDL_SCANCODE_F10",
371            Self::F11 => "SDL_SCANCODE_F11",
372            Self::F12 => "SDL_SCANCODE_F12",
373            Self::PRINTSCREEN => "SDL_SCANCODE_PRINTSCREEN",
374            Self::SCROLLLOCK => "SDL_SCANCODE_SCROLLLOCK",
375            Self::PAUSE => "SDL_SCANCODE_PAUSE",
376            Self::INSERT => "SDL_SCANCODE_INSERT",
377            Self::HOME => "SDL_SCANCODE_HOME",
378            Self::PAGEUP => "SDL_SCANCODE_PAGEUP",
379            Self::DELETE => "SDL_SCANCODE_DELETE",
380            Self::END => "SDL_SCANCODE_END",
381            Self::PAGEDOWN => "SDL_SCANCODE_PAGEDOWN",
382            Self::RIGHT => "SDL_SCANCODE_RIGHT",
383            Self::LEFT => "SDL_SCANCODE_LEFT",
384            Self::DOWN => "SDL_SCANCODE_DOWN",
385            Self::UP => "SDL_SCANCODE_UP",
386            Self::NUMLOCKCLEAR => "SDL_SCANCODE_NUMLOCKCLEAR",
387            Self::KP_DIVIDE => "SDL_SCANCODE_KP_DIVIDE",
388            Self::KP_MULTIPLY => "SDL_SCANCODE_KP_MULTIPLY",
389            Self::KP_MINUS => "SDL_SCANCODE_KP_MINUS",
390            Self::KP_PLUS => "SDL_SCANCODE_KP_PLUS",
391            Self::KP_ENTER => "SDL_SCANCODE_KP_ENTER",
392            Self::KP_1 => "SDL_SCANCODE_KP_1",
393            Self::KP_2 => "SDL_SCANCODE_KP_2",
394            Self::KP_3 => "SDL_SCANCODE_KP_3",
395            Self::KP_4 => "SDL_SCANCODE_KP_4",
396            Self::KP_5 => "SDL_SCANCODE_KP_5",
397            Self::KP_6 => "SDL_SCANCODE_KP_6",
398            Self::KP_7 => "SDL_SCANCODE_KP_7",
399            Self::KP_8 => "SDL_SCANCODE_KP_8",
400            Self::KP_9 => "SDL_SCANCODE_KP_9",
401            Self::KP_0 => "SDL_SCANCODE_KP_0",
402            Self::KP_PERIOD => "SDL_SCANCODE_KP_PERIOD",
403            Self::NONUSBACKSLASH => "SDL_SCANCODE_NONUSBACKSLASH",
404            Self::APPLICATION => "SDL_SCANCODE_APPLICATION",
405            Self::POWER => "SDL_SCANCODE_POWER",
406            Self::KP_EQUALS => "SDL_SCANCODE_KP_EQUALS",
407            Self::F13 => "SDL_SCANCODE_F13",
408            Self::F14 => "SDL_SCANCODE_F14",
409            Self::F15 => "SDL_SCANCODE_F15",
410            Self::F16 => "SDL_SCANCODE_F16",
411            Self::F17 => "SDL_SCANCODE_F17",
412            Self::F18 => "SDL_SCANCODE_F18",
413            Self::F19 => "SDL_SCANCODE_F19",
414            Self::F20 => "SDL_SCANCODE_F20",
415            Self::F21 => "SDL_SCANCODE_F21",
416            Self::F22 => "SDL_SCANCODE_F22",
417            Self::F23 => "SDL_SCANCODE_F23",
418            Self::F24 => "SDL_SCANCODE_F24",
419            Self::EXECUTE => "SDL_SCANCODE_EXECUTE",
420            Self::HELP => "SDL_SCANCODE_HELP",
421            Self::MENU => "SDL_SCANCODE_MENU",
422            Self::SELECT => "SDL_SCANCODE_SELECT",
423            Self::STOP => "SDL_SCANCODE_STOP",
424            Self::AGAIN => "SDL_SCANCODE_AGAIN",
425            Self::UNDO => "SDL_SCANCODE_UNDO",
426            Self::CUT => "SDL_SCANCODE_CUT",
427            Self::COPY => "SDL_SCANCODE_COPY",
428            Self::PASTE => "SDL_SCANCODE_PASTE",
429            Self::FIND => "SDL_SCANCODE_FIND",
430            Self::MUTE => "SDL_SCANCODE_MUTE",
431            Self::VOLUMEUP => "SDL_SCANCODE_VOLUMEUP",
432            Self::VOLUMEDOWN => "SDL_SCANCODE_VOLUMEDOWN",
433            Self::KP_COMMA => "SDL_SCANCODE_KP_COMMA",
434            Self::KP_EQUALSAS400 => "SDL_SCANCODE_KP_EQUALSAS400",
435            Self::INTERNATIONAL1 => "SDL_SCANCODE_INTERNATIONAL1",
436            Self::INTERNATIONAL2 => "SDL_SCANCODE_INTERNATIONAL2",
437            Self::INTERNATIONAL3 => "SDL_SCANCODE_INTERNATIONAL3",
438            Self::INTERNATIONAL4 => "SDL_SCANCODE_INTERNATIONAL4",
439            Self::INTERNATIONAL5 => "SDL_SCANCODE_INTERNATIONAL5",
440            Self::INTERNATIONAL6 => "SDL_SCANCODE_INTERNATIONAL6",
441            Self::INTERNATIONAL7 => "SDL_SCANCODE_INTERNATIONAL7",
442            Self::INTERNATIONAL8 => "SDL_SCANCODE_INTERNATIONAL8",
443            Self::INTERNATIONAL9 => "SDL_SCANCODE_INTERNATIONAL9",
444            Self::LANG1 => "SDL_SCANCODE_LANG1",
445            Self::LANG2 => "SDL_SCANCODE_LANG2",
446            Self::LANG3 => "SDL_SCANCODE_LANG3",
447            Self::LANG4 => "SDL_SCANCODE_LANG4",
448            Self::LANG5 => "SDL_SCANCODE_LANG5",
449            Self::LANG6 => "SDL_SCANCODE_LANG6",
450            Self::LANG7 => "SDL_SCANCODE_LANG7",
451            Self::LANG8 => "SDL_SCANCODE_LANG8",
452            Self::LANG9 => "SDL_SCANCODE_LANG9",
453            Self::ALTERASE => "SDL_SCANCODE_ALTERASE",
454            Self::SYSREQ => "SDL_SCANCODE_SYSREQ",
455            Self::CANCEL => "SDL_SCANCODE_CANCEL",
456            Self::CLEAR => "SDL_SCANCODE_CLEAR",
457            Self::PRIOR => "SDL_SCANCODE_PRIOR",
458            Self::RETURN2 => "SDL_SCANCODE_RETURN2",
459            Self::SEPARATOR => "SDL_SCANCODE_SEPARATOR",
460            Self::OUT => "SDL_SCANCODE_OUT",
461            Self::OPER => "SDL_SCANCODE_OPER",
462            Self::CLEARAGAIN => "SDL_SCANCODE_CLEARAGAIN",
463            Self::CRSEL => "SDL_SCANCODE_CRSEL",
464            Self::EXSEL => "SDL_SCANCODE_EXSEL",
465            Self::KP_00 => "SDL_SCANCODE_KP_00",
466            Self::KP_000 => "SDL_SCANCODE_KP_000",
467            Self::THOUSANDSSEPARATOR => "SDL_SCANCODE_THOUSANDSSEPARATOR",
468            Self::DECIMALSEPARATOR => "SDL_SCANCODE_DECIMALSEPARATOR",
469            Self::CURRENCYUNIT => "SDL_SCANCODE_CURRENCYUNIT",
470            Self::CURRENCYSUBUNIT => "SDL_SCANCODE_CURRENCYSUBUNIT",
471            Self::KP_LEFTPAREN => "SDL_SCANCODE_KP_LEFTPAREN",
472            Self::KP_RIGHTPAREN => "SDL_SCANCODE_KP_RIGHTPAREN",
473            Self::KP_LEFTBRACE => "SDL_SCANCODE_KP_LEFTBRACE",
474            Self::KP_RIGHTBRACE => "SDL_SCANCODE_KP_RIGHTBRACE",
475            Self::KP_TAB => "SDL_SCANCODE_KP_TAB",
476            Self::KP_BACKSPACE => "SDL_SCANCODE_KP_BACKSPACE",
477            Self::KP_A => "SDL_SCANCODE_KP_A",
478            Self::KP_B => "SDL_SCANCODE_KP_B",
479            Self::KP_C => "SDL_SCANCODE_KP_C",
480            Self::KP_D => "SDL_SCANCODE_KP_D",
481            Self::KP_E => "SDL_SCANCODE_KP_E",
482            Self::KP_F => "SDL_SCANCODE_KP_F",
483            Self::KP_XOR => "SDL_SCANCODE_KP_XOR",
484            Self::KP_POWER => "SDL_SCANCODE_KP_POWER",
485            Self::KP_PERCENT => "SDL_SCANCODE_KP_PERCENT",
486            Self::KP_LESS => "SDL_SCANCODE_KP_LESS",
487            Self::KP_GREATER => "SDL_SCANCODE_KP_GREATER",
488            Self::KP_AMPERSAND => "SDL_SCANCODE_KP_AMPERSAND",
489            Self::KP_DBLAMPERSAND => "SDL_SCANCODE_KP_DBLAMPERSAND",
490            Self::KP_VERTICALBAR => "SDL_SCANCODE_KP_VERTICALBAR",
491            Self::KP_DBLVERTICALBAR => "SDL_SCANCODE_KP_DBLVERTICALBAR",
492            Self::KP_COLON => "SDL_SCANCODE_KP_COLON",
493            Self::KP_HASH => "SDL_SCANCODE_KP_HASH",
494            Self::KP_SPACE => "SDL_SCANCODE_KP_SPACE",
495            Self::KP_AT => "SDL_SCANCODE_KP_AT",
496            Self::KP_EXCLAM => "SDL_SCANCODE_KP_EXCLAM",
497            Self::KP_MEMSTORE => "SDL_SCANCODE_KP_MEMSTORE",
498            Self::KP_MEMRECALL => "SDL_SCANCODE_KP_MEMRECALL",
499            Self::KP_MEMCLEAR => "SDL_SCANCODE_KP_MEMCLEAR",
500            Self::KP_MEMADD => "SDL_SCANCODE_KP_MEMADD",
501            Self::KP_MEMSUBTRACT => "SDL_SCANCODE_KP_MEMSUBTRACT",
502            Self::KP_MEMMULTIPLY => "SDL_SCANCODE_KP_MEMMULTIPLY",
503            Self::KP_MEMDIVIDE => "SDL_SCANCODE_KP_MEMDIVIDE",
504            Self::KP_PLUSMINUS => "SDL_SCANCODE_KP_PLUSMINUS",
505            Self::KP_CLEAR => "SDL_SCANCODE_KP_CLEAR",
506            Self::KP_CLEARENTRY => "SDL_SCANCODE_KP_CLEARENTRY",
507            Self::KP_BINARY => "SDL_SCANCODE_KP_BINARY",
508            Self::KP_OCTAL => "SDL_SCANCODE_KP_OCTAL",
509            Self::KP_DECIMAL => "SDL_SCANCODE_KP_DECIMAL",
510            Self::KP_HEXADECIMAL => "SDL_SCANCODE_KP_HEXADECIMAL",
511            Self::LCTRL => "SDL_SCANCODE_LCTRL",
512            Self::LSHIFT => "SDL_SCANCODE_LSHIFT",
513            Self::LALT => "SDL_SCANCODE_LALT",
514            Self::LGUI => "SDL_SCANCODE_LGUI",
515            Self::RCTRL => "SDL_SCANCODE_RCTRL",
516            Self::RSHIFT => "SDL_SCANCODE_RSHIFT",
517            Self::RALT => "SDL_SCANCODE_RALT",
518            Self::RGUI => "SDL_SCANCODE_RGUI",
519            Self::MODE => "SDL_SCANCODE_MODE",
520            Self::SLEEP => "SDL_SCANCODE_SLEEP",
521            Self::WAKE => "SDL_SCANCODE_WAKE",
522            Self::CHANNEL_INCREMENT => "SDL_SCANCODE_CHANNEL_INCREMENT",
523            Self::CHANNEL_DECREMENT => "SDL_SCANCODE_CHANNEL_DECREMENT",
524            Self::MEDIA_PLAY => "SDL_SCANCODE_MEDIA_PLAY",
525            Self::MEDIA_PAUSE => "SDL_SCANCODE_MEDIA_PAUSE",
526            Self::MEDIA_RECORD => "SDL_SCANCODE_MEDIA_RECORD",
527            Self::MEDIA_FAST_FORWARD => "SDL_SCANCODE_MEDIA_FAST_FORWARD",
528            Self::MEDIA_REWIND => "SDL_SCANCODE_MEDIA_REWIND",
529            Self::MEDIA_NEXT_TRACK => "SDL_SCANCODE_MEDIA_NEXT_TRACK",
530            Self::MEDIA_PREVIOUS_TRACK => "SDL_SCANCODE_MEDIA_PREVIOUS_TRACK",
531            Self::MEDIA_STOP => "SDL_SCANCODE_MEDIA_STOP",
532            Self::MEDIA_EJECT => "SDL_SCANCODE_MEDIA_EJECT",
533            Self::MEDIA_PLAY_PAUSE => "SDL_SCANCODE_MEDIA_PLAY_PAUSE",
534            Self::MEDIA_SELECT => "SDL_SCANCODE_MEDIA_SELECT",
535            Self::AC_NEW => "SDL_SCANCODE_AC_NEW",
536            Self::AC_OPEN => "SDL_SCANCODE_AC_OPEN",
537            Self::AC_CLOSE => "SDL_SCANCODE_AC_CLOSE",
538            Self::AC_EXIT => "SDL_SCANCODE_AC_EXIT",
539            Self::AC_SAVE => "SDL_SCANCODE_AC_SAVE",
540            Self::AC_PRINT => "SDL_SCANCODE_AC_PRINT",
541            Self::AC_PROPERTIES => "SDL_SCANCODE_AC_PROPERTIES",
542            Self::AC_SEARCH => "SDL_SCANCODE_AC_SEARCH",
543            Self::AC_HOME => "SDL_SCANCODE_AC_HOME",
544            Self::AC_BACK => "SDL_SCANCODE_AC_BACK",
545            Self::AC_FORWARD => "SDL_SCANCODE_AC_FORWARD",
546            Self::AC_STOP => "SDL_SCANCODE_AC_STOP",
547            Self::AC_REFRESH => "SDL_SCANCODE_AC_REFRESH",
548            Self::AC_BOOKMARKS => "SDL_SCANCODE_AC_BOOKMARKS",
549            Self::SOFTLEFT => "SDL_SCANCODE_SOFTLEFT",
550            Self::SOFTRIGHT => "SDL_SCANCODE_SOFTRIGHT",
551            Self::CALL => "SDL_SCANCODE_CALL",
552            Self::ENDCALL => "SDL_SCANCODE_ENDCALL",
553            Self::RESERVED => "SDL_SCANCODE_RESERVED",
554            Self::COUNT => "SDL_SCANCODE_COUNT",
555
556            _ => return write!(f, "SDL_Scancode({})", self.0),
557        })
558    }
559}
560
561impl SDL_Scancode {
562    pub const UNKNOWN: Self = Self((0 as ::core::ffi::c_int));
563    pub const A: Self = Self((4 as ::core::ffi::c_int));
564    pub const B: Self = Self((5 as ::core::ffi::c_int));
565    pub const C: Self = Self((6 as ::core::ffi::c_int));
566    pub const D: Self = Self((7 as ::core::ffi::c_int));
567    pub const E: Self = Self((8 as ::core::ffi::c_int));
568    pub const F: Self = Self((9 as ::core::ffi::c_int));
569    pub const G: Self = Self((10 as ::core::ffi::c_int));
570    pub const H: Self = Self((11 as ::core::ffi::c_int));
571    pub const I: Self = Self((12 as ::core::ffi::c_int));
572    pub const J: Self = Self((13 as ::core::ffi::c_int));
573    pub const K: Self = Self((14 as ::core::ffi::c_int));
574    pub const L: Self = Self((15 as ::core::ffi::c_int));
575    pub const M: Self = Self((16 as ::core::ffi::c_int));
576    pub const N: Self = Self((17 as ::core::ffi::c_int));
577    pub const O: Self = Self((18 as ::core::ffi::c_int));
578    pub const P: Self = Self((19 as ::core::ffi::c_int));
579    pub const Q: Self = Self((20 as ::core::ffi::c_int));
580    pub const R: Self = Self((21 as ::core::ffi::c_int));
581    pub const S: Self = Self((22 as ::core::ffi::c_int));
582    pub const T: Self = Self((23 as ::core::ffi::c_int));
583    pub const U: Self = Self((24 as ::core::ffi::c_int));
584    pub const V: Self = Self((25 as ::core::ffi::c_int));
585    pub const W: Self = Self((26 as ::core::ffi::c_int));
586    pub const X: Self = Self((27 as ::core::ffi::c_int));
587    pub const Y: Self = Self((28 as ::core::ffi::c_int));
588    pub const Z: Self = Self((29 as ::core::ffi::c_int));
589    pub const _1: Self = Self((30 as ::core::ffi::c_int));
590    pub const _2: Self = Self((31 as ::core::ffi::c_int));
591    pub const _3: Self = Self((32 as ::core::ffi::c_int));
592    pub const _4: Self = Self((33 as ::core::ffi::c_int));
593    pub const _5: Self = Self((34 as ::core::ffi::c_int));
594    pub const _6: Self = Self((35 as ::core::ffi::c_int));
595    pub const _7: Self = Self((36 as ::core::ffi::c_int));
596    pub const _8: Self = Self((37 as ::core::ffi::c_int));
597    pub const _9: Self = Self((38 as ::core::ffi::c_int));
598    pub const _0: Self = Self((39 as ::core::ffi::c_int));
599    pub const RETURN: Self = Self((40 as ::core::ffi::c_int));
600    pub const ESCAPE: Self = Self((41 as ::core::ffi::c_int));
601    pub const BACKSPACE: Self = Self((42 as ::core::ffi::c_int));
602    pub const TAB: Self = Self((43 as ::core::ffi::c_int));
603    pub const SPACE: Self = Self((44 as ::core::ffi::c_int));
604    pub const MINUS: Self = Self((45 as ::core::ffi::c_int));
605    pub const EQUALS: Self = Self((46 as ::core::ffi::c_int));
606    pub const LEFTBRACKET: Self = Self((47 as ::core::ffi::c_int));
607    pub const RIGHTBRACKET: Self = Self((48 as ::core::ffi::c_int));
608    /// Located at the lower left of the return
609    /// key on ISO keyboards and at the right end
610    /// of the QWERTY row on ANSI keyboards.
611    /// Produces REVERSE SOLIDUS (backslash) and
612    /// VERTICAL LINE in a US layout, REVERSE
613    /// SOLIDUS and VERTICAL LINE in a UK Mac
614    /// layout, NUMBER SIGN and TILDE in a UK
615    /// Windows layout, DOLLAR SIGN and POUND SIGN
616    /// in a Swiss German layout, NUMBER SIGN and
617    /// APOSTROPHE in a German layout, GRAVE
618    /// ACCENT and POUND SIGN in a French Mac
619    /// layout, and ASTERISK and MICRO SIGN in a
620    /// French Windows layout.
621    pub const BACKSLASH: Self = Self((49 as ::core::ffi::c_int));
622    /// ISO USB keyboards actually use this code
623    /// instead of 49 for the same key, but all
624    /// OSes I've seen treat the two codes
625    /// identically. So, as an implementor, unless
626    /// your keyboard generates both of those
627    /// codes and your OS treats them differently,
628    /// you should generate [`SDL_SCANCODE_BACKSLASH`]
629    /// instead of this code. As a user, you
630    /// should not rely on this code because SDL
631    /// will never generate it with most (all?)
632    /// keyboards.
633    pub const NONUSHASH: Self = Self((50 as ::core::ffi::c_int));
634    pub const SEMICOLON: Self = Self((51 as ::core::ffi::c_int));
635    pub const APOSTROPHE: Self = Self((52 as ::core::ffi::c_int));
636    /// Located in the top left corner (on both ANSI
637    /// and ISO keyboards). Produces GRAVE ACCENT and
638    /// TILDE in a US Windows layout and in US and UK
639    /// Mac layouts on ANSI keyboards, GRAVE ACCENT
640    /// and NOT SIGN in a UK Windows layout, SECTION
641    /// SIGN and PLUS-MINUS SIGN in US and UK Mac
642    /// layouts on ISO keyboards, SECTION SIGN and
643    /// DEGREE SIGN in a Swiss German layout (Mac:
644    /// only on ISO keyboards), CIRCUMFLEX ACCENT and
645    /// DEGREE SIGN in a German layout (Mac: only on
646    /// ISO keyboards), SUPERSCRIPT TWO and TILDE in a
647    /// French Windows layout, COMMERCIAL AT and
648    /// NUMBER SIGN in a French Mac layout on ISO
649    /// keyboards, and LESS-THAN SIGN and GREATER-THAN
650    /// SIGN in a Swiss German, German, or French Mac
651    /// layout on ANSI keyboards.
652    pub const GRAVE: Self = Self((53 as ::core::ffi::c_int));
653    pub const COMMA: Self = Self((54 as ::core::ffi::c_int));
654    pub const PERIOD: Self = Self((55 as ::core::ffi::c_int));
655    pub const SLASH: Self = Self((56 as ::core::ffi::c_int));
656    pub const CAPSLOCK: Self = Self((57 as ::core::ffi::c_int));
657    pub const F1: Self = Self((58 as ::core::ffi::c_int));
658    pub const F2: Self = Self((59 as ::core::ffi::c_int));
659    pub const F3: Self = Self((60 as ::core::ffi::c_int));
660    pub const F4: Self = Self((61 as ::core::ffi::c_int));
661    pub const F5: Self = Self((62 as ::core::ffi::c_int));
662    pub const F6: Self = Self((63 as ::core::ffi::c_int));
663    pub const F7: Self = Self((64 as ::core::ffi::c_int));
664    pub const F8: Self = Self((65 as ::core::ffi::c_int));
665    pub const F9: Self = Self((66 as ::core::ffi::c_int));
666    pub const F10: Self = Self((67 as ::core::ffi::c_int));
667    pub const F11: Self = Self((68 as ::core::ffi::c_int));
668    pub const F12: Self = Self((69 as ::core::ffi::c_int));
669    pub const PRINTSCREEN: Self = Self((70 as ::core::ffi::c_int));
670    pub const SCROLLLOCK: Self = Self((71 as ::core::ffi::c_int));
671    pub const PAUSE: Self = Self((72 as ::core::ffi::c_int));
672    /// insert on PC, help on some Mac keyboards (but
673    /// does send code 73, not 117)
674    pub const INSERT: Self = Self((73 as ::core::ffi::c_int));
675    pub const HOME: Self = Self((74 as ::core::ffi::c_int));
676    pub const PAGEUP: Self = Self((75 as ::core::ffi::c_int));
677    pub const DELETE: Self = Self((76 as ::core::ffi::c_int));
678    pub const END: Self = Self((77 as ::core::ffi::c_int));
679    pub const PAGEDOWN: Self = Self((78 as ::core::ffi::c_int));
680    pub const RIGHT: Self = Self((79 as ::core::ffi::c_int));
681    pub const LEFT: Self = Self((80 as ::core::ffi::c_int));
682    pub const DOWN: Self = Self((81 as ::core::ffi::c_int));
683    pub const UP: Self = Self((82 as ::core::ffi::c_int));
684    /// num lock on PC, clear on Mac keyboards
685    pub const NUMLOCKCLEAR: Self = Self((83 as ::core::ffi::c_int));
686    pub const KP_DIVIDE: Self = Self((84 as ::core::ffi::c_int));
687    pub const KP_MULTIPLY: Self = Self((85 as ::core::ffi::c_int));
688    pub const KP_MINUS: Self = Self((86 as ::core::ffi::c_int));
689    pub const KP_PLUS: Self = Self((87 as ::core::ffi::c_int));
690    pub const KP_ENTER: Self = Self((88 as ::core::ffi::c_int));
691    pub const KP_1: Self = Self((89 as ::core::ffi::c_int));
692    pub const KP_2: Self = Self((90 as ::core::ffi::c_int));
693    pub const KP_3: Self = Self((91 as ::core::ffi::c_int));
694    pub const KP_4: Self = Self((92 as ::core::ffi::c_int));
695    pub const KP_5: Self = Self((93 as ::core::ffi::c_int));
696    pub const KP_6: Self = Self((94 as ::core::ffi::c_int));
697    pub const KP_7: Self = Self((95 as ::core::ffi::c_int));
698    pub const KP_8: Self = Self((96 as ::core::ffi::c_int));
699    pub const KP_9: Self = Self((97 as ::core::ffi::c_int));
700    pub const KP_0: Self = Self((98 as ::core::ffi::c_int));
701    pub const KP_PERIOD: Self = Self((99 as ::core::ffi::c_int));
702    /// This is the additional key that ISO
703    /// keyboards have over ANSI ones,
704    /// located between left shift and Z.
705    /// Produces GRAVE ACCENT and TILDE in a
706    /// US or UK Mac layout, REVERSE SOLIDUS
707    /// (backslash) and VERTICAL LINE in a
708    /// US or UK Windows layout, and
709    /// LESS-THAN SIGN and GREATER-THAN SIGN
710    /// in a Swiss German, German, or French
711    /// layout.
712    pub const NONUSBACKSLASH: Self = Self((100 as ::core::ffi::c_int));
713    /// windows contextual menu, compose
714    pub const APPLICATION: Self = Self((101 as ::core::ffi::c_int));
715    /// The USB document says this is a status flag,
716    /// not a physical key - but some Mac keyboards
717    /// do have a power key.
718    pub const POWER: Self = Self((102 as ::core::ffi::c_int));
719    pub const KP_EQUALS: Self = Self((103 as ::core::ffi::c_int));
720    pub const F13: Self = Self((104 as ::core::ffi::c_int));
721    pub const F14: Self = Self((105 as ::core::ffi::c_int));
722    pub const F15: Self = Self((106 as ::core::ffi::c_int));
723    pub const F16: Self = Self((107 as ::core::ffi::c_int));
724    pub const F17: Self = Self((108 as ::core::ffi::c_int));
725    pub const F18: Self = Self((109 as ::core::ffi::c_int));
726    pub const F19: Self = Self((110 as ::core::ffi::c_int));
727    pub const F20: Self = Self((111 as ::core::ffi::c_int));
728    pub const F21: Self = Self((112 as ::core::ffi::c_int));
729    pub const F22: Self = Self((113 as ::core::ffi::c_int));
730    pub const F23: Self = Self((114 as ::core::ffi::c_int));
731    pub const F24: Self = Self((115 as ::core::ffi::c_int));
732    pub const EXECUTE: Self = Self((116 as ::core::ffi::c_int));
733    /// AL Integrated Help Center
734    pub const HELP: Self = Self((117 as ::core::ffi::c_int));
735    /// Menu (show menu)
736    pub const MENU: Self = Self((118 as ::core::ffi::c_int));
737    pub const SELECT: Self = Self((119 as ::core::ffi::c_int));
738    /// AC Stop
739    pub const STOP: Self = Self((120 as ::core::ffi::c_int));
740    /// AC Redo/Repeat
741    pub const AGAIN: Self = Self((121 as ::core::ffi::c_int));
742    /// AC Undo
743    pub const UNDO: Self = Self((122 as ::core::ffi::c_int));
744    /// AC Cut
745    pub const CUT: Self = Self((123 as ::core::ffi::c_int));
746    /// AC Copy
747    pub const COPY: Self = Self((124 as ::core::ffi::c_int));
748    /// AC Paste
749    pub const PASTE: Self = Self((125 as ::core::ffi::c_int));
750    /// AC Find
751    pub const FIND: Self = Self((126 as ::core::ffi::c_int));
752    pub const MUTE: Self = Self((127 as ::core::ffi::c_int));
753    pub const VOLUMEUP: Self = Self((128 as ::core::ffi::c_int));
754    pub const VOLUMEDOWN: Self = Self((129 as ::core::ffi::c_int));
755    pub const KP_COMMA: Self = Self((133 as ::core::ffi::c_int));
756    pub const KP_EQUALSAS400: Self = Self((134 as ::core::ffi::c_int));
757    /// used on Asian keyboards, see
758    /// footnotes in USB doc
759    pub const INTERNATIONAL1: Self = Self((135 as ::core::ffi::c_int));
760    pub const INTERNATIONAL2: Self = Self((136 as ::core::ffi::c_int));
761    /// Yen
762    pub const INTERNATIONAL3: Self = Self((137 as ::core::ffi::c_int));
763    pub const INTERNATIONAL4: Self = Self((138 as ::core::ffi::c_int));
764    pub const INTERNATIONAL5: Self = Self((139 as ::core::ffi::c_int));
765    pub const INTERNATIONAL6: Self = Self((140 as ::core::ffi::c_int));
766    pub const INTERNATIONAL7: Self = Self((141 as ::core::ffi::c_int));
767    pub const INTERNATIONAL8: Self = Self((142 as ::core::ffi::c_int));
768    pub const INTERNATIONAL9: Self = Self((143 as ::core::ffi::c_int));
769    /// Hangul/English toggle
770    pub const LANG1: Self = Self((144 as ::core::ffi::c_int));
771    /// Hanja conversion
772    pub const LANG2: Self = Self((145 as ::core::ffi::c_int));
773    /// Katakana
774    pub const LANG3: Self = Self((146 as ::core::ffi::c_int));
775    /// Hiragana
776    pub const LANG4: Self = Self((147 as ::core::ffi::c_int));
777    /// Zenkaku/Hankaku
778    pub const LANG5: Self = Self((148 as ::core::ffi::c_int));
779    /// reserved
780    pub const LANG6: Self = Self((149 as ::core::ffi::c_int));
781    /// reserved
782    pub const LANG7: Self = Self((150 as ::core::ffi::c_int));
783    /// reserved
784    pub const LANG8: Self = Self((151 as ::core::ffi::c_int));
785    /// reserved
786    pub const LANG9: Self = Self((152 as ::core::ffi::c_int));
787    /// Erase-Eaze
788    pub const ALTERASE: Self = Self((153 as ::core::ffi::c_int));
789    pub const SYSREQ: Self = Self((154 as ::core::ffi::c_int));
790    /// AC Cancel
791    pub const CANCEL: Self = Self((155 as ::core::ffi::c_int));
792    pub const CLEAR: Self = Self((156 as ::core::ffi::c_int));
793    pub const PRIOR: Self = Self((157 as ::core::ffi::c_int));
794    pub const RETURN2: Self = Self((158 as ::core::ffi::c_int));
795    pub const SEPARATOR: Self = Self((159 as ::core::ffi::c_int));
796    pub const OUT: Self = Self((160 as ::core::ffi::c_int));
797    pub const OPER: Self = Self((161 as ::core::ffi::c_int));
798    pub const CLEARAGAIN: Self = Self((162 as ::core::ffi::c_int));
799    pub const CRSEL: Self = Self((163 as ::core::ffi::c_int));
800    pub const EXSEL: Self = Self((164 as ::core::ffi::c_int));
801    pub const KP_00: Self = Self((176 as ::core::ffi::c_int));
802    pub const KP_000: Self = Self((177 as ::core::ffi::c_int));
803    pub const THOUSANDSSEPARATOR: Self = Self((178 as ::core::ffi::c_int));
804    pub const DECIMALSEPARATOR: Self = Self((179 as ::core::ffi::c_int));
805    pub const CURRENCYUNIT: Self = Self((180 as ::core::ffi::c_int));
806    pub const CURRENCYSUBUNIT: Self = Self((181 as ::core::ffi::c_int));
807    pub const KP_LEFTPAREN: Self = Self((182 as ::core::ffi::c_int));
808    pub const KP_RIGHTPAREN: Self = Self((183 as ::core::ffi::c_int));
809    pub const KP_LEFTBRACE: Self = Self((184 as ::core::ffi::c_int));
810    pub const KP_RIGHTBRACE: Self = Self((185 as ::core::ffi::c_int));
811    pub const KP_TAB: Self = Self((186 as ::core::ffi::c_int));
812    pub const KP_BACKSPACE: Self = Self((187 as ::core::ffi::c_int));
813    pub const KP_A: Self = Self((188 as ::core::ffi::c_int));
814    pub const KP_B: Self = Self((189 as ::core::ffi::c_int));
815    pub const KP_C: Self = Self((190 as ::core::ffi::c_int));
816    pub const KP_D: Self = Self((191 as ::core::ffi::c_int));
817    pub const KP_E: Self = Self((192 as ::core::ffi::c_int));
818    pub const KP_F: Self = Self((193 as ::core::ffi::c_int));
819    pub const KP_XOR: Self = Self((194 as ::core::ffi::c_int));
820    pub const KP_POWER: Self = Self((195 as ::core::ffi::c_int));
821    pub const KP_PERCENT: Self = Self((196 as ::core::ffi::c_int));
822    pub const KP_LESS: Self = Self((197 as ::core::ffi::c_int));
823    pub const KP_GREATER: Self = Self((198 as ::core::ffi::c_int));
824    pub const KP_AMPERSAND: Self = Self((199 as ::core::ffi::c_int));
825    pub const KP_DBLAMPERSAND: Self = Self((200 as ::core::ffi::c_int));
826    pub const KP_VERTICALBAR: Self = Self((201 as ::core::ffi::c_int));
827    pub const KP_DBLVERTICALBAR: Self = Self((202 as ::core::ffi::c_int));
828    pub const KP_COLON: Self = Self((203 as ::core::ffi::c_int));
829    pub const KP_HASH: Self = Self((204 as ::core::ffi::c_int));
830    pub const KP_SPACE: Self = Self((205 as ::core::ffi::c_int));
831    pub const KP_AT: Self = Self((206 as ::core::ffi::c_int));
832    pub const KP_EXCLAM: Self = Self((207 as ::core::ffi::c_int));
833    pub const KP_MEMSTORE: Self = Self((208 as ::core::ffi::c_int));
834    pub const KP_MEMRECALL: Self = Self((209 as ::core::ffi::c_int));
835    pub const KP_MEMCLEAR: Self = Self((210 as ::core::ffi::c_int));
836    pub const KP_MEMADD: Self = Self((211 as ::core::ffi::c_int));
837    pub const KP_MEMSUBTRACT: Self = Self((212 as ::core::ffi::c_int));
838    pub const KP_MEMMULTIPLY: Self = Self((213 as ::core::ffi::c_int));
839    pub const KP_MEMDIVIDE: Self = Self((214 as ::core::ffi::c_int));
840    pub const KP_PLUSMINUS: Self = Self((215 as ::core::ffi::c_int));
841    pub const KP_CLEAR: Self = Self((216 as ::core::ffi::c_int));
842    pub const KP_CLEARENTRY: Self = Self((217 as ::core::ffi::c_int));
843    pub const KP_BINARY: Self = Self((218 as ::core::ffi::c_int));
844    pub const KP_OCTAL: Self = Self((219 as ::core::ffi::c_int));
845    pub const KP_DECIMAL: Self = Self((220 as ::core::ffi::c_int));
846    pub const KP_HEXADECIMAL: Self = Self((221 as ::core::ffi::c_int));
847    pub const LCTRL: Self = Self((224 as ::core::ffi::c_int));
848    pub const LSHIFT: Self = Self((225 as ::core::ffi::c_int));
849    /// alt, option
850    pub const LALT: Self = Self((226 as ::core::ffi::c_int));
851    /// windows, command (apple), meta
852    pub const LGUI: Self = Self((227 as ::core::ffi::c_int));
853    pub const RCTRL: Self = Self((228 as ::core::ffi::c_int));
854    pub const RSHIFT: Self = Self((229 as ::core::ffi::c_int));
855    /// alt gr, option
856    pub const RALT: Self = Self((230 as ::core::ffi::c_int));
857    /// windows, command (apple), meta
858    pub const RGUI: Self = Self((231 as ::core::ffi::c_int));
859    /// I'm not sure if this is really not covered
860    /// by any of the above, but since there's a
861    /// special [`SDL_KMOD_MODE`] for it I'm adding it here
862    pub const MODE: Self = Self((257 as ::core::ffi::c_int));
863    /// Sleep
864    pub const SLEEP: Self = Self((258 as ::core::ffi::c_int));
865    /// Wake
866    pub const WAKE: Self = Self((259 as ::core::ffi::c_int));
867    /// Channel Increment
868    pub const CHANNEL_INCREMENT: Self = Self((260 as ::core::ffi::c_int));
869    /// Channel Decrement
870    pub const CHANNEL_DECREMENT: Self = Self((261 as ::core::ffi::c_int));
871    /// Play
872    pub const MEDIA_PLAY: Self = Self((262 as ::core::ffi::c_int));
873    /// Pause
874    pub const MEDIA_PAUSE: Self = Self((263 as ::core::ffi::c_int));
875    /// Record
876    pub const MEDIA_RECORD: Self = Self((264 as ::core::ffi::c_int));
877    /// Fast Forward
878    pub const MEDIA_FAST_FORWARD: Self = Self((265 as ::core::ffi::c_int));
879    /// Rewind
880    pub const MEDIA_REWIND: Self = Self((266 as ::core::ffi::c_int));
881    /// Next Track
882    pub const MEDIA_NEXT_TRACK: Self = Self((267 as ::core::ffi::c_int));
883    /// Previous Track
884    pub const MEDIA_PREVIOUS_TRACK: Self = Self((268 as ::core::ffi::c_int));
885    /// Stop
886    pub const MEDIA_STOP: Self = Self((269 as ::core::ffi::c_int));
887    /// Eject
888    pub const MEDIA_EJECT: Self = Self((270 as ::core::ffi::c_int));
889    /// Play / Pause
890    pub const MEDIA_PLAY_PAUSE: Self = Self((271 as ::core::ffi::c_int));
891    pub const MEDIA_SELECT: Self = Self((272 as ::core::ffi::c_int));
892    /// AC New
893    pub const AC_NEW: Self = Self((273 as ::core::ffi::c_int));
894    /// AC Open
895    pub const AC_OPEN: Self = Self((274 as ::core::ffi::c_int));
896    /// AC Close
897    pub const AC_CLOSE: Self = Self((275 as ::core::ffi::c_int));
898    /// AC Exit
899    pub const AC_EXIT: Self = Self((276 as ::core::ffi::c_int));
900    /// AC Save
901    pub const AC_SAVE: Self = Self((277 as ::core::ffi::c_int));
902    /// AC Print
903    pub const AC_PRINT: Self = Self((278 as ::core::ffi::c_int));
904    /// AC Properties
905    pub const AC_PROPERTIES: Self = Self((279 as ::core::ffi::c_int));
906    /// AC Search
907    pub const AC_SEARCH: Self = Self((280 as ::core::ffi::c_int));
908    /// AC Home
909    pub const AC_HOME: Self = Self((281 as ::core::ffi::c_int));
910    /// AC Back
911    pub const AC_BACK: Self = Self((282 as ::core::ffi::c_int));
912    /// AC Forward
913    pub const AC_FORWARD: Self = Self((283 as ::core::ffi::c_int));
914    /// AC Stop
915    pub const AC_STOP: Self = Self((284 as ::core::ffi::c_int));
916    /// AC Refresh
917    pub const AC_REFRESH: Self = Self((285 as ::core::ffi::c_int));
918    /// AC Bookmarks
919    pub const AC_BOOKMARKS: Self = Self((286 as ::core::ffi::c_int));
920    /// Usually situated below the display on phones and
921    /// used as a multi-function feature key for selecting
922    /// a software defined function shown on the bottom left
923    /// of the display.
924    pub const SOFTLEFT: Self = Self((287 as ::core::ffi::c_int));
925    /// Usually situated below the display on phones and
926    /// used as a multi-function feature key for selecting
927    /// a software defined function shown on the bottom right
928    /// of the display.
929    pub const SOFTRIGHT: Self = Self((288 as ::core::ffi::c_int));
930    /// Used for accepting phone calls.
931    pub const CALL: Self = Self((289 as ::core::ffi::c_int));
932    /// Used for rejecting phone calls.
933    pub const ENDCALL: Self = Self((290 as ::core::ffi::c_int));
934    /// 400-500 reserved for dynamic keycodes
935    pub const RESERVED: Self = Self((400 as ::core::ffi::c_int));
936    /// not a key, just marks the number of scancodes for array bounds
937    pub const COUNT: Self = Self((512 as ::core::ffi::c_int));
938}
939
940pub const SDL_SCANCODE_UNKNOWN: SDL_Scancode = SDL_Scancode::UNKNOWN;
941pub const SDL_SCANCODE_A: SDL_Scancode = SDL_Scancode::A;
942pub const SDL_SCANCODE_B: SDL_Scancode = SDL_Scancode::B;
943pub const SDL_SCANCODE_C: SDL_Scancode = SDL_Scancode::C;
944pub const SDL_SCANCODE_D: SDL_Scancode = SDL_Scancode::D;
945pub const SDL_SCANCODE_E: SDL_Scancode = SDL_Scancode::E;
946pub const SDL_SCANCODE_F: SDL_Scancode = SDL_Scancode::F;
947pub const SDL_SCANCODE_G: SDL_Scancode = SDL_Scancode::G;
948pub const SDL_SCANCODE_H: SDL_Scancode = SDL_Scancode::H;
949pub const SDL_SCANCODE_I: SDL_Scancode = SDL_Scancode::I;
950pub const SDL_SCANCODE_J: SDL_Scancode = SDL_Scancode::J;
951pub const SDL_SCANCODE_K: SDL_Scancode = SDL_Scancode::K;
952pub const SDL_SCANCODE_L: SDL_Scancode = SDL_Scancode::L;
953pub const SDL_SCANCODE_M: SDL_Scancode = SDL_Scancode::M;
954pub const SDL_SCANCODE_N: SDL_Scancode = SDL_Scancode::N;
955pub const SDL_SCANCODE_O: SDL_Scancode = SDL_Scancode::O;
956pub const SDL_SCANCODE_P: SDL_Scancode = SDL_Scancode::P;
957pub const SDL_SCANCODE_Q: SDL_Scancode = SDL_Scancode::Q;
958pub const SDL_SCANCODE_R: SDL_Scancode = SDL_Scancode::R;
959pub const SDL_SCANCODE_S: SDL_Scancode = SDL_Scancode::S;
960pub const SDL_SCANCODE_T: SDL_Scancode = SDL_Scancode::T;
961pub const SDL_SCANCODE_U: SDL_Scancode = SDL_Scancode::U;
962pub const SDL_SCANCODE_V: SDL_Scancode = SDL_Scancode::V;
963pub const SDL_SCANCODE_W: SDL_Scancode = SDL_Scancode::W;
964pub const SDL_SCANCODE_X: SDL_Scancode = SDL_Scancode::X;
965pub const SDL_SCANCODE_Y: SDL_Scancode = SDL_Scancode::Y;
966pub const SDL_SCANCODE_Z: SDL_Scancode = SDL_Scancode::Z;
967pub const SDL_SCANCODE_1: SDL_Scancode = SDL_Scancode::_1;
968pub const SDL_SCANCODE_2: SDL_Scancode = SDL_Scancode::_2;
969pub const SDL_SCANCODE_3: SDL_Scancode = SDL_Scancode::_3;
970pub const SDL_SCANCODE_4: SDL_Scancode = SDL_Scancode::_4;
971pub const SDL_SCANCODE_5: SDL_Scancode = SDL_Scancode::_5;
972pub const SDL_SCANCODE_6: SDL_Scancode = SDL_Scancode::_6;
973pub const SDL_SCANCODE_7: SDL_Scancode = SDL_Scancode::_7;
974pub const SDL_SCANCODE_8: SDL_Scancode = SDL_Scancode::_8;
975pub const SDL_SCANCODE_9: SDL_Scancode = SDL_Scancode::_9;
976pub const SDL_SCANCODE_0: SDL_Scancode = SDL_Scancode::_0;
977pub const SDL_SCANCODE_RETURN: SDL_Scancode = SDL_Scancode::RETURN;
978pub const SDL_SCANCODE_ESCAPE: SDL_Scancode = SDL_Scancode::ESCAPE;
979pub const SDL_SCANCODE_BACKSPACE: SDL_Scancode = SDL_Scancode::BACKSPACE;
980pub const SDL_SCANCODE_TAB: SDL_Scancode = SDL_Scancode::TAB;
981pub const SDL_SCANCODE_SPACE: SDL_Scancode = SDL_Scancode::SPACE;
982pub const SDL_SCANCODE_MINUS: SDL_Scancode = SDL_Scancode::MINUS;
983pub const SDL_SCANCODE_EQUALS: SDL_Scancode = SDL_Scancode::EQUALS;
984pub const SDL_SCANCODE_LEFTBRACKET: SDL_Scancode = SDL_Scancode::LEFTBRACKET;
985pub const SDL_SCANCODE_RIGHTBRACKET: SDL_Scancode = SDL_Scancode::RIGHTBRACKET;
986/// Located at the lower left of the return
987/// key on ISO keyboards and at the right end
988/// of the QWERTY row on ANSI keyboards.
989/// Produces REVERSE SOLIDUS (backslash) and
990/// VERTICAL LINE in a US layout, REVERSE
991/// SOLIDUS and VERTICAL LINE in a UK Mac
992/// layout, NUMBER SIGN and TILDE in a UK
993/// Windows layout, DOLLAR SIGN and POUND SIGN
994/// in a Swiss German layout, NUMBER SIGN and
995/// APOSTROPHE in a German layout, GRAVE
996/// ACCENT and POUND SIGN in a French Mac
997/// layout, and ASTERISK and MICRO SIGN in a
998/// French Windows layout.
999pub const SDL_SCANCODE_BACKSLASH: SDL_Scancode = SDL_Scancode::BACKSLASH;
1000/// ISO USB keyboards actually use this code
1001/// instead of 49 for the same key, but all
1002/// OSes I've seen treat the two codes
1003/// identically. So, as an implementor, unless
1004/// your keyboard generates both of those
1005/// codes and your OS treats them differently,
1006/// you should generate [`SDL_SCANCODE_BACKSLASH`]
1007/// instead of this code. As a user, you
1008/// should not rely on this code because SDL
1009/// will never generate it with most (all?)
1010/// keyboards.
1011pub const SDL_SCANCODE_NONUSHASH: SDL_Scancode = SDL_Scancode::NONUSHASH;
1012pub const SDL_SCANCODE_SEMICOLON: SDL_Scancode = SDL_Scancode::SEMICOLON;
1013pub const SDL_SCANCODE_APOSTROPHE: SDL_Scancode = SDL_Scancode::APOSTROPHE;
1014/// Located in the top left corner (on both ANSI
1015/// and ISO keyboards). Produces GRAVE ACCENT and
1016/// TILDE in a US Windows layout and in US and UK
1017/// Mac layouts on ANSI keyboards, GRAVE ACCENT
1018/// and NOT SIGN in a UK Windows layout, SECTION
1019/// SIGN and PLUS-MINUS SIGN in US and UK Mac
1020/// layouts on ISO keyboards, SECTION SIGN and
1021/// DEGREE SIGN in a Swiss German layout (Mac:
1022/// only on ISO keyboards), CIRCUMFLEX ACCENT and
1023/// DEGREE SIGN in a German layout (Mac: only on
1024/// ISO keyboards), SUPERSCRIPT TWO and TILDE in a
1025/// French Windows layout, COMMERCIAL AT and
1026/// NUMBER SIGN in a French Mac layout on ISO
1027/// keyboards, and LESS-THAN SIGN and GREATER-THAN
1028/// SIGN in a Swiss German, German, or French Mac
1029/// layout on ANSI keyboards.
1030pub const SDL_SCANCODE_GRAVE: SDL_Scancode = SDL_Scancode::GRAVE;
1031pub const SDL_SCANCODE_COMMA: SDL_Scancode = SDL_Scancode::COMMA;
1032pub const SDL_SCANCODE_PERIOD: SDL_Scancode = SDL_Scancode::PERIOD;
1033pub const SDL_SCANCODE_SLASH: SDL_Scancode = SDL_Scancode::SLASH;
1034pub const SDL_SCANCODE_CAPSLOCK: SDL_Scancode = SDL_Scancode::CAPSLOCK;
1035pub const SDL_SCANCODE_F1: SDL_Scancode = SDL_Scancode::F1;
1036pub const SDL_SCANCODE_F2: SDL_Scancode = SDL_Scancode::F2;
1037pub const SDL_SCANCODE_F3: SDL_Scancode = SDL_Scancode::F3;
1038pub const SDL_SCANCODE_F4: SDL_Scancode = SDL_Scancode::F4;
1039pub const SDL_SCANCODE_F5: SDL_Scancode = SDL_Scancode::F5;
1040pub const SDL_SCANCODE_F6: SDL_Scancode = SDL_Scancode::F6;
1041pub const SDL_SCANCODE_F7: SDL_Scancode = SDL_Scancode::F7;
1042pub const SDL_SCANCODE_F8: SDL_Scancode = SDL_Scancode::F8;
1043pub const SDL_SCANCODE_F9: SDL_Scancode = SDL_Scancode::F9;
1044pub const SDL_SCANCODE_F10: SDL_Scancode = SDL_Scancode::F10;
1045pub const SDL_SCANCODE_F11: SDL_Scancode = SDL_Scancode::F11;
1046pub const SDL_SCANCODE_F12: SDL_Scancode = SDL_Scancode::F12;
1047pub const SDL_SCANCODE_PRINTSCREEN: SDL_Scancode = SDL_Scancode::PRINTSCREEN;
1048pub const SDL_SCANCODE_SCROLLLOCK: SDL_Scancode = SDL_Scancode::SCROLLLOCK;
1049pub const SDL_SCANCODE_PAUSE: SDL_Scancode = SDL_Scancode::PAUSE;
1050/// insert on PC, help on some Mac keyboards (but
1051/// does send code 73, not 117)
1052pub const SDL_SCANCODE_INSERT: SDL_Scancode = SDL_Scancode::INSERT;
1053pub const SDL_SCANCODE_HOME: SDL_Scancode = SDL_Scancode::HOME;
1054pub const SDL_SCANCODE_PAGEUP: SDL_Scancode = SDL_Scancode::PAGEUP;
1055pub const SDL_SCANCODE_DELETE: SDL_Scancode = SDL_Scancode::DELETE;
1056pub const SDL_SCANCODE_END: SDL_Scancode = SDL_Scancode::END;
1057pub const SDL_SCANCODE_PAGEDOWN: SDL_Scancode = SDL_Scancode::PAGEDOWN;
1058pub const SDL_SCANCODE_RIGHT: SDL_Scancode = SDL_Scancode::RIGHT;
1059pub const SDL_SCANCODE_LEFT: SDL_Scancode = SDL_Scancode::LEFT;
1060pub const SDL_SCANCODE_DOWN: SDL_Scancode = SDL_Scancode::DOWN;
1061pub const SDL_SCANCODE_UP: SDL_Scancode = SDL_Scancode::UP;
1062/// num lock on PC, clear on Mac keyboards
1063pub const SDL_SCANCODE_NUMLOCKCLEAR: SDL_Scancode = SDL_Scancode::NUMLOCKCLEAR;
1064pub const SDL_SCANCODE_KP_DIVIDE: SDL_Scancode = SDL_Scancode::KP_DIVIDE;
1065pub const SDL_SCANCODE_KP_MULTIPLY: SDL_Scancode = SDL_Scancode::KP_MULTIPLY;
1066pub const SDL_SCANCODE_KP_MINUS: SDL_Scancode = SDL_Scancode::KP_MINUS;
1067pub const SDL_SCANCODE_KP_PLUS: SDL_Scancode = SDL_Scancode::KP_PLUS;
1068pub const SDL_SCANCODE_KP_ENTER: SDL_Scancode = SDL_Scancode::KP_ENTER;
1069pub const SDL_SCANCODE_KP_1: SDL_Scancode = SDL_Scancode::KP_1;
1070pub const SDL_SCANCODE_KP_2: SDL_Scancode = SDL_Scancode::KP_2;
1071pub const SDL_SCANCODE_KP_3: SDL_Scancode = SDL_Scancode::KP_3;
1072pub const SDL_SCANCODE_KP_4: SDL_Scancode = SDL_Scancode::KP_4;
1073pub const SDL_SCANCODE_KP_5: SDL_Scancode = SDL_Scancode::KP_5;
1074pub const SDL_SCANCODE_KP_6: SDL_Scancode = SDL_Scancode::KP_6;
1075pub const SDL_SCANCODE_KP_7: SDL_Scancode = SDL_Scancode::KP_7;
1076pub const SDL_SCANCODE_KP_8: SDL_Scancode = SDL_Scancode::KP_8;
1077pub const SDL_SCANCODE_KP_9: SDL_Scancode = SDL_Scancode::KP_9;
1078pub const SDL_SCANCODE_KP_0: SDL_Scancode = SDL_Scancode::KP_0;
1079pub const SDL_SCANCODE_KP_PERIOD: SDL_Scancode = SDL_Scancode::KP_PERIOD;
1080/// This is the additional key that ISO
1081/// keyboards have over ANSI ones,
1082/// located between left shift and Z.
1083/// Produces GRAVE ACCENT and TILDE in a
1084/// US or UK Mac layout, REVERSE SOLIDUS
1085/// (backslash) and VERTICAL LINE in a
1086/// US or UK Windows layout, and
1087/// LESS-THAN SIGN and GREATER-THAN SIGN
1088/// in a Swiss German, German, or French
1089/// layout.
1090pub const SDL_SCANCODE_NONUSBACKSLASH: SDL_Scancode = SDL_Scancode::NONUSBACKSLASH;
1091/// windows contextual menu, compose
1092pub const SDL_SCANCODE_APPLICATION: SDL_Scancode = SDL_Scancode::APPLICATION;
1093/// The USB document says this is a status flag,
1094/// not a physical key - but some Mac keyboards
1095/// do have a power key.
1096pub const SDL_SCANCODE_POWER: SDL_Scancode = SDL_Scancode::POWER;
1097pub const SDL_SCANCODE_KP_EQUALS: SDL_Scancode = SDL_Scancode::KP_EQUALS;
1098pub const SDL_SCANCODE_F13: SDL_Scancode = SDL_Scancode::F13;
1099pub const SDL_SCANCODE_F14: SDL_Scancode = SDL_Scancode::F14;
1100pub const SDL_SCANCODE_F15: SDL_Scancode = SDL_Scancode::F15;
1101pub const SDL_SCANCODE_F16: SDL_Scancode = SDL_Scancode::F16;
1102pub const SDL_SCANCODE_F17: SDL_Scancode = SDL_Scancode::F17;
1103pub const SDL_SCANCODE_F18: SDL_Scancode = SDL_Scancode::F18;
1104pub const SDL_SCANCODE_F19: SDL_Scancode = SDL_Scancode::F19;
1105pub const SDL_SCANCODE_F20: SDL_Scancode = SDL_Scancode::F20;
1106pub const SDL_SCANCODE_F21: SDL_Scancode = SDL_Scancode::F21;
1107pub const SDL_SCANCODE_F22: SDL_Scancode = SDL_Scancode::F22;
1108pub const SDL_SCANCODE_F23: SDL_Scancode = SDL_Scancode::F23;
1109pub const SDL_SCANCODE_F24: SDL_Scancode = SDL_Scancode::F24;
1110pub const SDL_SCANCODE_EXECUTE: SDL_Scancode = SDL_Scancode::EXECUTE;
1111/// AL Integrated Help Center
1112pub const SDL_SCANCODE_HELP: SDL_Scancode = SDL_Scancode::HELP;
1113/// Menu (show menu)
1114pub const SDL_SCANCODE_MENU: SDL_Scancode = SDL_Scancode::MENU;
1115pub const SDL_SCANCODE_SELECT: SDL_Scancode = SDL_Scancode::SELECT;
1116/// AC Stop
1117pub const SDL_SCANCODE_STOP: SDL_Scancode = SDL_Scancode::STOP;
1118/// AC Redo/Repeat
1119pub const SDL_SCANCODE_AGAIN: SDL_Scancode = SDL_Scancode::AGAIN;
1120/// AC Undo
1121pub const SDL_SCANCODE_UNDO: SDL_Scancode = SDL_Scancode::UNDO;
1122/// AC Cut
1123pub const SDL_SCANCODE_CUT: SDL_Scancode = SDL_Scancode::CUT;
1124/// AC Copy
1125pub const SDL_SCANCODE_COPY: SDL_Scancode = SDL_Scancode::COPY;
1126/// AC Paste
1127pub const SDL_SCANCODE_PASTE: SDL_Scancode = SDL_Scancode::PASTE;
1128/// AC Find
1129pub const SDL_SCANCODE_FIND: SDL_Scancode = SDL_Scancode::FIND;
1130pub const SDL_SCANCODE_MUTE: SDL_Scancode = SDL_Scancode::MUTE;
1131pub const SDL_SCANCODE_VOLUMEUP: SDL_Scancode = SDL_Scancode::VOLUMEUP;
1132pub const SDL_SCANCODE_VOLUMEDOWN: SDL_Scancode = SDL_Scancode::VOLUMEDOWN;
1133pub const SDL_SCANCODE_KP_COMMA: SDL_Scancode = SDL_Scancode::KP_COMMA;
1134pub const SDL_SCANCODE_KP_EQUALSAS400: SDL_Scancode = SDL_Scancode::KP_EQUALSAS400;
1135/// used on Asian keyboards, see
1136/// footnotes in USB doc
1137pub const SDL_SCANCODE_INTERNATIONAL1: SDL_Scancode = SDL_Scancode::INTERNATIONAL1;
1138pub const SDL_SCANCODE_INTERNATIONAL2: SDL_Scancode = SDL_Scancode::INTERNATIONAL2;
1139/// Yen
1140pub const SDL_SCANCODE_INTERNATIONAL3: SDL_Scancode = SDL_Scancode::INTERNATIONAL3;
1141pub const SDL_SCANCODE_INTERNATIONAL4: SDL_Scancode = SDL_Scancode::INTERNATIONAL4;
1142pub const SDL_SCANCODE_INTERNATIONAL5: SDL_Scancode = SDL_Scancode::INTERNATIONAL5;
1143pub const SDL_SCANCODE_INTERNATIONAL6: SDL_Scancode = SDL_Scancode::INTERNATIONAL6;
1144pub const SDL_SCANCODE_INTERNATIONAL7: SDL_Scancode = SDL_Scancode::INTERNATIONAL7;
1145pub const SDL_SCANCODE_INTERNATIONAL8: SDL_Scancode = SDL_Scancode::INTERNATIONAL8;
1146pub const SDL_SCANCODE_INTERNATIONAL9: SDL_Scancode = SDL_Scancode::INTERNATIONAL9;
1147/// Hangul/English toggle
1148pub const SDL_SCANCODE_LANG1: SDL_Scancode = SDL_Scancode::LANG1;
1149/// Hanja conversion
1150pub const SDL_SCANCODE_LANG2: SDL_Scancode = SDL_Scancode::LANG2;
1151/// Katakana
1152pub const SDL_SCANCODE_LANG3: SDL_Scancode = SDL_Scancode::LANG3;
1153/// Hiragana
1154pub const SDL_SCANCODE_LANG4: SDL_Scancode = SDL_Scancode::LANG4;
1155/// Zenkaku/Hankaku
1156pub const SDL_SCANCODE_LANG5: SDL_Scancode = SDL_Scancode::LANG5;
1157/// reserved
1158pub const SDL_SCANCODE_LANG6: SDL_Scancode = SDL_Scancode::LANG6;
1159/// reserved
1160pub const SDL_SCANCODE_LANG7: SDL_Scancode = SDL_Scancode::LANG7;
1161/// reserved
1162pub const SDL_SCANCODE_LANG8: SDL_Scancode = SDL_Scancode::LANG8;
1163/// reserved
1164pub const SDL_SCANCODE_LANG9: SDL_Scancode = SDL_Scancode::LANG9;
1165/// Erase-Eaze
1166pub const SDL_SCANCODE_ALTERASE: SDL_Scancode = SDL_Scancode::ALTERASE;
1167pub const SDL_SCANCODE_SYSREQ: SDL_Scancode = SDL_Scancode::SYSREQ;
1168/// AC Cancel
1169pub const SDL_SCANCODE_CANCEL: SDL_Scancode = SDL_Scancode::CANCEL;
1170pub const SDL_SCANCODE_CLEAR: SDL_Scancode = SDL_Scancode::CLEAR;
1171pub const SDL_SCANCODE_PRIOR: SDL_Scancode = SDL_Scancode::PRIOR;
1172pub const SDL_SCANCODE_RETURN2: SDL_Scancode = SDL_Scancode::RETURN2;
1173pub const SDL_SCANCODE_SEPARATOR: SDL_Scancode = SDL_Scancode::SEPARATOR;
1174pub const SDL_SCANCODE_OUT: SDL_Scancode = SDL_Scancode::OUT;
1175pub const SDL_SCANCODE_OPER: SDL_Scancode = SDL_Scancode::OPER;
1176pub const SDL_SCANCODE_CLEARAGAIN: SDL_Scancode = SDL_Scancode::CLEARAGAIN;
1177pub const SDL_SCANCODE_CRSEL: SDL_Scancode = SDL_Scancode::CRSEL;
1178pub const SDL_SCANCODE_EXSEL: SDL_Scancode = SDL_Scancode::EXSEL;
1179pub const SDL_SCANCODE_KP_00: SDL_Scancode = SDL_Scancode::KP_00;
1180pub const SDL_SCANCODE_KP_000: SDL_Scancode = SDL_Scancode::KP_000;
1181pub const SDL_SCANCODE_THOUSANDSSEPARATOR: SDL_Scancode = SDL_Scancode::THOUSANDSSEPARATOR;
1182pub const SDL_SCANCODE_DECIMALSEPARATOR: SDL_Scancode = SDL_Scancode::DECIMALSEPARATOR;
1183pub const SDL_SCANCODE_CURRENCYUNIT: SDL_Scancode = SDL_Scancode::CURRENCYUNIT;
1184pub const SDL_SCANCODE_CURRENCYSUBUNIT: SDL_Scancode = SDL_Scancode::CURRENCYSUBUNIT;
1185pub const SDL_SCANCODE_KP_LEFTPAREN: SDL_Scancode = SDL_Scancode::KP_LEFTPAREN;
1186pub const SDL_SCANCODE_KP_RIGHTPAREN: SDL_Scancode = SDL_Scancode::KP_RIGHTPAREN;
1187pub const SDL_SCANCODE_KP_LEFTBRACE: SDL_Scancode = SDL_Scancode::KP_LEFTBRACE;
1188pub const SDL_SCANCODE_KP_RIGHTBRACE: SDL_Scancode = SDL_Scancode::KP_RIGHTBRACE;
1189pub const SDL_SCANCODE_KP_TAB: SDL_Scancode = SDL_Scancode::KP_TAB;
1190pub const SDL_SCANCODE_KP_BACKSPACE: SDL_Scancode = SDL_Scancode::KP_BACKSPACE;
1191pub const SDL_SCANCODE_KP_A: SDL_Scancode = SDL_Scancode::KP_A;
1192pub const SDL_SCANCODE_KP_B: SDL_Scancode = SDL_Scancode::KP_B;
1193pub const SDL_SCANCODE_KP_C: SDL_Scancode = SDL_Scancode::KP_C;
1194pub const SDL_SCANCODE_KP_D: SDL_Scancode = SDL_Scancode::KP_D;
1195pub const SDL_SCANCODE_KP_E: SDL_Scancode = SDL_Scancode::KP_E;
1196pub const SDL_SCANCODE_KP_F: SDL_Scancode = SDL_Scancode::KP_F;
1197pub const SDL_SCANCODE_KP_XOR: SDL_Scancode = SDL_Scancode::KP_XOR;
1198pub const SDL_SCANCODE_KP_POWER: SDL_Scancode = SDL_Scancode::KP_POWER;
1199pub const SDL_SCANCODE_KP_PERCENT: SDL_Scancode = SDL_Scancode::KP_PERCENT;
1200pub const SDL_SCANCODE_KP_LESS: SDL_Scancode = SDL_Scancode::KP_LESS;
1201pub const SDL_SCANCODE_KP_GREATER: SDL_Scancode = SDL_Scancode::KP_GREATER;
1202pub const SDL_SCANCODE_KP_AMPERSAND: SDL_Scancode = SDL_Scancode::KP_AMPERSAND;
1203pub const SDL_SCANCODE_KP_DBLAMPERSAND: SDL_Scancode = SDL_Scancode::KP_DBLAMPERSAND;
1204pub const SDL_SCANCODE_KP_VERTICALBAR: SDL_Scancode = SDL_Scancode::KP_VERTICALBAR;
1205pub const SDL_SCANCODE_KP_DBLVERTICALBAR: SDL_Scancode = SDL_Scancode::KP_DBLVERTICALBAR;
1206pub const SDL_SCANCODE_KP_COLON: SDL_Scancode = SDL_Scancode::KP_COLON;
1207pub const SDL_SCANCODE_KP_HASH: SDL_Scancode = SDL_Scancode::KP_HASH;
1208pub const SDL_SCANCODE_KP_SPACE: SDL_Scancode = SDL_Scancode::KP_SPACE;
1209pub const SDL_SCANCODE_KP_AT: SDL_Scancode = SDL_Scancode::KP_AT;
1210pub const SDL_SCANCODE_KP_EXCLAM: SDL_Scancode = SDL_Scancode::KP_EXCLAM;
1211pub const SDL_SCANCODE_KP_MEMSTORE: SDL_Scancode = SDL_Scancode::KP_MEMSTORE;
1212pub const SDL_SCANCODE_KP_MEMRECALL: SDL_Scancode = SDL_Scancode::KP_MEMRECALL;
1213pub const SDL_SCANCODE_KP_MEMCLEAR: SDL_Scancode = SDL_Scancode::KP_MEMCLEAR;
1214pub const SDL_SCANCODE_KP_MEMADD: SDL_Scancode = SDL_Scancode::KP_MEMADD;
1215pub const SDL_SCANCODE_KP_MEMSUBTRACT: SDL_Scancode = SDL_Scancode::KP_MEMSUBTRACT;
1216pub const SDL_SCANCODE_KP_MEMMULTIPLY: SDL_Scancode = SDL_Scancode::KP_MEMMULTIPLY;
1217pub const SDL_SCANCODE_KP_MEMDIVIDE: SDL_Scancode = SDL_Scancode::KP_MEMDIVIDE;
1218pub const SDL_SCANCODE_KP_PLUSMINUS: SDL_Scancode = SDL_Scancode::KP_PLUSMINUS;
1219pub const SDL_SCANCODE_KP_CLEAR: SDL_Scancode = SDL_Scancode::KP_CLEAR;
1220pub const SDL_SCANCODE_KP_CLEARENTRY: SDL_Scancode = SDL_Scancode::KP_CLEARENTRY;
1221pub const SDL_SCANCODE_KP_BINARY: SDL_Scancode = SDL_Scancode::KP_BINARY;
1222pub const SDL_SCANCODE_KP_OCTAL: SDL_Scancode = SDL_Scancode::KP_OCTAL;
1223pub const SDL_SCANCODE_KP_DECIMAL: SDL_Scancode = SDL_Scancode::KP_DECIMAL;
1224pub const SDL_SCANCODE_KP_HEXADECIMAL: SDL_Scancode = SDL_Scancode::KP_HEXADECIMAL;
1225pub const SDL_SCANCODE_LCTRL: SDL_Scancode = SDL_Scancode::LCTRL;
1226pub const SDL_SCANCODE_LSHIFT: SDL_Scancode = SDL_Scancode::LSHIFT;
1227/// alt, option
1228pub const SDL_SCANCODE_LALT: SDL_Scancode = SDL_Scancode::LALT;
1229/// windows, command (apple), meta
1230pub const SDL_SCANCODE_LGUI: SDL_Scancode = SDL_Scancode::LGUI;
1231pub const SDL_SCANCODE_RCTRL: SDL_Scancode = SDL_Scancode::RCTRL;
1232pub const SDL_SCANCODE_RSHIFT: SDL_Scancode = SDL_Scancode::RSHIFT;
1233/// alt gr, option
1234pub const SDL_SCANCODE_RALT: SDL_Scancode = SDL_Scancode::RALT;
1235/// windows, command (apple), meta
1236pub const SDL_SCANCODE_RGUI: SDL_Scancode = SDL_Scancode::RGUI;
1237/// I'm not sure if this is really not covered
1238/// by any of the above, but since there's a
1239/// special [`SDL_KMOD_MODE`] for it I'm adding it here
1240pub const SDL_SCANCODE_MODE: SDL_Scancode = SDL_Scancode::MODE;
1241/// Sleep
1242pub const SDL_SCANCODE_SLEEP: SDL_Scancode = SDL_Scancode::SLEEP;
1243/// Wake
1244pub const SDL_SCANCODE_WAKE: SDL_Scancode = SDL_Scancode::WAKE;
1245/// Channel Increment
1246pub const SDL_SCANCODE_CHANNEL_INCREMENT: SDL_Scancode = SDL_Scancode::CHANNEL_INCREMENT;
1247/// Channel Decrement
1248pub const SDL_SCANCODE_CHANNEL_DECREMENT: SDL_Scancode = SDL_Scancode::CHANNEL_DECREMENT;
1249/// Play
1250pub const SDL_SCANCODE_MEDIA_PLAY: SDL_Scancode = SDL_Scancode::MEDIA_PLAY;
1251/// Pause
1252pub const SDL_SCANCODE_MEDIA_PAUSE: SDL_Scancode = SDL_Scancode::MEDIA_PAUSE;
1253/// Record
1254pub const SDL_SCANCODE_MEDIA_RECORD: SDL_Scancode = SDL_Scancode::MEDIA_RECORD;
1255/// Fast Forward
1256pub const SDL_SCANCODE_MEDIA_FAST_FORWARD: SDL_Scancode = SDL_Scancode::MEDIA_FAST_FORWARD;
1257/// Rewind
1258pub const SDL_SCANCODE_MEDIA_REWIND: SDL_Scancode = SDL_Scancode::MEDIA_REWIND;
1259/// Next Track
1260pub const SDL_SCANCODE_MEDIA_NEXT_TRACK: SDL_Scancode = SDL_Scancode::MEDIA_NEXT_TRACK;
1261/// Previous Track
1262pub const SDL_SCANCODE_MEDIA_PREVIOUS_TRACK: SDL_Scancode = SDL_Scancode::MEDIA_PREVIOUS_TRACK;
1263/// Stop
1264pub const SDL_SCANCODE_MEDIA_STOP: SDL_Scancode = SDL_Scancode::MEDIA_STOP;
1265/// Eject
1266pub const SDL_SCANCODE_MEDIA_EJECT: SDL_Scancode = SDL_Scancode::MEDIA_EJECT;
1267/// Play / Pause
1268pub const SDL_SCANCODE_MEDIA_PLAY_PAUSE: SDL_Scancode = SDL_Scancode::MEDIA_PLAY_PAUSE;
1269pub const SDL_SCANCODE_MEDIA_SELECT: SDL_Scancode = SDL_Scancode::MEDIA_SELECT;
1270/// AC New
1271pub const SDL_SCANCODE_AC_NEW: SDL_Scancode = SDL_Scancode::AC_NEW;
1272/// AC Open
1273pub const SDL_SCANCODE_AC_OPEN: SDL_Scancode = SDL_Scancode::AC_OPEN;
1274/// AC Close
1275pub const SDL_SCANCODE_AC_CLOSE: SDL_Scancode = SDL_Scancode::AC_CLOSE;
1276/// AC Exit
1277pub const SDL_SCANCODE_AC_EXIT: SDL_Scancode = SDL_Scancode::AC_EXIT;
1278/// AC Save
1279pub const SDL_SCANCODE_AC_SAVE: SDL_Scancode = SDL_Scancode::AC_SAVE;
1280/// AC Print
1281pub const SDL_SCANCODE_AC_PRINT: SDL_Scancode = SDL_Scancode::AC_PRINT;
1282/// AC Properties
1283pub const SDL_SCANCODE_AC_PROPERTIES: SDL_Scancode = SDL_Scancode::AC_PROPERTIES;
1284/// AC Search
1285pub const SDL_SCANCODE_AC_SEARCH: SDL_Scancode = SDL_Scancode::AC_SEARCH;
1286/// AC Home
1287pub const SDL_SCANCODE_AC_HOME: SDL_Scancode = SDL_Scancode::AC_HOME;
1288/// AC Back
1289pub const SDL_SCANCODE_AC_BACK: SDL_Scancode = SDL_Scancode::AC_BACK;
1290/// AC Forward
1291pub const SDL_SCANCODE_AC_FORWARD: SDL_Scancode = SDL_Scancode::AC_FORWARD;
1292/// AC Stop
1293pub const SDL_SCANCODE_AC_STOP: SDL_Scancode = SDL_Scancode::AC_STOP;
1294/// AC Refresh
1295pub const SDL_SCANCODE_AC_REFRESH: SDL_Scancode = SDL_Scancode::AC_REFRESH;
1296/// AC Bookmarks
1297pub const SDL_SCANCODE_AC_BOOKMARKS: SDL_Scancode = SDL_Scancode::AC_BOOKMARKS;
1298/// Usually situated below the display on phones and
1299/// used as a multi-function feature key for selecting
1300/// a software defined function shown on the bottom left
1301/// of the display.
1302pub const SDL_SCANCODE_SOFTLEFT: SDL_Scancode = SDL_Scancode::SOFTLEFT;
1303/// Usually situated below the display on phones and
1304/// used as a multi-function feature key for selecting
1305/// a software defined function shown on the bottom right
1306/// of the display.
1307pub const SDL_SCANCODE_SOFTRIGHT: SDL_Scancode = SDL_Scancode::SOFTRIGHT;
1308/// Used for accepting phone calls.
1309pub const SDL_SCANCODE_CALL: SDL_Scancode = SDL_Scancode::CALL;
1310/// Used for rejecting phone calls.
1311pub const SDL_SCANCODE_ENDCALL: SDL_Scancode = SDL_Scancode::ENDCALL;
1312/// 400-500 reserved for dynamic keycodes
1313pub const SDL_SCANCODE_RESERVED: SDL_Scancode = SDL_Scancode::RESERVED;
1314/// not a key, just marks the number of scancodes for array bounds
1315pub const SDL_SCANCODE_COUNT: SDL_Scancode = SDL_Scancode::COUNT;
1316
1317#[cfg(feature = "metadata")]
1318impl sdl3_sys::metadata::GroupMetadata for SDL_Scancode {
1319    const GROUP_METADATA: &'static sdl3_sys::metadata::Group =
1320        &crate::metadata::scancode::METADATA_SDL_Scancode;
1321}
1322
1323#[cfg(doc)]
1324use crate::everything::*;