input_linux/
keys.rs

1use crate::sys;
2#[cfg(feature = "serde")]
3use serde::{Deserialize, Serialize};
4
5/// Keys and Buttons
6///
7/// Most of the keys/buttons are modeled after USB HUT 1.12 (see <http://www.usb.org/developers/hidpage>).
8///
9/// ## Comment Abbreviations
10/// AC - Application Control
11/// AL - Application Launch Button
12/// SC - System Control
13#[repr(u16)]
14#[derive(Copy, Clone, PartialOrd, Ord, PartialEq, Eq, Hash, Debug)]
15#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
16#[allow(missing_docs)]
17pub enum Key {
18    Reserved = sys::KEY_RESERVED as _,
19    Esc = sys::KEY_ESC as _,
20    Num1 = sys::KEY_1 as _,
21    Num2 = sys::KEY_2 as _,
22    Num3 = sys::KEY_3 as _,
23    Num4 = sys::KEY_4 as _,
24    Num5 = sys::KEY_5 as _,
25    Num6 = sys::KEY_6 as _,
26    Num7 = sys::KEY_7 as _,
27    Num8 = sys::KEY_8 as _,
28    Num9 = sys::KEY_9 as _,
29    Num0 = sys::KEY_0 as _,
30    Minus = sys::KEY_MINUS as _,
31    Equal = sys::KEY_EQUAL as _,
32    Backspace = sys::KEY_BACKSPACE as _,
33    Tab = sys::KEY_TAB as _,
34    Q = sys::KEY_Q as _,
35    W = sys::KEY_W as _,
36    E = sys::KEY_E as _,
37    R = sys::KEY_R as _,
38    T = sys::KEY_T as _,
39    Y = sys::KEY_Y as _,
40    U = sys::KEY_U as _,
41    I = sys::KEY_I as _,
42    O = sys::KEY_O as _,
43    P = sys::KEY_P as _,
44    LeftBrace = sys::KEY_LEFTBRACE as _,
45    RightBrace = sys::KEY_RIGHTBRACE as _,
46    Enter = sys::KEY_ENTER as _,
47    LeftCtrl = sys::KEY_LEFTCTRL as _,
48    A = sys::KEY_A as _,
49    S = sys::KEY_S as _,
50    D = sys::KEY_D as _,
51    F = sys::KEY_F as _,
52    G = sys::KEY_G as _,
53    H = sys::KEY_H as _,
54    J = sys::KEY_J as _,
55    K = sys::KEY_K as _,
56    L = sys::KEY_L as _,
57    Semicolon = sys::KEY_SEMICOLON as _,
58    Apostrophe = sys::KEY_APOSTROPHE as _,
59    Grave = sys::KEY_GRAVE as _,
60    LeftShift = sys::KEY_LEFTSHIFT as _,
61    Backslash = sys::KEY_BACKSLASH as _,
62    Z = sys::KEY_Z as _,
63    X = sys::KEY_X as _,
64    C = sys::KEY_C as _,
65    V = sys::KEY_V as _,
66    B = sys::KEY_B as _,
67    N = sys::KEY_N as _,
68    M = sys::KEY_M as _,
69    Comma = sys::KEY_COMMA as _,
70    Dot = sys::KEY_DOT as _,
71    Slash = sys::KEY_SLASH as _,
72    RightShift = sys::KEY_RIGHTSHIFT as _,
73    KpAsterisk = sys::KEY_KPASTERISK as _,
74    LeftAlt = sys::KEY_LEFTALT as _,
75    Space = sys::KEY_SPACE as _,
76    CapsLock = sys::KEY_CAPSLOCK as _,
77    F1 = sys::KEY_F1 as _,
78    F2 = sys::KEY_F2 as _,
79    F3 = sys::KEY_F3 as _,
80    F4 = sys::KEY_F4 as _,
81    F5 = sys::KEY_F5 as _,
82    F6 = sys::KEY_F6 as _,
83    F7 = sys::KEY_F7 as _,
84    F8 = sys::KEY_F8 as _,
85    F9 = sys::KEY_F9 as _,
86    F10 = sys::KEY_F10 as _,
87    NumLock = sys::KEY_NUMLOCK as _,
88    ScrollLock = sys::KEY_SCROLLLOCK as _,
89    Kp7 = sys::KEY_KP7 as _,
90    Kp8 = sys::KEY_KP8 as _,
91    Kp9 = sys::KEY_KP9 as _,
92    KpMinus = sys::KEY_KPMINUS as _,
93    Kp4 = sys::KEY_KP4 as _,
94    Kp5 = sys::KEY_KP5 as _,
95    Kp6 = sys::KEY_KP6 as _,
96    KpPlus = sys::KEY_KPPLUS as _,
97    Kp1 = sys::KEY_KP1 as _,
98    Kp2 = sys::KEY_KP2 as _,
99    Kp3 = sys::KEY_KP3 as _,
100    Kp0 = sys::KEY_KP0 as _,
101    KpDot = sys::KEY_KPDOT as _,
102
103    Unknown54,
104
105    ZenkakuHankaku = sys::KEY_ZENKAKUHANKAKU as _,
106    NonUsBackslashAndPipe = sys::KEY_102ND as _,
107    F11 = sys::KEY_F11 as _,
108    F12 = sys::KEY_F12 as _,
109    Ro = sys::KEY_RO as _,
110    Katakana = sys::KEY_KATAKANA as _,
111    Hiragana = sys::KEY_HIRAGANA as _,
112    Henkan = sys::KEY_HENKAN as _,
113    KatakanaHiragana = sys::KEY_KATAKANAHIRAGANA as _,
114    Muhenkan = sys::KEY_MUHENKAN as _,
115    KpJpComma = sys::KEY_KPJPCOMMA as _,
116    KpEnter = sys::KEY_KPENTER as _,
117    RightCtrl = sys::KEY_RIGHTCTRL as _,
118    KpSlash = sys::KEY_KPSLASH as _,
119    Sysrq = sys::KEY_SYSRQ as _,
120    RightAlt = sys::KEY_RIGHTALT as _,
121    LineFeed = sys::KEY_LINEFEED as _,
122    Home = sys::KEY_HOME as _,
123    Up = sys::KEY_UP as _,
124    PageUp = sys::KEY_PAGEUP as _,
125    Left = sys::KEY_LEFT as _,
126    Right = sys::KEY_RIGHT as _,
127    End = sys::KEY_END as _,
128    Down = sys::KEY_DOWN as _,
129    PageDown = sys::KEY_PAGEDOWN as _,
130    Insert = sys::KEY_INSERT as _,
131    Delete = sys::KEY_DELETE as _,
132    Macro = sys::KEY_MACRO as _,
133
134    Mute = sys::KEY_MUTE as _,
135    VolumeDown = sys::KEY_VOLUMEDOWN as _,
136    VolumeUp = sys::KEY_VOLUMEUP as _,
137    /// SC System Power Down
138    Power = sys::KEY_POWER as _,
139    KpEqual = sys::KEY_KPEQUAL as _,
140    KpPlusMinus = sys::KEY_KPPLUSMINUS as _,
141    Pause = sys::KEY_PAUSE as _,
142    /// AL Compiz Scale (Expose)
143    Scale = sys::KEY_SCALE as _,
144
145    KpComma = sys::KEY_KPCOMMA as _,
146    /// KeyHangeul / KeyHanguel
147    Hangul = sys::KEY_HANGEUL as _,
148    // KeyHangeul = KeyHangul
149    // KeyHanguel = KeyHangul
150    Hanja = sys::KEY_HANJA as _,
151    Yen = sys::KEY_YEN as _,
152    LeftMeta = sys::KEY_LEFTMETA as _,
153    RightMeta = sys::KEY_RIGHTMETA as _,
154    Compose = sys::KEY_COMPOSE as _,
155
156    /// AC Stop
157    Stop = sys::KEY_STOP as _,
158    Again = sys::KEY_AGAIN as _,
159    /// AC Properties
160    Props = sys::KEY_PROPS as _,
161    /// AC Undo
162    Undo = sys::KEY_UNDO as _,
163    Front = sys::KEY_FRONT as _,
164    /// AC Copy
165    Copy = sys::KEY_COPY as _,
166    /// AC Open
167    Open = sys::KEY_OPEN as _,
168    /// AC Paste
169    Paste = sys::KEY_PASTE as _,
170    /// AC Search
171    Find = sys::KEY_FIND as _,
172    /// AC Cut
173    Cut = sys::KEY_CUT as _,
174    /// AL Integrated Help Center
175    Help = sys::KEY_HELP as _,
176    /// Menu (show menu)
177    Menu = sys::KEY_MENU as _,
178    /// AL Calculator
179    Calc = sys::KEY_CALC as _,
180    Setup = sys::KEY_SETUP as _,
181    /// SC System Sleep
182    Sleep = sys::KEY_SLEEP as _,
183    /// System Wake Up
184    Wakeup = sys::KEY_WAKEUP as _,
185    /// AL Local Machine Browser
186    File = sys::KEY_FILE as _,
187    SendFile = sys::KEY_SENDFILE as _,
188    DeleteFile = sys::KEY_DELETEFILE as _,
189    Xfer = sys::KEY_XFER as _,
190    Prog1 = sys::KEY_PROG1 as _,
191    Prog2 = sys::KEY_PROG2 as _,
192    /// AL Internet Browser
193    WWW = sys::KEY_WWW as _,
194    MSDOS = sys::KEY_MSDOS as _,
195    /// AL Terminal Lock/Screensaver
196    /// KeyScreenLock
197    Coffee = sys::KEY_COFFEE as _,
198    // KeyScreenLock = KeyCoffee,
199    /// Display orientation for e.g. tablets (aka KeyDirectionKey)
200    RotateDisplay = sys::KEY_ROTATE_DISPLAY as _,
201    // KeyDirectionKey = KeyRotateDisplay
202    CycleWindows = sys::KEY_CYCLEWINDOWS as _,
203    Mail = sys::KEY_MAIL as _,
204    /// AC Bookmarks
205    Bookmarks = sys::KEY_BOOKMARKS as _,
206    Computer = sys::KEY_COMPUTER as _,
207    /// AC Back
208    Back = sys::KEY_BACK as _,
209    /// AC Forward
210    Forward = sys::KEY_FORWARD as _,
211    CloseCD = sys::KEY_CLOSECD as _,
212    EjectCD = sys::KEY_EJECTCD as _,
213    EjectCloseCD = sys::KEY_EJECTCLOSECD as _,
214    NextSong = sys::KEY_NEXTSONG as _,
215    PlayPause = sys::KEY_PLAYPAUSE as _,
216    PreviousSong = sys::KEY_PREVIOUSSONG as _,
217    StopCD = sys::KEY_STOPCD as _,
218    Record = sys::KEY_RECORD as _,
219    Rewind = sys::KEY_REWIND as _,
220    /// Media Select Telephone
221    Phone = sys::KEY_PHONE as _,
222    Iso = sys::KEY_ISO as _,
223    /// AL Consumer Control Configuration
224    Config = sys::KEY_CONFIG as _,
225    /// AC Home
226    Homepage = sys::KEY_HOMEPAGE as _,
227    /// AC Refresh
228    Refresh = sys::KEY_REFRESH as _,
229    /// AC Exit
230    Exit = sys::KEY_EXIT as _,
231    Move = sys::KEY_MOVE as _,
232    Edit = sys::KEY_EDIT as _,
233    ScrollUp = sys::KEY_SCROLLUP as _,
234    ScrollDown = sys::KEY_SCROLLDOWN as _,
235    KpLeftParen = sys::KEY_KPLEFTPAREN as _,
236    KpRightParen = sys::KEY_KPRIGHTPAREN as _,
237    /// AC New
238    New = sys::KEY_NEW as _,
239    /// AC Redo/Repeat
240    Redo = sys::KEY_REDO as _,
241
242    F13 = sys::KEY_F13 as _,
243    F14 = sys::KEY_F14 as _,
244    F15 = sys::KEY_F15 as _,
245    F16 = sys::KEY_F16 as _,
246    F17 = sys::KEY_F17 as _,
247    F18 = sys::KEY_F18 as _,
248    F19 = sys::KEY_F19 as _,
249    F20 = sys::KEY_F20 as _,
250    F21 = sys::KEY_F21 as _,
251    F22 = sys::KEY_F22 as _,
252    F23 = sys::KEY_F23 as _,
253    F24 = sys::KEY_F24 as _,
254
255    UnknownC3,
256    UnknownC4,
257    UnknownC5,
258    UnknownC6,
259    UnknownC7,
260
261    PlayCD = sys::KEY_PLAYCD as _,
262    PauseCD = sys::KEY_PAUSECD as _,
263    Prog3 = sys::KEY_PROG3 as _,
264    Prog4 = sys::KEY_PROG4 as _,
265    /// AC Desktop Show All Applications
266    AllApplications = sys::KEY_ALL_APPLICATIONS as _,
267    Suspend = sys::KEY_SUSPEND as _,
268    /// AC Close
269    Close = sys::KEY_CLOSE as _,
270    Play = sys::KEY_PLAY as _,
271    FastForward = sys::KEY_FASTFORWARD as _,
272    BassBoost = sys::KEY_BASSBOOST as _,
273    /// AC Print
274    Print = sys::KEY_PRINT as _,
275    Hp = sys::KEY_HP as _,
276    Camera = sys::KEY_CAMERA as _,
277    Sound = sys::KEY_SOUND as _,
278    Question = sys::KEY_QUESTION as _,
279    Email = sys::KEY_EMAIL as _,
280    Chat = sys::KEY_CHAT as _,
281    Search = sys::KEY_SEARCH as _,
282    Connect = sys::KEY_CONNECT as _,
283    /// AL Checkbook/Finance
284    Finance = sys::KEY_FINANCE as _,
285    Sport = sys::KEY_SPORT as _,
286    Shop = sys::KEY_SHOP as _,
287    Alterase = sys::KEY_ALTERASE as _,
288    /// AC Cancel
289    Cancel = sys::KEY_CANCEL as _,
290    BrightnessDown = sys::KEY_BRIGHTNESSDOWN as _,
291    BrightnessUp = sys::KEY_BRIGHTNESSUP as _,
292    Media = sys::KEY_MEDIA as _,
293
294    /// Cycle between available video outputs (Monitor/LCD/TV-out/etc)
295    SwitchVideoMode = sys::KEY_SWITCHVIDEOMODE as _,
296    IllumToggle = sys::KEY_KBDILLUMTOGGLE as _,
297    IllumDown = sys::KEY_KBDILLUMDOWN as _,
298    IllumUp = sys::KEY_KBDILLUMUP as _,
299
300    /// AC Send
301    Send = sys::KEY_SEND as _,
302    /// AC Reply
303    Reply = sys::KEY_REPLY as _,
304    /// AC Forward Msg
305    ForwardMail = sys::KEY_FORWARDMAIL as _,
306    /// AC Save
307    Save = sys::KEY_SAVE as _,
308    Documents = sys::KEY_DOCUMENTS as _,
309
310    Battery = sys::KEY_BATTERY as _,
311
312    Bluetooth = sys::KEY_BLUETOOTH as _,
313    WLAN = sys::KEY_WLAN as _,
314    UWB = sys::KEY_UWB as _,
315
316    Unknown = sys::KEY_UNKNOWN as _,
317
318    /// drive next video source
319    VideoNext = sys::KEY_VIDEO_NEXT as _,
320    /// drive previous video source
321    VideoPrev = sys::KEY_VIDEO_PREV as _,
322    /// brightness up, after max is min
323    BrightnessCycle = sys::KEY_BRIGHTNESS_CYCLE as _,
324    /// Set Auto Brightness: manual brightness control is off, rely on ambient
325    /// (aka KeyBrightnessZero)
326    BrightnessAuto = sys::KEY_BRIGHTNESS_AUTO as _,
327    // KeyBrightnessZero = KeyBrightnessAuto
328    /// display device to off state
329    DisplayOff = sys::KEY_DISPLAY_OFF as _,
330
331    /// Wireless WAN (LTE, UMTS, GSM, etc.)
332    /// (aka KeyWiMAX)
333    WWAN = sys::KEY_WWAN as _,
334    // KeyWiMAX = KeyWWAN
335    /// Key that controls all radios
336    Rfkill = sys::KEY_RFKILL as _,
337
338    /// Mute / unmute the microphone
339    MicMute = sys::KEY_MICMUTE as _,
340
341    UnknownF9,
342    UnknownFA,
343    UnknownFB,
344    UnknownFC,
345    UnknownFD,
346    UnknownFE,
347
348    /// Code 255 is reserved for special needs of AT keyboard driver
349    ReservedFF = 0xff,
350
351    //ButtonMisc = sys::BTN_MISC as _,
352    Button0 = sys::BTN_0 as _,
353    Button1 = sys::BTN_1 as _,
354    Button2 = sys::BTN_2 as _,
355    Button3 = sys::BTN_3 as _,
356    Button4 = sys::BTN_4 as _,
357    Button5 = sys::BTN_5 as _,
358    Button6 = sys::BTN_6 as _,
359    Button7 = sys::BTN_7 as _,
360    Button8 = sys::BTN_8 as _,
361    Button9 = sys::BTN_9 as _,
362
363    Unknown10A,
364    Unknown10B,
365    Unknown10C,
366    Unknown10D,
367    Unknown10E,
368    Unknown10F,
369
370    //ButtonMouse = sys::BTN_MOUSE as _,
371    ButtonLeft = sys::BTN_LEFT as _,
372    ButtonRight = sys::BTN_RIGHT as _,
373    ButtonMiddle = sys::BTN_MIDDLE as _,
374    ButtonSide = sys::BTN_SIDE as _,
375    ButtonExtra = sys::BTN_EXTRA as _,
376    ButtonForward = sys::BTN_FORWARD as _,
377    ButtonBack = sys::BTN_BACK as _,
378    ButtonTask = sys::BTN_TASK as _,
379
380    Unknown118,
381    Unknown119,
382    Unknown11A,
383    Unknown11B,
384    Unknown11C,
385    Unknown11D,
386    Unknown11E,
387    Unknown11F,
388
389    //ButtonJoystick = sys::BTN_JOYSTICK as _,
390    ButtonTrigger = sys::BTN_TRIGGER as _,
391    ButtonThumb = sys::BTN_THUMB as _,
392    ButtonThumb2 = sys::BTN_THUMB2 as _,
393    ButtonTop = sys::BTN_TOP as _,
394    ButtonTop2 = sys::BTN_TOP2 as _,
395    ButtonPinkie = sys::BTN_PINKIE as _,
396    ButtonBase = sys::BTN_BASE as _,
397    ButtonBase2 = sys::BTN_BASE2 as _,
398    ButtonBase3 = sys::BTN_BASE3 as _,
399    ButtonBase4 = sys::BTN_BASE4 as _,
400    ButtonBase5 = sys::BTN_BASE5 as _,
401    ButtonBase6 = sys::BTN_BASE6 as _,
402
403    Unknown12C,
404    Unknown12D,
405    Unknown12E,
406
407    ButtonDead = sys::BTN_DEAD as _,
408
409    //ButtonGamepad = sys::BTN_GAMEPAD as _,
410    /// aka ButtonA
411    ButtonSouth = sys::BTN_SOUTH as _,
412    // ButtonA = ButtonSouth
413    /// aka ButtonB
414    ButtonEast = sys::BTN_EAST as _,
415    // ButtonB = ButtonEast
416    ButtonC = sys::BTN_C as _,
417    /// aka ButtonX
418    ButtonNorth = sys::BTN_NORTH as _,
419    // ButtonX = ButtonNorth
420    /// aka ButtonY
421    ButtonWest = sys::BTN_WEST as _,
422    // ButtonY = ButtonWest
423    ButtonZ = sys::BTN_Z as _,
424    ButtonTL = sys::BTN_TL as _,
425    ButtonTR = sys::BTN_TR as _,
426    ButtonTL2 = sys::BTN_TL2 as _,
427    ButtonTR2 = sys::BTN_TR2 as _,
428    ButtonSelect = sys::BTN_SELECT as _,
429    ButtonStart = sys::BTN_START as _,
430    ButtonMode = sys::BTN_MODE as _,
431    ButtonThumbl = sys::BTN_THUMBL as _,
432    ButtonThumbr = sys::BTN_THUMBR as _,
433
434    Unknown13F,
435
436    //ButtonDigi = sys::BTN_DIGI as _,
437    ButtonToolPen = sys::BTN_TOOL_PEN as _,
438    ButtonToolRubber = sys::BTN_TOOL_RUBBER as _,
439    ButtonToolBrush = sys::BTN_TOOL_BRUSH as _,
440    ButtonToolPencil = sys::BTN_TOOL_PENCIL as _,
441    ButtonToolAirbrush = sys::BTN_TOOL_AIRBRUSH as _,
442    ButtonToolFinger = sys::BTN_TOOL_FINGER as _,
443    ButtonToolMouse = sys::BTN_TOOL_MOUSE as _,
444    ButtonToolLens = sys::BTN_TOOL_LENS as _,
445    /// Five fingers on trackpad
446    ButtonToolQuintTap = sys::BTN_TOOL_QUINTTAP as _,
447    ButtonStylus3 = sys::BTN_STYLUS3 as _,
448    ButtonTouch = sys::BTN_TOUCH as _,
449    ButtonStylus = sys::BTN_STYLUS as _,
450    ButtonStylus2 = sys::BTN_STYLUS2 as _,
451    ButtonToolDoubleTap = sys::BTN_TOOL_DOUBLETAP as _,
452    ButtonToolTripleTap = sys::BTN_TOOL_TRIPLETAP as _,
453    /// Four fingers on trackpad
454    ButtonToolQuadtap = sys::BTN_TOOL_QUADTAP as _,
455
456    ButtonWheel = sys::BTN_WHEEL as _,
457    //ButtonGearDown = sys::BTN_GEAR_DOWN as _,
458    ButtonGearUp = sys::BTN_GEAR_UP as _,
459
460    Unknown152,
461    Unknown153,
462    Unknown154,
463    Unknown155,
464    Unknown156,
465    Unknown157,
466    Unknown158,
467    Unknown159,
468    Unknown15A,
469    Unknown15B,
470    Unknown15C,
471    Unknown15D,
472    Unknown15E,
473    Unknown15F,
474
475    Ok = sys::KEY_OK as _,
476    Select = sys::KEY_SELECT as _,
477    Goto = sys::KEY_GOTO as _,
478    Clear = sys::KEY_CLEAR as _,
479    Power2 = sys::KEY_POWER2 as _,
480    Option = sys::KEY_OPTION as _,
481    /// AL OEM Features/Tips/Tutorial
482    Info = sys::KEY_INFO as _,
483    Time = sys::KEY_TIME as _,
484    Vendor = sys::KEY_VENDOR as _,
485    Archive = sys::KEY_ARCHIVE as _,
486    /// Media Select Program Guide
487    Program = sys::KEY_PROGRAM as _,
488    Channel = sys::KEY_CHANNEL as _,
489    Favorites = sys::KEY_FAVORITES as _,
490    EPG = sys::KEY_EPG as _,
491    /// Media Select Home
492    PVR = sys::KEY_PVR as _,
493    MHP = sys::KEY_MHP as _,
494    Language = sys::KEY_LANGUAGE as _,
495    Title = sys::KEY_TITLE as _,
496    Subtitle = sys::KEY_SUBTITLE as _,
497    Angle = sys::KEY_ANGLE as _,
498    FullScreen = sys::KEY_FULL_SCREEN as _,
499    Mode = sys::KEY_MODE as _,
500    Keyboard = sys::KEY_KEYBOARD as _,
501    AspectRatio = sys::KEY_ASPECT_RATIO as _,
502    /// Media Select Computer
503    PC = sys::KEY_PC as _,
504    /// Media Select TV
505    TV = sys::KEY_TV as _,
506    /// Media Select Cable
507    TV2 = sys::KEY_TV2 as _,
508    /// Media Select VCR
509    VCR = sys::KEY_VCR as _,
510    /// VCR Plus
511    VCR2 = sys::KEY_VCR2 as _,
512    /// Media Select Satellite
513    Sat = sys::KEY_SAT as _,
514    Sat2 = sys::KEY_SAT2 as _,
515    /// Media Select CD
516    CD = sys::KEY_CD as _,
517    /// Media Select Tape
518    Tape = sys::KEY_TAPE as _,
519    Radio = sys::KEY_RADIO as _,
520    /// Media Select Tuner
521    Tuner = sys::KEY_TUNER as _,
522    Player = sys::KEY_PLAYER as _,
523    Text = sys::KEY_TEXT as _,
524    /// Media Select DVD
525    Dvd = sys::KEY_DVD as _,
526    Aux = sys::KEY_AUX as _,
527    Mp3 = sys::KEY_MP3 as _,
528    /// AL Audio Browser
529    Audio = sys::KEY_AUDIO as _,
530    /// AL Movie Browser
531    Video = sys::KEY_VIDEO as _,
532    Directory = sys::KEY_DIRECTORY as _,
533    List = sys::KEY_LIST as _,
534    /// Media Select Messages
535    Memo = sys::KEY_MEMO as _,
536    Calendar = sys::KEY_CALENDAR as _,
537    Red = sys::KEY_RED as _,
538    Green = sys::KEY_GREEN as _,
539    Yellow = sys::KEY_YELLOW as _,
540    Blue = sys::KEY_BLUE as _,
541    /// Channel Increment
542    ChannelUp = sys::KEY_CHANNELUP as _,
543    /// Channel Decrement
544    ChannelDown = sys::KEY_CHANNELDOWN as _,
545    First = sys::KEY_FIRST as _,
546    /// Recall Last
547    Last = sys::KEY_LAST as _,
548    Ab = sys::KEY_AB as _,
549    Next = sys::KEY_NEXT as _,
550    Restart = sys::KEY_RESTART as _,
551    Slow = sys::KEY_SLOW as _,
552    Shuffle = sys::KEY_SHUFFLE as _,
553    Break = sys::KEY_BREAK as _,
554    Previous = sys::KEY_PREVIOUS as _,
555    Digits = sys::KEY_DIGITS as _,
556    Teen = sys::KEY_TEEN as _,
557    Twen = sys::KEY_TWEN as _,
558    /// Media Select Video Phone
559    Videophone = sys::KEY_VIDEOPHONE as _,
560    /// Media Select Games
561    Games = sys::KEY_GAMES as _,
562    /// AC Zoom In
563    ZoomIn = sys::KEY_ZOOMIN as _,
564    /// AC Zoom Out
565    ZoomOut = sys::KEY_ZOOMOUT as _,
566    /// AC Zoom
567    ZoomReset = sys::KEY_ZOOMRESET as _,
568    /// AL Word Processor
569    WordProcessor = sys::KEY_WORDPROCESSOR as _,
570    /// AL Text Editor
571    Editor = sys::KEY_EDITOR as _,
572    /// AL Spreadsheet
573    Spreadsheet = sys::KEY_SPREADSHEET as _,
574    /// AL Graphics Editor
575    GraphicsEditor = sys::KEY_GRAPHICSEDITOR as _,
576    /// AL Presentation App
577    Presentation = sys::KEY_PRESENTATION as _,
578    /// AL Database App
579    Database = sys::KEY_DATABASE as _,
580    /// AL Newsreader
581    News = sys::KEY_NEWS as _,
582    /// AL Voicemail
583    Voicemail = sys::KEY_VOICEMAIL as _,
584    /// AL Contacts/Address Book
585    AddressBook = sys::KEY_ADDRESSBOOK as _,
586    /// AL Instant Messaging
587    Messenger = sys::KEY_MESSENGER as _,
588    /// Turn display (LCD) on and off (aka KeyBrightnessToggle)
589    DisplayToggle = sys::KEY_DISPLAYTOGGLE as _,
590    // KeyBrightnessToggle = KeyDisplayToggle
591    /// AL Spell Check
592    SpellCheck = sys::KEY_SPELLCHECK as _,
593    /// AL Logoff
594    Logoff = sys::KEY_LOGOFF as _,
595
596    Dollar = sys::KEY_DOLLAR as _,
597    Euro = sys::KEY_EURO as _,
598
599    /// Consumer - transport controls
600    FrameBack = sys::KEY_FRAMEBACK as _,
601    FrameForward = sys::KEY_FRAMEFORWARD as _,
602    /// GenDesc - system context menu
603    ContextMenu = sys::KEY_CONTEXT_MENU as _,
604    /// Consumer - transport control
605    MediaRepeat = sys::KEY_MEDIA_REPEAT as _,
606    /// 10 channels up (10+)
607    TenChannelsUp = sys::KEY_10CHANNELSUP as _,
608    /// 10 channels down (10-)
609    TenChannelsDown = sys::KEY_10CHANNELSDOWN as _,
610    /// AL Image Browser
611    Images = sys::KEY_IMAGES as _,
612
613    Unknown1BB,
614    Unknown1BC,
615    Unknown1BD,
616    Unknown1BE,
617    Unknown1BF,
618
619    DelEol = sys::KEY_DEL_EOL as _,
620    DelEos = sys::KEY_DEL_EOS as _,
621    InsLine = sys::KEY_INS_LINE as _,
622    DelLine = sys::KEY_DEL_LINE as _,
623
624    Unknown1C4,
625    Unknown1C5,
626    Unknown1C6,
627    Unknown1C7,
628    Unknown1C8,
629    Unknown1C9,
630    Unknown1CA,
631    Unknown1CB,
632    Unknown1CC,
633    Unknown1CD,
634    Unknown1CE,
635    Unknown1CF,
636
637    Fn = sys::KEY_FN as _,
638    FnEsc = sys::KEY_FN_ESC as _,
639    FnF1 = sys::KEY_FN_F1 as _,
640    FnF2 = sys::KEY_FN_F2 as _,
641    FnF3 = sys::KEY_FN_F3 as _,
642    FnF4 = sys::KEY_FN_F4 as _,
643    FnF5 = sys::KEY_FN_F5 as _,
644    FnF6 = sys::KEY_FN_F6 as _,
645    FnF7 = sys::KEY_FN_F7 as _,
646    FnF8 = sys::KEY_FN_F8 as _,
647    FnF9 = sys::KEY_FN_F9 as _,
648    FnF10 = sys::KEY_FN_F10 as _,
649    FnF11 = sys::KEY_FN_F11 as _,
650    FnF12 = sys::KEY_FN_F12 as _,
651    Fn1 = sys::KEY_FN_1 as _,
652    Fn2 = sys::KEY_FN_2 as _,
653    FnD = sys::KEY_FN_D as _,
654    FnE = sys::KEY_FN_E as _,
655    FnF = sys::KEY_FN_F as _,
656    FnS = sys::KEY_FN_S as _,
657    FnB = sys::KEY_FN_B as _,
658
659    Unknown1E5,
660    Unknown1E6,
661    Unknown1E7,
662    Unknown1E8,
663    Unknown1E9,
664    Unknown1EA,
665    Unknown1EB,
666    Unknown1EC,
667    Unknown1ED,
668    Unknown1EE,
669    Unknown1EF,
670    Unknown1F0,
671
672    BrlDot1 = sys::KEY_BRL_DOT1 as _,
673    BrlDot2 = sys::KEY_BRL_DOT2 as _,
674    BrlDot3 = sys::KEY_BRL_DOT3 as _,
675    BrlDot4 = sys::KEY_BRL_DOT4 as _,
676    BrlDot5 = sys::KEY_BRL_DOT5 as _,
677    BrlDot6 = sys::KEY_BRL_DOT6 as _,
678    BrlDot7 = sys::KEY_BRL_DOT7 as _,
679    BrlDot8 = sys::KEY_BRL_DOT8 as _,
680    BrlDot9 = sys::KEY_BRL_DOT9 as _,
681    BrlDot10 = sys::KEY_BRL_DOT10 as _,
682
683    Unknown1FB,
684    Unknown1FC,
685    Unknown1FD,
686    Unknown1FE,
687    Unknown1FF,
688
689    /// used by phones, remote controls,
690    Numeric0 = sys::KEY_NUMERIC_0 as _,
691    /// and other keypads
692    Numeric1 = sys::KEY_NUMERIC_1 as _,
693    Numeric2 = sys::KEY_NUMERIC_2 as _,
694    Numeric3 = sys::KEY_NUMERIC_3 as _,
695    Numeric4 = sys::KEY_NUMERIC_4 as _,
696    Numeric5 = sys::KEY_NUMERIC_5 as _,
697    Numeric6 = sys::KEY_NUMERIC_6 as _,
698    Numeric7 = sys::KEY_NUMERIC_7 as _,
699    Numeric8 = sys::KEY_NUMERIC_8 as _,
700    Numeric9 = sys::KEY_NUMERIC_9 as _,
701    NumericStar = sys::KEY_NUMERIC_STAR as _,
702    NumericPound = sys::KEY_NUMERIC_POUND as _,
703    /// Phone key A - HUT Telephony 0xb9
704    NumericA = sys::KEY_NUMERIC_A as _,
705    NumericB = sys::KEY_NUMERIC_B as _,
706    NumericC = sys::KEY_NUMERIC_C as _,
707    NumericD = sys::KEY_NUMERIC_D as _,
708
709    CameraFocus = sys::KEY_CAMERA_FOCUS as _,
710    /// WiFi Protected Setup key
711    WpsButton = sys::KEY_WPS_BUTTON as _,
712
713    /// Request switch touchpad on or off
714    TouchpadToggle = sys::KEY_TOUCHPAD_TOGGLE as _,
715    TouchpadOn = sys::KEY_TOUCHPAD_ON as _,
716    TouchpadOff = sys::KEY_TOUCHPAD_OFF as _,
717
718    CameraZoomin = sys::KEY_CAMERA_ZOOMIN as _,
719    CameraZoomout = sys::KEY_CAMERA_ZOOMOUT as _,
720    CameraUp = sys::KEY_CAMERA_UP as _,
721    CameraDown = sys::KEY_CAMERA_DOWN as _,
722    CameraLeft = sys::KEY_CAMERA_LEFT as _,
723    CameraRight = sys::KEY_CAMERA_RIGHT as _,
724
725    AttendantOn = sys::KEY_ATTENDANT_ON as _,
726    AttendantOff = sys::KEY_ATTENDANT_OFF as _,
727    /// Attendant call on or off
728    AttendantToggle = sys::KEY_ATTENDANT_TOGGLE as _,
729    /// Reading light on or off
730    LightsToggle = sys::KEY_LIGHTS_TOGGLE as _,
731
732    Unknown21F,
733
734    ButtonDpadUp = sys::BTN_DPAD_UP as _,
735    ButtonDpadDown = sys::BTN_DPAD_DOWN as _,
736    ButtonDpadLeft = sys::BTN_DPAD_LEFT as _,
737    ButtonDpadRight = sys::BTN_DPAD_RIGHT as _,
738
739    Unknown224,
740    Unknown225,
741    Unknown226,
742    Unknown227,
743    Unknown228,
744    Unknown229,
745    Unknown22A,
746    Unknown22B,
747    Unknown22C,
748    Unknown22D,
749    Unknown22E,
750    Unknown22F,
751
752    /// Ambient light sensor
753    AlsToggle = sys::KEY_ALS_TOGGLE as _,
754    /// Display rotation lock
755    RotateLockToggle = sys::KEY_ROTATE_LOCK_TOGGLE as _,
756    /// Display refresh rate toggle
757    RefreshRateToggle = sys::KEY_REFRESH_RATE_TOGGLE as _,
758
759    Unknown233,
760    Unknown234,
761    Unknown235,
762    Unknown236,
763    Unknown237,
764    Unknown238,
765    Unknown239,
766    Unknown23A,
767    Unknown23B,
768    Unknown23C,
769    Unknown23D,
770    Unknown23E,
771    Unknown23F,
772
773    /// AL Button Configuration
774    ButtonConfig = sys::KEY_BUTTONCONFIG as _,
775    /// AL Task/Project Manager
776    TaskManager = sys::KEY_TASKMANAGER as _,
777    /// AL Log/Journal/Timecard
778    Journal = sys::KEY_JOURNAL as _,
779    /// AL Control Panel
780    ControlPanel = sys::KEY_CONTROLPANEL as _,
781    /// AL Select Task/Application
782    AppSelect = sys::KEY_APPSELECT as _,
783    /// AL Screen Saver
784    Screensaver = sys::KEY_SCREENSAVER as _,
785    /// Listening Voice Command
786    Voicecommand = sys::KEY_VOICECOMMAND as _,
787    /// AL Context-aware desktop assistant
788    Assistant = sys::KEY_ASSISTANT as _,
789    /// AC Next Keyboard Layout Select
790    KbdLayoutNext = sys::KEY_KBD_LAYOUT_NEXT as _,
791    /// Show/hide emoji picker (HUTRR101)
792    EmojiPicker = sys::KEY_EMOJI_PICKER as _,
793    /// Start or Stop Voice Dictation Session (HUTRR99)
794    Dictate = sys::KEY_DICTATE as _,
795    /// Enables programmatic access to camera devices. (HUTRR72)
796    CameraAccessEnable = sys::KEY_CAMERA_ACCESS_ENABLE as _,
797    /// Disables programmatic access to camera devices. (HUTRR72)
798    CameraAccessDisable = sys::KEY_CAMERA_ACCESS_DISABLE as _,
799    /// Toggles the current state of the camera access control. (HUTRR72)
800    CameraAccessToggle = sys::KEY_CAMERA_ACCESS_TOGGLE as _,
801    /// Toggles the system bound accessibility UI/command (HUTRR116)
802    Accessibility = sys::KEY_ACCESSIBILITY as _,
803    /// Toggles the system-wide "Do Not Disturb" control (HUTRR94)
804    DoNotDisturb = sys::KEY_DO_NOT_DISTURB as _,
805
806    /// Set Brightness to Minimum
807    BrightnessMin = sys::KEY_BRIGHTNESS_MIN as _,
808    /// Set Brightness to Maximum
809    BrightnessMax = sys::KEY_BRIGHTNESS_MAX as _,
810
811    Unknown252,
812    Unknown253,
813    Unknown254,
814    Unknown255,
815    Unknown256,
816    Unknown257,
817    Unknown258,
818    Unknown259,
819    Unknown25A,
820    Unknown25B,
821    Unknown25C,
822    Unknown25D,
823    Unknown25E,
824    Unknown25F,
825
826    InputAssistPrev = sys::KEY_KBDINPUTASSIST_PREV as _,
827    InputAssistNext = sys::KEY_KBDINPUTASSIST_NEXT as _,
828    InputAssistPrevGroup = sys::KEY_KBDINPUTASSIST_PREVGROUP as _,
829    InputAssistNextGroup = sys::KEY_KBDINPUTASSIST_NEXTGROUP as _,
830    InputAssistAccept = sys::KEY_KBDINPUTASSIST_ACCEPT as _,
831    InputAssistCancel = sys::KEY_KBDINPUTASSIST_CANCEL as _,
832
833    /// Diagonal movement keys
834    RightUp = sys::KEY_RIGHT_UP as _,
835    RightDown = sys::KEY_RIGHT_DOWN as _,
836    LeftUp = sys::KEY_LEFT_UP as _,
837    LeftDown = sys::KEY_LEFT_DOWN as _,
838
839    /// Show Device's Root Menu
840    RootMenu = sys::KEY_ROOT_MENU as _,
841    /// Show Top Menu of the Media (e.g. DVD)
842    MediaTopMenu = sys::KEY_MEDIA_TOP_MENU as _,
843    Numeric11 = sys::KEY_NUMERIC_11 as _,
844    Numeric12 = sys::KEY_NUMERIC_12 as _,
845
846    /// Toggle Audio Description: refers to an audio service that helps blind and
847    /// visually impaired consumers understand the action in a program. Note: in
848    /// some countries this is referred to as "Video Description".
849
850    AudioDesc = sys::KEY_AUDIO_DESC as _,
851    Audio3dMode = sys::KEY_3D_MODE as _,
852    NextFavorite = sys::KEY_NEXT_FAVORITE as _,
853    StopRecord = sys::KEY_STOP_RECORD as _,
854    PauseRecord = sys::KEY_PAUSE_RECORD as _,
855    /// Video on Demand
856    Vod = sys::KEY_VOD as _,
857    Unmute = sys::KEY_UNMUTE as _,
858    FastReverse = sys::KEY_FASTREVERSE as _,
859    SlowReverse = sys::KEY_SLOWREVERSE as _,
860
861    /// Control a data application associated with the currently viewed channel,
862    /// e.g. teletext or data broadcast application (MHEG, MHP, HbbTV, etc.)
863
864    Data = sys::KEY_DATA as _,
865    OnscreenKeyboard = sys::KEY_ONSCREEN_KEYBOARD as _,
866    PrivacyScreenToggle = sys::KEY_PRIVACY_SCREEN_TOGGLE as _,
867    SelectiveScreenshot = sys::KEY_SELECTIVE_SCREENSHOT as _,
868
869    /// Move the focus to the next user controllable element within a UI container
870    NextElement = sys::KEY_NEXT_ELEMENT as _,
871    /// Move the focus to the previous user controllable element within a UI container
872    PreviousElement = sys::KEY_PREVIOUS_ELEMENT as _,
873
874    /// Toggle Autopilot engagement
875    AutopilotEngageToggle = sys::KEY_AUTOPILOT_ENGAGE_TOGGLE as _,
876
877    /// Marine navigation shortcut key
878    MarkWaypoint = sys::KEY_MARK_WAYPOINT as _,
879    /// Marine navigation shortcut key
880    SOS = sys::KEY_SOS as _,
881    /// Marine navigation shortcut key
882    NavChart = sys::KEY_NAV_CHART as _,
883    /// Marine navigation shortcut key
884    FishingChart = sys::KEY_FISHING_CHART as _,
885    /// Marine navigation shortcut key
886    SingleRangeRadar = sys::KEY_SINGLE_RANGE_RADAR as _,
887    /// Marine navigation shortcut key
888    DualRangeRadar = sys::KEY_DUAL_RANGE_RADAR as _,
889    /// Marine navigation shortcut key
890    RadarOverlay = sys::KEY_RADAR_OVERLAY as _,
891    /// Marine navigation shortcut key
892    TraditionalSonar = sys::KEY_TRADITIONAL_SONAR as _,
893    /// Marine navigation shortcut key
894    ClearVuSonar = sys::KEY_CLEARVU_SONAR as _,
895    /// Marine navigation shortcut key
896    SideVuSonar = sys::KEY_SIDEVU_SONAR as _,
897    /// Marine navigation shortcut key
898    NavInfo = sys::KEY_NAV_INFO as _,
899    /// Marine navigation shortcut key
900    BrightnessMenu = sys::KEY_BRIGHTNESS_MENU as _,
901
902    Unknown28A,
903    Unknown28B,
904    Unknown28C,
905    Unknown28D,
906    Unknown28E,
907    Unknown28F,
908
909    Macro1 = sys::KEY_MACRO1 as _,
910    Macro2 = sys::KEY_MACRO2 as _,
911    Macro3 = sys::KEY_MACRO3 as _,
912    Macro4 = sys::KEY_MACRO4 as _,
913    Macro5 = sys::KEY_MACRO5 as _,
914    Macro6 = sys::KEY_MACRO6 as _,
915    Macro7 = sys::KEY_MACRO7 as _,
916    Macro8 = sys::KEY_MACRO8 as _,
917    Macro9 = sys::KEY_MACRO9 as _,
918    Macro10 = sys::KEY_MACRO10 as _,
919    Macro11 = sys::KEY_MACRO11 as _,
920    Macro12 = sys::KEY_MACRO12 as _,
921    Macro13 = sys::KEY_MACRO13 as _,
922    Macro14 = sys::KEY_MACRO14 as _,
923    Macro15 = sys::KEY_MACRO15 as _,
924    Macro16 = sys::KEY_MACRO16 as _,
925    Macro17 = sys::KEY_MACRO17 as _,
926    Macro18 = sys::KEY_MACRO18 as _,
927    Macro19 = sys::KEY_MACRO19 as _,
928    Macro20 = sys::KEY_MACRO20 as _,
929    Macro21 = sys::KEY_MACRO21 as _,
930    Macro22 = sys::KEY_MACRO22 as _,
931    Macro23 = sys::KEY_MACRO23 as _,
932    Macro24 = sys::KEY_MACRO24 as _,
933    Macro25 = sys::KEY_MACRO25 as _,
934    Macro26 = sys::KEY_MACRO26 as _,
935    Macro27 = sys::KEY_MACRO27 as _,
936    Macro28 = sys::KEY_MACRO28 as _,
937    Macro29 = sys::KEY_MACRO29 as _,
938    Macro30 = sys::KEY_MACRO30 as _,
939
940    Unknown2AE,
941    Unknown2AF,
942
943    MacroRecordStart = sys::KEY_MACRO_RECORD_START as _,
944    MacroRecordStop = sys::KEY_MACRO_RECORD_STOP as _,
945    MacroPresetCycle = sys::KEY_MACRO_PRESET_CYCLE as _,
946    MacroPreset1 = sys::KEY_MACRO_PRESET1 as _,
947    MacroPreset2 = sys::KEY_MACRO_PRESET2 as _,
948    MacroPreset3 = sys::KEY_MACRO_PRESET3 as _,
949
950    Unknown2B6,
951    Unknown2B7,
952
953    KbdLcdMenu1 = sys::KEY_KBD_LCD_MENU1 as _,
954    KbdLcdMenu2 = sys::KEY_KBD_LCD_MENU2 as _,
955    KbdLcdMenu3 = sys::KEY_KBD_LCD_MENU3 as _,
956    KbdLcdMenu4 = sys::KEY_KBD_LCD_MENU4 as _,
957    KbdLcdMenu5 = sys::KEY_KBD_LCD_MENU5 as _,
958
959    Unknown2BD,
960    Unknown2BE,
961    Unknown2BF,
962
963    ButtonTriggerHappy1 = sys::BTN_TRIGGER_HAPPY1 as _,
964    ButtonTriggerHappy2 = sys::BTN_TRIGGER_HAPPY2 as _,
965    ButtonTriggerHappy3 = sys::BTN_TRIGGER_HAPPY3 as _,
966    ButtonTriggerHappy4 = sys::BTN_TRIGGER_HAPPY4 as _,
967    ButtonTriggerHappy5 = sys::BTN_TRIGGER_HAPPY5 as _,
968    ButtonTriggerHappy6 = sys::BTN_TRIGGER_HAPPY6 as _,
969    ButtonTriggerHappy7 = sys::BTN_TRIGGER_HAPPY7 as _,
970    ButtonTriggerHappy8 = sys::BTN_TRIGGER_HAPPY8 as _,
971    ButtonTriggerHappy9 = sys::BTN_TRIGGER_HAPPY9 as _,
972    ButtonTriggerHappy10 = sys::BTN_TRIGGER_HAPPY10 as _,
973    ButtonTriggerHappy11 = sys::BTN_TRIGGER_HAPPY11 as _,
974    ButtonTriggerHappy12 = sys::BTN_TRIGGER_HAPPY12 as _,
975    ButtonTriggerHappy13 = sys::BTN_TRIGGER_HAPPY13 as _,
976    ButtonTriggerHappy14 = sys::BTN_TRIGGER_HAPPY14 as _,
977    ButtonTriggerHappy15 = sys::BTN_TRIGGER_HAPPY15 as _,
978    ButtonTriggerHappy16 = sys::BTN_TRIGGER_HAPPY16 as _,
979    ButtonTriggerHappy17 = sys::BTN_TRIGGER_HAPPY17 as _,
980    ButtonTriggerHappy18 = sys::BTN_TRIGGER_HAPPY18 as _,
981    ButtonTriggerHappy19 = sys::BTN_TRIGGER_HAPPY19 as _,
982    ButtonTriggerHappy20 = sys::BTN_TRIGGER_HAPPY20 as _,
983    ButtonTriggerHappy21 = sys::BTN_TRIGGER_HAPPY21 as _,
984    ButtonTriggerHappy22 = sys::BTN_TRIGGER_HAPPY22 as _,
985    ButtonTriggerHappy23 = sys::BTN_TRIGGER_HAPPY23 as _,
986    ButtonTriggerHappy24 = sys::BTN_TRIGGER_HAPPY24 as _,
987    ButtonTriggerHappy25 = sys::BTN_TRIGGER_HAPPY25 as _,
988    ButtonTriggerHappy26 = sys::BTN_TRIGGER_HAPPY26 as _,
989    ButtonTriggerHappy27 = sys::BTN_TRIGGER_HAPPY27 as _,
990    ButtonTriggerHappy28 = sys::BTN_TRIGGER_HAPPY28 as _,
991    ButtonTriggerHappy29 = sys::BTN_TRIGGER_HAPPY29 as _,
992    ButtonTriggerHappy30 = sys::BTN_TRIGGER_HAPPY30 as _,
993    ButtonTriggerHappy31 = sys::BTN_TRIGGER_HAPPY31 as _,
994    ButtonTriggerHappy32 = sys::BTN_TRIGGER_HAPPY32 as _,
995    ButtonTriggerHappy33 = sys::BTN_TRIGGER_HAPPY33 as _,
996    ButtonTriggerHappy34 = sys::BTN_TRIGGER_HAPPY34 as _,
997    ButtonTriggerHappy35 = sys::BTN_TRIGGER_HAPPY35 as _,
998    ButtonTriggerHappy36 = sys::BTN_TRIGGER_HAPPY36 as _,
999    ButtonTriggerHappy37 = sys::BTN_TRIGGER_HAPPY37 as _,
1000    ButtonTriggerHappy38 = sys::BTN_TRIGGER_HAPPY38 as _,
1001    ButtonTriggerHappy39 = sys::BTN_TRIGGER_HAPPY39 as _,
1002    ButtonTriggerHappy40 = sys::BTN_TRIGGER_HAPPY40 as _,
1003
1004    Unknown2E8,
1005    Unknown2E9,
1006    Unknown2EA,
1007    Unknown2EB,
1008    Unknown2EC,
1009    Unknown2ED,
1010    Unknown2EE,
1011    Unknown2EF,
1012
1013    Unknown2F0,
1014    Unknown2F1,
1015    Unknown2F2,
1016    Unknown2F3,
1017    Unknown2F4,
1018    Unknown2F5,
1019    Unknown2F6,
1020    Unknown2F7,
1021    Unknown2F8,
1022    Unknown2F9,
1023    Unknown2FA,
1024    Unknown2FB,
1025    Unknown2FC,
1026    Unknown2FD,
1027    Unknown2FE,
1028    Unknown2FF,
1029}
1030
1031impl_iterable! { Key(0, sys::KEY_CNT) }
1032
1033impl Key {
1034    /// Determines whether the given value represents a button.
1035    ///
1036    /// Buttons are often found on a mouse or gamepad.
1037    pub const fn is_button(&self) -> bool {
1038        let key = *self as u16;
1039        ((key >= Key::Button0 as _) & (key < Key::Ok as _)) | (key >= Key::ButtonTriggerHappy1 as _)
1040    }
1041
1042    /// Determines whether the given value represents a keyboard key.
1043    pub const fn is_key(&self) -> bool {
1044        !self.is_button()
1045    }
1046}