1use std::marker::PhantomData;
2
3use input_event_codes::*;
4
5use crate::event_codes::{EventCode, IntoIter};
6
7#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
9#[repr(u16)]
10pub enum Key {
11 KeyReserved = KEY_RESERVED,
13 KeyEscape = KEY_ESC,
15 Key1 = KEY_1,
17 Key2 = KEY_2,
19 Key3 = KEY_3,
21 Key4 = KEY_4,
23 Key5 = KEY_5,
25 Key6 = KEY_6,
27 Key7 = KEY_7,
29 Key8 = KEY_8,
31 Key9 = KEY_9,
33 Key0 = KEY_0,
35 KeyMinus = KEY_MINUS,
37 KeyEqual = KEY_EQUAL,
39 KeyBackspace = KEY_BACKSPACE,
41 KeyTab = KEY_TAB,
43 KeyQ = KEY_Q,
45 KeyW = KEY_W,
47 KeyE = KEY_E,
49 KeyR = KEY_R,
51 KeyT = KEY_T,
53 KeyY = KEY_Y,
55 KeyU = KEY_U,
57 KeyI = KEY_I,
59 KeyO = KEY_O,
61 KeyP = KEY_P,
63 KeyLeftBrace = KEY_LEFTBRACE,
65 KeyRightBrace = KEY_RIGHTBRACE,
67 KeyEnter = KEY_ENTER,
69 KeyLeftControl = KEY_LEFTCTRL,
71 KeyA = KEY_A,
73 KeyS = KEY_S,
75 KeyD = KEY_D,
77 KeyF = KEY_F,
79 KeyG = KEY_G,
81 KeyH = KEY_H,
83 KeyJ = KEY_J,
85 KeyK = KEY_K,
87 KeyL = KEY_L,
89 KeySemicolon = KEY_SEMICOLON,
91 KeyApostrophe = KEY_APOSTROPHE,
93 KeyGrave = KEY_GRAVE,
95 KeyLeftShift = KEY_LEFTSHIFT,
97 KeyBackslash = KEY_BACKSLASH,
99 KeyZ = KEY_Z,
101 KeyX = KEY_X,
103 KeyC = KEY_C,
105 KeyV = KEY_V,
107 KeyB = KEY_B,
109 KeyN = KEY_N,
111 KeyM = KEY_M,
113 KeyComma = KEY_COMMA,
115 KeyDot = KEY_DOT,
117 KeySlash = KEY_SLASH,
119 KeyRightShift = KEY_RIGHTSHIFT,
121 KeyKeypadAsterisk = KEY_KPASTERISK,
123 KeyLeftAlternate = KEY_LEFTALT,
125 KeySpace = KEY_SPACE,
127 KeyCapsLock = KEY_CAPSLOCK,
129 KeyF1 = KEY_F1,
131 KeyF2 = KEY_F2,
133 KeyF3 = KEY_F3,
135 KeyF4 = KEY_F4,
137 KeyF5 = KEY_F5,
139 KeyF6 = KEY_F6,
141 KeyF7 = KEY_F7,
143 KeyF8 = KEY_F8,
145 KeyF9 = KEY_F9,
147 KeyF10 = KEY_F10,
149 KeyNumericLock = KEY_NUMLOCK,
151 KeyScrollLock = KEY_SCROLLLOCK,
153 KeyKeypad7 = KEY_KP7,
155 KeyKeypad8 = KEY_KP8,
157 KeyKeypad9 = KEY_KP9,
159 KeyKeypadMinus = KEY_KPMINUS,
161 KeyKeypad4 = KEY_KP4,
163 KeyKeypad5 = KEY_KP5,
165 KeyKeypad6 = KEY_KP6,
167 KeyKeypadPlus = KEY_KPPLUS,
169 KeyKeypad1 = KEY_KP1,
171 KeyKeypad2 = KEY_KP2,
173 KeyKeypad3 = KEY_KP3,
175 KeyKeypad0 = KEY_KP0,
177 KeyKeypadDot = KEY_KPDOT,
179 Unknown054 = 0x054,
181 KeyZenkakuHankaku = KEY_ZENKAKUHANKAKU,
183 Key102ND = KEY_102ND,
185 KeyF11 = KEY_F11,
187 KeyF12 = KEY_F12,
189 KeyRO = KEY_RO,
191 KeyKatakana = KEY_KATAKANA,
193 KeyHiragana = KEY_HIRAGANA,
195 KeyHenkan = KEY_HENKAN,
197 KeyKatakanaHiragana = KEY_KATAKANAHIRAGANA,
199 KeyMuhenkan = KEY_MUHENKAN,
201 KeyKeypadJPComma = KEY_KPJPCOMMA,
203 KeyKeypadEnter = KEY_KPENTER,
205 KeyRightControl = KEY_RIGHTCTRL,
207 KeyKeypadSlash = KEY_KPSLASH,
209 KeySystemRequest = KEY_SYSRQ,
211 KeyRightAlternate = KEY_RIGHTALT,
213 KeyLinefeed = KEY_LINEFEED,
215 KeyHome = KEY_HOME,
217 KeyUp = KEY_UP,
219 KeyPageUp = KEY_PAGEUP,
221 KeyLeft = KEY_LEFT,
223 KeyRight = KEY_RIGHT,
225 KeyEnd = KEY_END,
227 KeyDown = KEY_DOWN,
229 KeyPageDown = KEY_PAGEDOWN,
231 KeyInsert = KEY_INSERT,
233 KeyDelete = KEY_DELETE,
235 KeyMacro = KEY_MACRO,
237 KeyMute = KEY_MUTE,
239 KeyVolumeDown = KEY_VOLUMEDOWN,
241 KeyVolumeUp = KEY_VOLUMEUP,
243 KeyPower = KEY_POWER,
245 KeyKeypadEqual = KEY_KPEQUAL,
247 KeyKeypadPlusMinus = KEY_KPPLUSMINUS,
249 KeyPause = KEY_PAUSE,
251 KeyScale = KEY_SCALE,
253 KeyKeypadComma = KEY_KPCOMMA,
255 KeyHangeul = KEY_HANGEUL,
257 KeyHanja = KEY_HANJA,
259 KeyYen = KEY_YEN,
261 KeyLeftMeta = KEY_LEFTMETA,
263 KeyRightMeta = KEY_RIGHTMETA,
265 KeyCompose = KEY_COMPOSE,
267 KeyStop = KEY_STOP,
269 KeyAgain = KEY_AGAIN,
271 KeyProps = KEY_PROPS,
273 KeyUndo = KEY_UNDO,
275 KeyFront = KEY_FRONT,
277 KeyCopy = KEY_COPY,
279 KeyOpen = KEY_OPEN,
281 KeyPaste = KEY_PASTE,
283 KeyFind = KEY_FIND,
285 KeyCut = KEY_CUT,
287 KeyHelp = KEY_HELP,
289 KeyMenu = KEY_MENU,
291 KeyCalculator = KEY_CALC,
293 KeySetup = KEY_SETUP,
295 KeySleep = KEY_SLEEP,
297 KeyWakeup = KEY_WAKEUP,
299 KeyFile = KEY_FILE,
301 KeySendFile = KEY_SENDFILE,
303 KeyDeleteFile = KEY_DELETEFILE,
305 KeyXFER = KEY_XFER,
307 KeyProgram1 = KEY_PROG1,
309 KeyProgram2 = KEY_PROG2,
311 KeyWWW = KEY_WWW,
313 KeyMsDOS = KEY_MSDOS,
315 KeyCoffee = KEY_COFFEE,
317 KeyRotateDisplay = KEY_ROTATE_DISPLAY,
319 KeyCycleWindows = KEY_CYCLEWINDOWS,
321 KeyMail = KEY_MAIL,
323 KeyBookmarks = KEY_BOOKMARKS,
325 KeyComputer = KEY_COMPUTER,
327 KeyBack = KEY_BACK,
329 KeyForward = KEY_FORWARD,
331 KeyCloseCD = KEY_CLOSECD,
333 KeyEjectCD = KEY_EJECTCD,
335 KeyEjectCloseCD = KEY_EJECTCLOSECD,
337 KeyNextSong = KEY_NEXTSONG,
339 KeyPlayPause = KEY_PLAYPAUSE,
341 KeyPreviousSong = KEY_PREVIOUSSONG,
343 KeyStopCD = KEY_STOPCD,
345 KeyRecord = KEY_RECORD,
347 KeyRewind = KEY_REWIND,
349 KeyPhone = KEY_PHONE,
351 KeyIso = KEY_ISO,
353 KeyConfig = KEY_CONFIG,
355 KeyHomepage = KEY_HOMEPAGE,
357 KeyRefresh = KEY_REFRESH,
359 KeyExit = KEY_EXIT,
361 KeyMove = KEY_MOVE,
363 KeyEdit = KEY_EDIT,
365 KeyScrollUp = KEY_SCROLLUP,
367 KeyScrollDown = KEY_SCROLLDOWN,
369 KeyKeypadLeftParenthesis = KEY_KPLEFTPAREN,
371 KeyKeypadRightParenthesis = KEY_KPRIGHTPAREN,
373 KeyNew = KEY_NEW,
375 KeyRedo = KEY_REDO,
377 KeyF13 = KEY_F13,
379 KeyF14 = KEY_F14,
381 KeyF15 = KEY_F15,
383 KeyF16 = KEY_F16,
385 KeyF17 = KEY_F17,
387 KeyF18 = KEY_F18,
389 KeyF19 = KEY_F19,
391 KeyF20 = KEY_F20,
393 KeyF21 = KEY_F21,
395 KeyF22 = KEY_F22,
397 KeyF23 = KEY_F23,
399 KeyF24 = KEY_F24,
401 Unknown0C3 = 0x0c3,
403 Unknown0C4 = 0x0c4,
405 Unknown0C5 = 0x0c5,
407 Unknown0C6 = 0x0c6,
409 Unknown0C7 = 0x0c7,
411 KeyPlayCD = KEY_PLAYCD,
413 KeyPauseCD = KEY_PAUSECD,
415 KeyProgram3 = KEY_PROG3,
417 KeyProgram4 = KEY_PROG4,
419 KeyDashboard = KEY_DASHBOARD,
421 KeySuspend = KEY_SUSPEND,
423 KeyClose = KEY_CLOSE,
425 KeyPlay = KEY_PLAY,
427 KeyFastForward = KEY_FASTFORWARD,
429 KeyBassBoost = KEY_BASSBOOST,
431 KeyPrint = KEY_PRINT,
433 KeyHP = KEY_HP,
435 KeyCamera = KEY_CAMERA,
437 KeySound = KEY_SOUND,
439 KeyQuestion = KEY_QUESTION,
441 KeyEmail = KEY_EMAIL,
443 KeyChat = KEY_CHAT,
445 KeySearch = KEY_SEARCH,
447 KeyConnect = KEY_CONNECT,
449 KeyFinance = KEY_FINANCE,
451 KeySport = KEY_SPORT,
453 KeyShop = KEY_SHOP,
455 KeyAlternateErase = KEY_ALTERASE,
457 KeyCancel = KEY_CANCEL,
459 KeyBrightnessDown = KEY_BRIGHTNESSDOWN,
461 KeyBrightnessUp = KEY_BRIGHTNESSUP,
463 KeyMedia = KEY_MEDIA,
465 KeySwitchVideoMode = KEY_SWITCHVIDEOMODE,
467 KeyKeyboardIlluminationToggle = KEY_KBDILLUMTOGGLE,
469 KeyKeyboardIlluminationDown = KEY_KBDILLUMDOWN,
471 KeyKeyboardIlluminationUp = KEY_KBDILLUMUP,
473 KeySend = KEY_SEND,
475 KeyReply = KEY_REPLY,
477 KeyForwardMail = KEY_FORWARDMAIL,
479 KeySave = KEY_SAVE,
481 KeyDocuments = KEY_DOCUMENTS,
483 KeyBattery = KEY_BATTERY,
485 KeyBluetooth = KEY_BLUETOOTH,
487 KeyWLAN = KEY_WLAN,
489 KeyUWB = KEY_UWB,
491 KeyUnknown = KEY_UNKNOWN,
493 KeyVideoNext = KEY_VIDEO_NEXT,
495 KeyVideoPrevious = KEY_VIDEO_PREV,
497 KeyBrightnessCycle = KEY_BRIGHTNESS_CYCLE,
499 KeyBrightnessAuto = KEY_BRIGHTNESS_AUTO,
501 KeyDisplayOff = KEY_DISPLAY_OFF,
503 KeyWWAN = KEY_WWAN,
505 KeyRFKill = KEY_RFKILL,
507 KeyMicrophoneMute = KEY_MICMUTE,
509 Unknown0F9 = 0x0f9,
511 Unknown0FA = 0x0fa,
513 Unknown0FB = 0x0fb,
515 Unknown0FC = 0x0fc,
517 Unknown0FD = 0x0fd,
519 Unknown0FE = 0x0fe,
521 Unknown0FF = 0x0ff,
523 Button0 = BTN_0,
525 Button1 = BTN_1,
527 Button2 = BTN_2,
529 Button3 = BTN_3,
531 Button4 = BTN_4,
533 Button5 = BTN_5,
535 Button6 = BTN_6,
537 Button7 = BTN_7,
539 Button8 = BTN_8,
541 Button9 = BTN_9,
543 Unknown10A = 0x10a,
545 Unknown10B = 0x10b,
547 Unknown10C = 0x10c,
549 Unknown10D = 0x10d,
551 Unknown10E = 0x10e,
553 Unknown10F = 0x10f,
555 ButtonLeftMouse = BTN_LEFT,
557 ButtonRightMouse = BTN_RIGHT,
559 ButtonMiddleMouse = BTN_MIDDLE,
561 ButtonSideMouse = BTN_SIDE,
563 ButtonExtraMouse = BTN_EXTRA,
565 ButtonForwardMouse = BTN_FORWARD,
567 ButtonBackMouse = BTN_BACK,
569 ButtonTaskMouse = BTN_TASK,
571 Unknown118 = 0x118,
573 Unknown119 = 0x119,
575 Unknown11A = 0x11a,
577 Unknown11B = 0x11b,
579 Unknown11C = 0x11c,
581 Unknown11D = 0x11d,
583 Unknown11E = 0x11e,
585 Unknown11F = 0x11f,
587 ButtonTrigger = BTN_TRIGGER,
589 ButtonThumb = BTN_THUMB,
591 ButtonThumb2 = BTN_THUMB2,
593 ButtonTop = BTN_TOP,
595 ButtonTop2 = BTN_TOP2,
597 ButtonPinkie = BTN_PINKIE,
599 ButtonBase = BTN_BASE,
601 ButtonBase2 = BTN_BASE2,
603 ButtonBase3 = BTN_BASE3,
605 ButtonBase4 = BTN_BASE4,
607 ButtonBase5 = BTN_BASE5,
609 ButtonBase6 = BTN_BASE6,
611 Unknown12C = 0x12c,
613 Unknown12D = 0x12d,
615 Unknown12E = 0x12e,
617 ButtonDead = BTN_DEAD,
619 ButtonSouth = BTN_SOUTH,
621 ButtonEast = BTN_EAST,
623 ButtonC = BTN_C,
625 ButtonNorth = BTN_NORTH,
627 ButtonWest = BTN_WEST,
629 ButtonZ = BTN_Z,
631 ButtonTriggerLeft = BTN_TL,
633 ButtonTriggerRight = BTN_TR,
635 ButtonTriggerLeft2 = BTN_TL2,
637 ButtonTriggerRight2 = BTN_TR2,
639 ButtonSelect = BTN_SELECT,
641 ButtonStart = BTN_START,
643 ButtonMode = BTN_MODE,
645 ButtonThumbLeft = BTN_THUMBL,
647 ButtonThumbRight = BTN_THUMBR,
649 Unknown13F = 0x13f,
651 ButtonToolPen = BTN_TOOL_PEN,
653 ButtonToolRubber = BTN_TOOL_RUBBER,
655 ButtonToolBrush = BTN_TOOL_BRUSH,
657 ButtonToolPencil = BTN_TOOL_PENCIL,
659 ButtonToolAirbrush = BTN_TOOL_AIRBRUSH,
661 ButtonToolFinger = BTN_TOOL_FINGER,
663 ButtonToolMouse = BTN_TOOL_MOUSE,
665 ButtonToolLens = BTN_TOOL_LENS,
667 ButtonToolQuintupleTap = BTN_TOOL_QUINTTAP,
669 ButtonStylus3 = BTN_STYLUS3,
671 ButtonTouch = BTN_TOUCH,
673 ButtonStylus = BTN_STYLUS,
675 ButtonStylus2 = BTN_STYLUS2,
677 ButtonToolDoubleTap = BTN_TOOL_DOUBLETAP,
679 ButtonToolTripleTap = BTN_TOOL_TRIPLETAP,
681 ButtonToolQuadrupleTap = BTN_TOOL_QUADTAP,
683 ButtonGearDown = BTN_GEAR_DOWN,
685 ButtonGearUp = BTN_GEAR_UP,
687 Unknown152 = 0x152,
689 Unknown153 = 0x153,
691 Unknown154 = 0x154,
693 Unknown155 = 0x155,
695 Unknown156 = 0x156,
697 Unknown157 = 0x157,
699 Unknown158 = 0x158,
701 Unknown159 = 0x159,
703 Unknown15A = 0x15a,
705 Unknown15B = 0x15b,
707 Unknown15C = 0x15c,
709 Unknown15D = 0x15d,
711 Unknown15E = 0x15e,
713 Unknown15F = 0x15f,
715 KeyOk = KEY_OK,
717 KeySelect = KEY_SELECT,
719 KeyGoto = KEY_GOTO,
721 KeyClear = KEY_CLEAR,
723 KeyPower2 = KEY_POWER2,
725 KeyOption = KEY_OPTION,
727 KeyInfo = KEY_INFO,
729 KeyTime = KEY_TIME,
731 KeyVendor = KEY_VENDOR,
733 KeyArchive = KEY_ARCHIVE,
735 KeyProgram = KEY_PROGRAM,
737 KeyChannel = KEY_CHANNEL,
739 KeyFavorites = KEY_FAVORITES,
741 KeyEPG = KEY_EPG,
743 KeyPVR = KEY_PVR,
745 KeyMHP = KEY_MHP,
747 KeyLanguage = KEY_LANGUAGE,
749 KeyTitle = KEY_TITLE,
751 KeySubtitle = KEY_SUBTITLE,
753 KeyAngle = KEY_ANGLE,
755 KeyFullScreen = KEY_FULL_SCREEN,
757 KeyMode = KEY_MODE,
759 KeyKeyboard = KEY_KEYBOARD,
761 KeyAspectRatio = KEY_ASPECT_RATIO,
763 KeyPC = KEY_PC,
765 KeyTV = KEY_TV,
767 KeyTV2 = KEY_TV2,
769 KeyVCR = KEY_VCR,
771 KeyVCR2 = KEY_VCR2,
773 KeySatellite = KEY_SAT,
775 KeySatellite2 = KEY_SAT2,
777 KeyCD = KEY_CD,
779 KeyTape = KEY_TAPE,
781 KeyRadio = KEY_RADIO,
783 KeyTuner = KEY_TUNER,
785 KeyPlayer = KEY_PLAYER,
787 KeyText = KEY_TEXT,
789 KeyDVD = KEY_DVD,
791 KeyAux = KEY_AUX,
793 KeyMP3 = KEY_MP3,
795 KeyAudio = KEY_AUDIO,
797 KeyVideo = KEY_VIDEO,
799 KeyDirectory = KEY_DIRECTORY,
801 KeyList = KEY_LIST,
803 KeyMemo = KEY_MEMO,
805 KeyCalendar = KEY_CALENDAR,
807 KeyRed = KEY_RED,
809 KeyGreen = KEY_GREEN,
811 KeyYellow = KEY_YELLOW,
813 KeyBlue = KEY_BLUE,
815 KeyChannelUp = KEY_CHANNELUP,
817 KeyChannelDown = KEY_CHANNELDOWN,
819 KeyFirst = KEY_FIRST,
821 KeyLast = KEY_LAST,
823 KeyAb = KEY_AB,
825 KeyNext = KEY_NEXT,
827 KeyRestart = KEY_RESTART,
829 KeySlow = KEY_SLOW,
831 KeyShuffle = KEY_SHUFFLE,
833 KeyBreak = KEY_BREAK,
835 KeyPrevious = KEY_PREVIOUS,
837 KeyDigits = KEY_DIGITS,
839 KeyTeen = KEY_TEEN,
841 KeyTwenty = KEY_TWEN,
843 KeyVideophone = KEY_VIDEOPHONE,
845 KeyGames = KEY_GAMES,
847 KeyZoomIn = KEY_ZOOMIN,
849 KeyZoomOut = KEY_ZOOMOUT,
851 KeyZoomReset = KEY_ZOOMRESET,
853 KeyWordProcessor = KEY_WORDPROCESSOR,
855 KeyEditor = KEY_EDITOR,
857 KeySpreadSheet = KEY_SPREADSHEET,
859 KeyGraphicsEditor = KEY_GRAPHICSEDITOR,
861 KeyPresentation = KEY_PRESENTATION,
863 KeyDatabase = KEY_DATABASE,
865 KeyNews = KEY_NEWS,
867 KeyVoiceMail = KEY_VOICEMAIL,
869 KeyAddressBook = KEY_ADDRESSBOOK,
871 KeyMessenger = KEY_MESSENGER,
873 KeyDisplayToggle = KEY_DISPLAYTOGGLE,
875 KeySpellcheck = KEY_SPELLCHECK,
877 KeyLogoff = KEY_LOGOFF,
879 KeyDollar = KEY_DOLLAR,
881 KeyEuro = KEY_EURO,
883 KeyFrameBack = KEY_FRAMEBACK,
885 KeyFrameForward = KEY_FRAMEFORWARD,
887 KeyContextMenu = KEY_CONTEXT_MENU,
889 KeyMediaRepeat = KEY_MEDIA_REPEAT,
891 Key10ChannelsUp = KEY_10CHANNELSUP,
893 Key10ChannelsDown = KEY_10CHANNELSDOWN,
895 KeyImages = KEY_IMAGES,
897 Unknown1BB = 0x1bb,
899 Unknown1BC = 0x1bc,
901 Unknown1BD = 0x1bd,
903 Unknown1BE = 0x1be,
905 Unknown1BF = 0x1bf,
907 KeyDeleteEOL = KEY_DEL_EOL,
909 KeyDeleteEOS = KEY_DEL_EOS,
911 KeyInsertLine = KEY_INS_LINE,
913 KeyDeleteLine = KEY_DEL_LINE,
915 Unknown1C4 = 0x1c4,
917 Unknown1C5 = 0x1c5,
919 Unknown1C6 = 0x1c6,
921 Unknown1C7 = 0x1c7,
923 Unknown1C8 = 0x1c8,
925 Unknown1C9 = 0x1c9,
927 Unknown1CA = 0x1ca,
929 Unknown1CB = 0x1cb,
931 Unknown1CC = 0x1cc,
933 Unknown1CD = 0x1cd,
935 Unknown1CE = 0x1ce,
937 Unknown1CF = 0x1cf,
939 KeyFunction = KEY_FN,
941 KeyFunctionEscape = KEY_FN_ESC,
943 KeyFunctionF1 = KEY_FN_F1,
945 KeyFunctionF2 = KEY_FN_F2,
947 KeyFunctionF3 = KEY_FN_F3,
949 KeyFunctionF4 = KEY_FN_F4,
951 KeyFunctionF5 = KEY_FN_F5,
953 KeyFunctionF6 = KEY_FN_F6,
955 KeyFunctionF7 = KEY_FN_F7,
957 KeyFunctionF8 = KEY_FN_F8,
959 KeyFunctionF9 = KEY_FN_F9,
961 KeyFunctionF10 = KEY_FN_F10,
963 KeyFunctionF11 = KEY_FN_F11,
965 KeyFunctionF12 = KEY_FN_F12,
967 KeyFunction1 = KEY_FN_1,
969 KeyFunction2 = KEY_FN_2,
971 KeyFunctionD = KEY_FN_D,
973 KeyFunctionE = KEY_FN_E,
975 KeyFunctionF = KEY_FN_F,
977 KeyFunctionS = KEY_FN_S,
979 KeyFunctionB = KEY_FN_B,
981 Unknown1E5 = 0x1e5,
983 Unknown1E6 = 0x1e6,
985 Unknown1E7 = 0x1e7,
987 Unknown1E8 = 0x1e8,
989 Unknown1E9 = 0x1e9,
991 Unknown1EA = 0x1ea,
993 Unknown1EB = 0x1eb,
995 Unknown1EC = 0x1ec,
997 Unknown1ED = 0x1ed,
999 Unknown1EE = 0x1ee,
1001 Unknown1EF = 0x1ef,
1003 Unknown1F0 = 0x1f0,
1005 KeyBrailleDot1 = KEY_BRL_DOT1,
1007 KeyBrailleDot2 = KEY_BRL_DOT2,
1009 KeyBrailleDot3 = KEY_BRL_DOT3,
1011 KeyBrailleDot4 = KEY_BRL_DOT4,
1013 KeyBrailleDot5 = KEY_BRL_DOT5,
1015 KeyBrailleDot6 = KEY_BRL_DOT6,
1017 KeyBrailleDot7 = KEY_BRL_DOT7,
1019 KeyBrailleDot8 = KEY_BRL_DOT8,
1021 KeyBrailleDot9 = KEY_BRL_DOT9,
1023 KeyBrailleDot10 = KEY_BRL_DOT10,
1025 Unknown1FB = 0x1fb,
1027 Unknown1FC = 0x1fc,
1029 Unknown1FD = 0x1fd,
1031 Unknown1FE = 0x1fe,
1033 Unknown1FF = 0x1ff,
1035 KeyNumeric0 = KEY_NUMERIC_0,
1037 KeyNumeric1 = KEY_NUMERIC_1,
1039 KeyNumeric2 = KEY_NUMERIC_2,
1041 KeyNumeric3 = KEY_NUMERIC_3,
1043 KeyNumeric4 = KEY_NUMERIC_4,
1045 KeyNumeric5 = KEY_NUMERIC_5,
1047 KeyNumeric6 = KEY_NUMERIC_6,
1049 KeyNumeric7 = KEY_NUMERIC_7,
1051 KeyNumeric8 = KEY_NUMERIC_8,
1053 KeyNumeric9 = KEY_NUMERIC_9,
1055 KeyNumericStar = KEY_NUMERIC_STAR,
1057 KeyNumericPound = KEY_NUMERIC_POUND,
1059 KeyNumericA = KEY_NUMERIC_A,
1061 KeyNumericB = KEY_NUMERIC_B,
1063 KeyNumericC = KEY_NUMERIC_C,
1065 KeyNumericD = KEY_NUMERIC_D,
1067 KeyCameraFocus = KEY_CAMERA_FOCUS,
1069 KeyWPSButton = KEY_WPS_BUTTON,
1071 KeyTouchpadToggle = KEY_TOUCHPAD_TOGGLE,
1073 KeyTouchpadOn = KEY_TOUCHPAD_ON,
1075 KeyTouchpadOff = KEY_TOUCHPAD_OFF,
1077 KeyCameraZoomIn = KEY_CAMERA_ZOOMIN,
1079 KeyCameraZoomOut = KEY_CAMERA_ZOOMOUT,
1081 KeyCameraUp = KEY_CAMERA_UP,
1083 KeyCameraDown = KEY_CAMERA_DOWN,
1085 KeyCameraLeft = KEY_CAMERA_LEFT,
1087 KeyCameraRight = KEY_CAMERA_RIGHT,
1089 KeyAttendantOn = KEY_ATTENDANT_ON,
1091 KeyAttendantOff = KEY_ATTENDANT_OFF,
1093 KeyAttendantToggle = KEY_ATTENDANT_TOGGLE,
1095 KeyLightsToggle = KEY_LIGHTS_TOGGLE,
1097 Unknown21F = 0x21f,
1099 ButtonDPadUp = BTN_DPAD_UP,
1101 ButtonDPadDown = BTN_DPAD_DOWN,
1103 ButtonDPadLeft = BTN_DPAD_LEFT,
1105 ButtonDPadRight = BTN_DPAD_RIGHT,
1107 Unknown224 = 0x224,
1109 Unknown225 = 0x225,
1111 Unknown226 = 0x226,
1113 Unknown227 = 0x227,
1115 Unknown228 = 0x228,
1117 Unknown229 = 0x229,
1119 Unknown22A = 0x22a,
1121 Unknown22B = 0x22b,
1123 Unknown22C = 0x22c,
1125 Unknown22D = 0x22d,
1127 Unknown22E = 0x22e,
1129 Unknown22F = 0x22f,
1131 KeyALSToggle = KEY_ALS_TOGGLE,
1133 KeyRotateLockToggle = KEY_ROTATE_LOCK_TOGGLE,
1135 Unknown232 = 0x232,
1137 Unknown233 = 0x233,
1139 Unknown234 = 0x234,
1141 Unknown235 = 0x235,
1143 Unknown236 = 0x236,
1145 Unknown237 = 0x237,
1147 Unknown238 = 0x238,
1149 Unknown239 = 0x239,
1151 Unknown23A = 0x23a,
1153 Unknown23B = 0x23b,
1155 Unknown23C = 0x23c,
1157 Unknown23D = 0x23d,
1159 Unknown23E = 0x23e,
1161 Unknown23F = 0x23f,
1163 KeyButtonConfiguration = KEY_BUTTONCONFIG,
1165 KeyTaskManager = KEY_TASKMANAGER,
1167 KeyJournal = KEY_JOURNAL,
1169 KeyControlPanel = KEY_CONTROLPANEL,
1171 KeyAppSelect = KEY_APPSELECT,
1173 KeyScreenSaver = KEY_SCREENSAVER,
1175 KeyVoiceCommand = KEY_VOICECOMMAND,
1177 KeyAssistant = KEY_ASSISTANT,
1179 Unknown248 = 0x248,
1181 Unknown249 = 0x249,
1183 Unknown24A = 0x24a,
1185 Unknown24B = 0x24b,
1187 Unknown24C = 0x24c,
1189 Unknown24D = 0x24d,
1191 Unknown24E = 0x24e,
1193 Unknown24F = 0x24f,
1195 KeyBrightnessMin = KEY_BRIGHTNESS_MIN,
1197 KeyBrightnessMax = KEY_BRIGHTNESS_MAX,
1199 Unknown252 = 0x252,
1201 Unknown253 = 0x253,
1203 Unknown254 = 0x254,
1205 Unknown255 = 0x255,
1207 Unknown256 = 0x256,
1209 Unknown257 = 0x257,
1211 Unknown258 = 0x258,
1213 Unknown259 = 0x259,
1215 Unknown25A = 0x25a,
1217 Unknown25B = 0x25b,
1219 Unknown25C = 0x25c,
1221 Unknown25D = 0x25d,
1223 Unknown25E = 0x25e,
1225 Unknown25F = 0x25f,
1227 KeyKeyboardInputAssistPrevious = KEY_KBDINPUTASSIST_PREV,
1229 KeyKeyboardInputAssistNext = KEY_KBDINPUTASSIST_NEXT,
1231 KeyKeyboardInputAssistPreviousGroup = KEY_KBDINPUTASSIST_PREVGROUP,
1233 KeyKeyboardInputAssistNextGroup = KEY_KBDINPUTASSIST_NEXTGROUP,
1235 KeyKeyboardInputAssistAccept = KEY_KBDINPUTASSIST_ACCEPT,
1237 KeyKeyboardInputAssistCancel = KEY_KBDINPUTASSIST_CANCEL,
1239 KeyRightUp = KEY_RIGHT_UP,
1241 KeyRightDown = KEY_RIGHT_DOWN,
1243 KeyLeftUp = KEY_LEFT_UP,
1245 KeyLeftDown = KEY_LEFT_DOWN,
1247 KeyRootMenu = KEY_ROOT_MENU,
1249 KeyMediaTopMenu = KEY_MEDIA_TOP_MENU,
1251 KeyNumeric11 = KEY_NUMERIC_11,
1253 KeyNumeric12 = KEY_NUMERIC_12,
1255 KeyAudioDescription = KEY_AUDIO_DESC,
1257 Key3DMode = KEY_3D_MODE,
1259 KeyNextFavorite = KEY_NEXT_FAVORITE,
1261 KeyStopRecord = KEY_STOP_RECORD,
1263 KeyPauseRecord = KEY_PAUSE_RECORD,
1265 KeyVOD = KEY_VOD,
1267 KeyUnmute = KEY_UNMUTE,
1269 KeyFastReverse = KEY_FASTREVERSE,
1271 KeySlowReverse = KEY_SLOWREVERSE,
1273 KeyData = KEY_DATA,
1275 KeyOnScreenKeyboard = KEY_ONSCREEN_KEYBOARD,
1277 Unknown279 = 0x279,
1279 Unknown27A = 0x27a,
1281 Unknown27B = 0x27b,
1283 Unknown27C = 0x27c,
1285 Unknown27D = 0x27d,
1287 Unknown27E = 0x27e,
1289 Unknown27F = 0x27f,
1291 Unknown280 = 0x280,
1293 Unknown281 = 0x281,
1295 Unknown282 = 0x282,
1297 Unknown283 = 0x283,
1299 Unknown284 = 0x284,
1301 Unknown285 = 0x285,
1303 Unknown286 = 0x286,
1305 Unknown287 = 0x287,
1307 Unknown288 = 0x288,
1309 Unknown289 = 0x289,
1311 Unknown28A = 0x28a,
1313 Unknown28B = 0x28b,
1315 Unknown28C = 0x28c,
1317 Unknown28D = 0x28d,
1319 Unknown28E = 0x28e,
1321 Unknown28F = 0x28f,
1323 Unknown290 = 0x290,
1325 Unknown291 = 0x291,
1327 Unknown292 = 0x292,
1329 Unknown293 = 0x293,
1331 Unknown294 = 0x294,
1333 Unknown295 = 0x295,
1335 Unknown296 = 0x296,
1337 Unknown297 = 0x297,
1339 Unknown298 = 0x298,
1341 Unknown299 = 0x299,
1343 Unknown29A = 0x29a,
1345 Unknown29B = 0x29b,
1347 Unknown29C = 0x29c,
1349 Unknown29D = 0x29d,
1351 Unknown29E = 0x29e,
1353 Unknown29F = 0x29f,
1355 Unknown2A0 = 0x2a0,
1357 Unknown2A1 = 0x2a1,
1359 Unknown2A2 = 0x2a2,
1361 Unknown2A3 = 0x2a3,
1363 Unknown2A4 = 0x2a4,
1365 Unknown2A5 = 0x2a5,
1367 Unknown2A6 = 0x2a6,
1369 Unknown2A7 = 0x2a7,
1371 Unknown2A8 = 0x2a8,
1373 Unknown2A9 = 0x2a9,
1375 Unknown2AA = 0x2aa,
1377 Unknown2AB = 0x2ab,
1379 Unknown2AC = 0x2ac,
1381 Unknown2AD = 0x2ad,
1383 Unknown2AE = 0x2ae,
1385 Unknown2AF = 0x2af,
1387 Unknown2B0 = 0x2b0,
1389 Unknown2B1 = 0x2b1,
1391 Unknown2B2 = 0x2b2,
1393 Unknown2B3 = 0x2b3,
1395 Unknown2B4 = 0x2b4,
1397 Unknown2B5 = 0x2b5,
1399 Unknown2B6 = 0x2b6,
1401 Unknown2B7 = 0x2b7,
1403 Unknown2B8 = 0x2b8,
1405 Unknown2B9 = 0x2b9,
1407 Unknown2BA = 0x2ba,
1409 Unknown2BB = 0x2bb,
1411 Unknown2BC = 0x2bc,
1413 Unknown2BD = 0x2bd,
1415 Unknown2BE = 0x2be,
1417 Unknown2BF = 0x2bf,
1419 ButtonTriggerHappy1 = BTN_TRIGGER_HAPPY1,
1421 ButtonTriggerHappy2 = BTN_TRIGGER_HAPPY2,
1423 ButtonTriggerHappy3 = BTN_TRIGGER_HAPPY3,
1425 ButtonTriggerHappy4 = BTN_TRIGGER_HAPPY4,
1427 ButtonTriggerHappy5 = BTN_TRIGGER_HAPPY5,
1429 ButtonTriggerHappy6 = BTN_TRIGGER_HAPPY6,
1431 ButtonTriggerHappy7 = BTN_TRIGGER_HAPPY7,
1433 ButtonTriggerHappy8 = BTN_TRIGGER_HAPPY8,
1435 ButtonTriggerHappy9 = BTN_TRIGGER_HAPPY9,
1437 ButtonTriggerHappy10 = BTN_TRIGGER_HAPPY10,
1439 ButtonTriggerHappy11 = BTN_TRIGGER_HAPPY11,
1441 ButtonTriggerHappy12 = BTN_TRIGGER_HAPPY12,
1443 ButtonTriggerHappy13 = BTN_TRIGGER_HAPPY13,
1445 ButtonTriggerHappy14 = BTN_TRIGGER_HAPPY14,
1447 ButtonTriggerHappy15 = BTN_TRIGGER_HAPPY15,
1449 ButtonTriggerHappy16 = BTN_TRIGGER_HAPPY16,
1451 ButtonTriggerHappy17 = BTN_TRIGGER_HAPPY17,
1453 ButtonTriggerHappy18 = BTN_TRIGGER_HAPPY18,
1455 ButtonTriggerHappy19 = BTN_TRIGGER_HAPPY19,
1457 ButtonTriggerHappy20 = BTN_TRIGGER_HAPPY20,
1459 ButtonTriggerHappy21 = BTN_TRIGGER_HAPPY21,
1461 ButtonTriggerHappy22 = BTN_TRIGGER_HAPPY22,
1463 ButtonTriggerHappy23 = BTN_TRIGGER_HAPPY23,
1465 ButtonTriggerHappy24 = BTN_TRIGGER_HAPPY24,
1467 ButtonTriggerHappy25 = BTN_TRIGGER_HAPPY25,
1469 ButtonTriggerHappy26 = BTN_TRIGGER_HAPPY26,
1471 ButtonTriggerHappy27 = BTN_TRIGGER_HAPPY27,
1473 ButtonTriggerHappy28 = BTN_TRIGGER_HAPPY28,
1475 ButtonTriggerHappy29 = BTN_TRIGGER_HAPPY29,
1477 ButtonTriggerHappy30 = BTN_TRIGGER_HAPPY30,
1479 ButtonTriggerHappy31 = BTN_TRIGGER_HAPPY31,
1481 ButtonTriggerHappy32 = BTN_TRIGGER_HAPPY32,
1483 ButtonTriggerHappy33 = BTN_TRIGGER_HAPPY33,
1485 ButtonTriggerHappy34 = BTN_TRIGGER_HAPPY34,
1487 ButtonTriggerHappy35 = BTN_TRIGGER_HAPPY35,
1489 ButtonTriggerHappy36 = BTN_TRIGGER_HAPPY36,
1491 ButtonTriggerHappy37 = BTN_TRIGGER_HAPPY37,
1493 ButtonTriggerHappy38 = BTN_TRIGGER_HAPPY38,
1495 ButtonTriggerHappy39 = BTN_TRIGGER_HAPPY39,
1497 ButtonTriggerHappy40 = BTN_TRIGGER_HAPPY40,
1499 Unknown2E8 = 0x2e8,
1501 Unknown2E9 = 0x2e9,
1503 Unknown2EA = 0x2ea,
1505 Unknown2EB = 0x2eb,
1507 Unknown2EC = 0x2ec,
1509 Unknown2ED = 0x2ed,
1511 Unknown2EE = 0x2ee,
1513 Unknown2EF = 0x2ef,
1515 Unknown2F0 = 0x2f0,
1517 Unknown2F1 = 0x2f1,
1519 Unknown2F2 = 0x2f2,
1521 Unknown2F3 = 0x2f3,
1523 Unknown2F4 = 0x2f4,
1525 Unknown2F5 = 0x2f5,
1527 Unknown2F6 = 0x2f6,
1529 Unknown2F7 = 0x2f7,
1531 Unknown2F8 = 0x2f8,
1533 Unknown2F9 = 0x2f9,
1535 Unknown2FA = 0x2fa,
1537 Unknown2FB = 0x2fb,
1539 Unknown2FC = 0x2fc,
1541 Unknown2FD = 0x2fd,
1543 Unknown2FE = 0x2fe,
1545}
1546
1547impl Key {
1548 #[allow(non_upper_case_globals)]
1550 pub const ButtonA: Self = Self::ButtonSouth;
1551
1552 #[allow(non_upper_case_globals)]
1554 pub const ButtonB: Self = Self::ButtonEast;
1555
1556 #[allow(non_upper_case_globals)]
1558 pub const ButtonDigitizer: Self = Self::ButtonToolPen;
1559
1560 #[allow(non_upper_case_globals)]
1562 pub const ButtonGamepad: Self = Self::ButtonSouth;
1563
1564 #[allow(non_upper_case_globals)]
1566 pub const ButtonJoystick: Self = Self::ButtonTrigger;
1567
1568 #[allow(non_upper_case_globals)]
1570 pub const ButtonMiscellaneous: Self = Self::Button0;
1571
1572 #[allow(non_upper_case_globals)]
1574 pub const ButtonMouse: Self = Self::ButtonLeftMouse;
1575
1576 #[allow(non_upper_case_globals)]
1578 pub const ButtonTriggerHappy: Self = Self::ButtonTriggerHappy1;
1579
1580 #[allow(non_upper_case_globals)]
1582 pub const ButtonWheel: Self = Self::ButtonGearDown;
1583
1584 #[allow(non_upper_case_globals)]
1586 pub const ButtonX: Self = Self::ButtonNorth;
1587
1588 #[allow(non_upper_case_globals)]
1590 pub const ButtonY: Self = Self::ButtonWest;
1591
1592 #[allow(non_upper_case_globals)]
1594 pub const KeyBrightnessToggle: Self = Self::KeyDisplayToggle;
1595
1596 #[allow(non_upper_case_globals)]
1598 pub const KeyBrightnessZero: Self = Self::KeyBrightnessAuto;
1599
1600 #[allow(non_upper_case_globals)]
1602 pub const KeyDirection: Self = Self::KeyRotateDisplay;
1603
1604 #[allow(non_upper_case_globals)]
1606 pub const KeyHanguel: Self = Self::KeyHangeul;
1607
1608 #[allow(non_upper_case_globals)]
1610 pub const KeyMinInteresting: Self = Self::KeyMute;
1611
1612 #[allow(non_upper_case_globals)]
1614 pub const KeyScreen: Self = Self::KeyAspectRatio;
1615
1616 #[allow(non_upper_case_globals)]
1618 pub const KeyScreenLock: Self = Self::KeyCoffee;
1619
1620 #[allow(non_upper_case_globals)]
1622 pub const KeyWiMAX: Self = Self::KeyWWAN;
1623
1624 #[allow(non_upper_case_globals)]
1626 pub const KeyZoom: Self = Self::KeyFullScreen;
1627}
1628
1629impl Default for Key {
1630 fn default() -> Self {
1631 Key::KeyReserved
1632 }
1633}
1634
1635impl EventCode<u16> for Key {
1636 const COUNT: u16 = KEY_CNT;
1637 const MAX: u16 = KEY_MAX;
1638}
1639
1640impl IntoIterator for Key {
1641 type Item = Key;
1642 type IntoIter = IntoIter<Key, u16>;
1643
1644 fn into_iter(self) -> Self::IntoIter {
1645 Self::IntoIter {
1646 phantom: PhantomData,
1647 value: self as u16,
1648 }
1649 }
1650}