evdev_rs/
enums.rs

1/* THIS FILE IS GENERATED, DO NOT EDIT */
2
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6#[allow(non_camel_case_types)]
7#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
8#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
9pub enum EventType {
10    EV_SYN = 0,
11    EV_KEY = 1,
12    EV_REL = 2,
13    EV_ABS = 3,
14    EV_MSC = 4,
15    EV_SW = 5,
16    EV_LED = 17,
17    EV_SND = 18,
18    EV_REP = 20,
19    EV_FF = 21,
20    EV_PWR = 22,
21    EV_FF_STATUS = 23,
22    EV_UNK,
23    EV_MAX = 31,
24}
25
26pub const fn int_to_event_type(code: u32) -> Option<EventType> {
27    match code {
28        0 => Some(EventType::EV_SYN),
29        1 => Some(EventType::EV_KEY),
30        2 => Some(EventType::EV_REL),
31        3 => Some(EventType::EV_ABS),
32        4 => Some(EventType::EV_MSC),
33        5 => Some(EventType::EV_SW),
34        17 => Some(EventType::EV_LED),
35        18 => Some(EventType::EV_SND),
36        20 => Some(EventType::EV_REP),
37        21 => Some(EventType::EV_FF),
38        22 => Some(EventType::EV_PWR),
39        23 => Some(EventType::EV_FF_STATUS),
40        c if c < 31 => Some(EventType::EV_UNK),
41        31 => Some(EventType::EV_MAX),
42        _ => None,
43    }
44}
45
46impl std::str::FromStr for EventType {
47    type Err = ();
48    fn from_str(s: &str) -> Result<Self, Self::Err> {
49        match s {
50            "EV_SYN" => Ok(EventType::EV_SYN),
51            "EV_KEY" => Ok(EventType::EV_KEY),
52            "EV_REL" => Ok(EventType::EV_REL),
53            "EV_ABS" => Ok(EventType::EV_ABS),
54            "EV_MSC" => Ok(EventType::EV_MSC),
55            "EV_SW" => Ok(EventType::EV_SW),
56            "EV_LED" => Ok(EventType::EV_LED),
57            "EV_SND" => Ok(EventType::EV_SND),
58            "EV_REP" => Ok(EventType::EV_REP),
59            "EV_FF" => Ok(EventType::EV_FF),
60            "EV_PWR" => Ok(EventType::EV_PWR),
61            "EV_FF_STATUS" => Ok(EventType::EV_FF_STATUS),
62            "EV_MAX" => Ok(EventType::EV_MAX),
63            _ => Err(()),
64        }
65    }
66}
67
68#[allow(non_camel_case_types)]
69#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
70#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
71pub enum EventCode {
72    EV_SYN(EV_SYN),
73    EV_KEY(EV_KEY),
74    EV_REL(EV_REL),
75    EV_ABS(EV_ABS),
76    EV_MSC(EV_MSC),
77    EV_SW(EV_SW),
78    EV_LED(EV_LED),
79    EV_SND(EV_SND),
80    EV_REP(EV_REP),
81    EV_FF(EV_FF),
82    EV_PWR,
83    EV_FF_STATUS(EV_FF),
84    EV_UNK { event_type: u32, event_code: u32 },
85    EV_MAX,
86}
87
88#[allow(non_camel_case_types)]
89#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
90#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
91pub enum EV_REL {
92    REL_X = 0,
93    REL_Y = 1,
94    REL_Z = 2,
95    REL_RX = 3,
96    REL_RY = 4,
97    REL_RZ = 5,
98    REL_HWHEEL = 6,
99    REL_DIAL = 7,
100    REL_WHEEL = 8,
101    REL_MISC = 9,
102    REL_RESERVED = 10,
103    REL_WHEEL_HI_RES = 11,
104    REL_HWHEEL_HI_RES = 12,
105    REL_MAX = 15,
106}
107
108pub const fn int_to_ev_rel(code: u32) -> Option<EV_REL> {
109    match code {
110        0 => Some(EV_REL::REL_X),
111        1 => Some(EV_REL::REL_Y),
112        2 => Some(EV_REL::REL_Z),
113        3 => Some(EV_REL::REL_RX),
114        4 => Some(EV_REL::REL_RY),
115        5 => Some(EV_REL::REL_RZ),
116        6 => Some(EV_REL::REL_HWHEEL),
117        7 => Some(EV_REL::REL_DIAL),
118        8 => Some(EV_REL::REL_WHEEL),
119        9 => Some(EV_REL::REL_MISC),
120        10 => Some(EV_REL::REL_RESERVED),
121        11 => Some(EV_REL::REL_WHEEL_HI_RES),
122        12 => Some(EV_REL::REL_HWHEEL_HI_RES),
123        15 => Some(EV_REL::REL_MAX),
124        _ => None,
125    }
126}
127
128impl std::str::FromStr for EV_REL {
129    type Err = ();
130    fn from_str(s: &str) -> Result<Self, Self::Err> {
131        match s {
132            "REL_X" => Ok(EV_REL::REL_X),
133            "REL_Y" => Ok(EV_REL::REL_Y),
134            "REL_Z" => Ok(EV_REL::REL_Z),
135            "REL_RX" => Ok(EV_REL::REL_RX),
136            "REL_RY" => Ok(EV_REL::REL_RY),
137            "REL_RZ" => Ok(EV_REL::REL_RZ),
138            "REL_HWHEEL" => Ok(EV_REL::REL_HWHEEL),
139            "REL_DIAL" => Ok(EV_REL::REL_DIAL),
140            "REL_WHEEL" => Ok(EV_REL::REL_WHEEL),
141            "REL_MISC" => Ok(EV_REL::REL_MISC),
142            "REL_RESERVED" => Ok(EV_REL::REL_RESERVED),
143            "REL_WHEEL_HI_RES" => Ok(EV_REL::REL_WHEEL_HI_RES),
144            "REL_HWHEEL_HI_RES" => Ok(EV_REL::REL_HWHEEL_HI_RES),
145            "REL_MAX" => Ok(EV_REL::REL_MAX),
146            _ => Err(()),
147        }
148    }
149}
150
151impl std::fmt::Display for EV_REL {
152    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
153        write!(f, "{:?}", self)
154    }
155}
156
157#[allow(non_camel_case_types)]
158#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
159#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
160pub enum EV_ABS {
161    ABS_X = 0,
162    ABS_Y = 1,
163    ABS_Z = 2,
164    ABS_RX = 3,
165    ABS_RY = 4,
166    ABS_RZ = 5,
167    ABS_THROTTLE = 6,
168    ABS_RUDDER = 7,
169    ABS_WHEEL = 8,
170    ABS_GAS = 9,
171    ABS_BRAKE = 10,
172    ABS_HAT0X = 16,
173    ABS_HAT0Y = 17,
174    ABS_HAT1X = 18,
175    ABS_HAT1Y = 19,
176    ABS_HAT2X = 20,
177    ABS_HAT2Y = 21,
178    ABS_HAT3X = 22,
179    ABS_HAT3Y = 23,
180    ABS_PRESSURE = 24,
181    ABS_DISTANCE = 25,
182    ABS_TILT_X = 26,
183    ABS_TILT_Y = 27,
184    ABS_TOOL_WIDTH = 28,
185    ABS_VOLUME = 32,
186    ABS_PROFILE = 33,
187    ABS_MISC = 40,
188    ABS_RESERVED = 46,
189    ABS_MT_SLOT = 47,
190    ABS_MT_TOUCH_MAJOR = 48,
191    ABS_MT_TOUCH_MINOR = 49,
192    ABS_MT_WIDTH_MAJOR = 50,
193    ABS_MT_WIDTH_MINOR = 51,
194    ABS_MT_ORIENTATION = 52,
195    ABS_MT_POSITION_X = 53,
196    ABS_MT_POSITION_Y = 54,
197    ABS_MT_TOOL_TYPE = 55,
198    ABS_MT_BLOB_ID = 56,
199    ABS_MT_TRACKING_ID = 57,
200    ABS_MT_PRESSURE = 58,
201    ABS_MT_DISTANCE = 59,
202    ABS_MT_TOOL_X = 60,
203    ABS_MT_TOOL_Y = 61,
204    ABS_MAX = 63,
205}
206
207pub const fn int_to_ev_abs(code: u32) -> Option<EV_ABS> {
208    match code {
209        0 => Some(EV_ABS::ABS_X),
210        1 => Some(EV_ABS::ABS_Y),
211        2 => Some(EV_ABS::ABS_Z),
212        3 => Some(EV_ABS::ABS_RX),
213        4 => Some(EV_ABS::ABS_RY),
214        5 => Some(EV_ABS::ABS_RZ),
215        6 => Some(EV_ABS::ABS_THROTTLE),
216        7 => Some(EV_ABS::ABS_RUDDER),
217        8 => Some(EV_ABS::ABS_WHEEL),
218        9 => Some(EV_ABS::ABS_GAS),
219        10 => Some(EV_ABS::ABS_BRAKE),
220        16 => Some(EV_ABS::ABS_HAT0X),
221        17 => Some(EV_ABS::ABS_HAT0Y),
222        18 => Some(EV_ABS::ABS_HAT1X),
223        19 => Some(EV_ABS::ABS_HAT1Y),
224        20 => Some(EV_ABS::ABS_HAT2X),
225        21 => Some(EV_ABS::ABS_HAT2Y),
226        22 => Some(EV_ABS::ABS_HAT3X),
227        23 => Some(EV_ABS::ABS_HAT3Y),
228        24 => Some(EV_ABS::ABS_PRESSURE),
229        25 => Some(EV_ABS::ABS_DISTANCE),
230        26 => Some(EV_ABS::ABS_TILT_X),
231        27 => Some(EV_ABS::ABS_TILT_Y),
232        28 => Some(EV_ABS::ABS_TOOL_WIDTH),
233        32 => Some(EV_ABS::ABS_VOLUME),
234        33 => Some(EV_ABS::ABS_PROFILE),
235        40 => Some(EV_ABS::ABS_MISC),
236        46 => Some(EV_ABS::ABS_RESERVED),
237        47 => Some(EV_ABS::ABS_MT_SLOT),
238        48 => Some(EV_ABS::ABS_MT_TOUCH_MAJOR),
239        49 => Some(EV_ABS::ABS_MT_TOUCH_MINOR),
240        50 => Some(EV_ABS::ABS_MT_WIDTH_MAJOR),
241        51 => Some(EV_ABS::ABS_MT_WIDTH_MINOR),
242        52 => Some(EV_ABS::ABS_MT_ORIENTATION),
243        53 => Some(EV_ABS::ABS_MT_POSITION_X),
244        54 => Some(EV_ABS::ABS_MT_POSITION_Y),
245        55 => Some(EV_ABS::ABS_MT_TOOL_TYPE),
246        56 => Some(EV_ABS::ABS_MT_BLOB_ID),
247        57 => Some(EV_ABS::ABS_MT_TRACKING_ID),
248        58 => Some(EV_ABS::ABS_MT_PRESSURE),
249        59 => Some(EV_ABS::ABS_MT_DISTANCE),
250        60 => Some(EV_ABS::ABS_MT_TOOL_X),
251        61 => Some(EV_ABS::ABS_MT_TOOL_Y),
252        63 => Some(EV_ABS::ABS_MAX),
253        _ => None,
254    }
255}
256
257impl std::str::FromStr for EV_ABS {
258    type Err = ();
259    fn from_str(s: &str) -> Result<Self, Self::Err> {
260        match s {
261            "ABS_X" => Ok(EV_ABS::ABS_X),
262            "ABS_Y" => Ok(EV_ABS::ABS_Y),
263            "ABS_Z" => Ok(EV_ABS::ABS_Z),
264            "ABS_RX" => Ok(EV_ABS::ABS_RX),
265            "ABS_RY" => Ok(EV_ABS::ABS_RY),
266            "ABS_RZ" => Ok(EV_ABS::ABS_RZ),
267            "ABS_THROTTLE" => Ok(EV_ABS::ABS_THROTTLE),
268            "ABS_RUDDER" => Ok(EV_ABS::ABS_RUDDER),
269            "ABS_WHEEL" => Ok(EV_ABS::ABS_WHEEL),
270            "ABS_GAS" => Ok(EV_ABS::ABS_GAS),
271            "ABS_BRAKE" => Ok(EV_ABS::ABS_BRAKE),
272            "ABS_HAT0X" => Ok(EV_ABS::ABS_HAT0X),
273            "ABS_HAT0Y" => Ok(EV_ABS::ABS_HAT0Y),
274            "ABS_HAT1X" => Ok(EV_ABS::ABS_HAT1X),
275            "ABS_HAT1Y" => Ok(EV_ABS::ABS_HAT1Y),
276            "ABS_HAT2X" => Ok(EV_ABS::ABS_HAT2X),
277            "ABS_HAT2Y" => Ok(EV_ABS::ABS_HAT2Y),
278            "ABS_HAT3X" => Ok(EV_ABS::ABS_HAT3X),
279            "ABS_HAT3Y" => Ok(EV_ABS::ABS_HAT3Y),
280            "ABS_PRESSURE" => Ok(EV_ABS::ABS_PRESSURE),
281            "ABS_DISTANCE" => Ok(EV_ABS::ABS_DISTANCE),
282            "ABS_TILT_X" => Ok(EV_ABS::ABS_TILT_X),
283            "ABS_TILT_Y" => Ok(EV_ABS::ABS_TILT_Y),
284            "ABS_TOOL_WIDTH" => Ok(EV_ABS::ABS_TOOL_WIDTH),
285            "ABS_VOLUME" => Ok(EV_ABS::ABS_VOLUME),
286            "ABS_PROFILE" => Ok(EV_ABS::ABS_PROFILE),
287            "ABS_MISC" => Ok(EV_ABS::ABS_MISC),
288            "ABS_RESERVED" => Ok(EV_ABS::ABS_RESERVED),
289            "ABS_MT_SLOT" => Ok(EV_ABS::ABS_MT_SLOT),
290            "ABS_MT_TOUCH_MAJOR" => Ok(EV_ABS::ABS_MT_TOUCH_MAJOR),
291            "ABS_MT_TOUCH_MINOR" => Ok(EV_ABS::ABS_MT_TOUCH_MINOR),
292            "ABS_MT_WIDTH_MAJOR" => Ok(EV_ABS::ABS_MT_WIDTH_MAJOR),
293            "ABS_MT_WIDTH_MINOR" => Ok(EV_ABS::ABS_MT_WIDTH_MINOR),
294            "ABS_MT_ORIENTATION" => Ok(EV_ABS::ABS_MT_ORIENTATION),
295            "ABS_MT_POSITION_X" => Ok(EV_ABS::ABS_MT_POSITION_X),
296            "ABS_MT_POSITION_Y" => Ok(EV_ABS::ABS_MT_POSITION_Y),
297            "ABS_MT_TOOL_TYPE" => Ok(EV_ABS::ABS_MT_TOOL_TYPE),
298            "ABS_MT_BLOB_ID" => Ok(EV_ABS::ABS_MT_BLOB_ID),
299            "ABS_MT_TRACKING_ID" => Ok(EV_ABS::ABS_MT_TRACKING_ID),
300            "ABS_MT_PRESSURE" => Ok(EV_ABS::ABS_MT_PRESSURE),
301            "ABS_MT_DISTANCE" => Ok(EV_ABS::ABS_MT_DISTANCE),
302            "ABS_MT_TOOL_X" => Ok(EV_ABS::ABS_MT_TOOL_X),
303            "ABS_MT_TOOL_Y" => Ok(EV_ABS::ABS_MT_TOOL_Y),
304            "ABS_MAX" => Ok(EV_ABS::ABS_MAX),
305            _ => Err(()),
306        }
307    }
308}
309
310impl std::fmt::Display for EV_ABS {
311    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
312        write!(f, "{:?}", self)
313    }
314}
315
316#[allow(non_camel_case_types)]
317#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
318#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
319pub enum EV_KEY {
320    KEY_RESERVED = 0,
321    KEY_ESC = 1,
322    KEY_1 = 2,
323    KEY_2 = 3,
324    KEY_3 = 4,
325    KEY_4 = 5,
326    KEY_5 = 6,
327    KEY_6 = 7,
328    KEY_7 = 8,
329    KEY_8 = 9,
330    KEY_9 = 10,
331    KEY_0 = 11,
332    KEY_MINUS = 12,
333    KEY_EQUAL = 13,
334    KEY_BACKSPACE = 14,
335    KEY_TAB = 15,
336    KEY_Q = 16,
337    KEY_W = 17,
338    KEY_E = 18,
339    KEY_R = 19,
340    KEY_T = 20,
341    KEY_Y = 21,
342    KEY_U = 22,
343    KEY_I = 23,
344    KEY_O = 24,
345    KEY_P = 25,
346    KEY_LEFTBRACE = 26,
347    KEY_RIGHTBRACE = 27,
348    KEY_ENTER = 28,
349    KEY_LEFTCTRL = 29,
350    KEY_A = 30,
351    KEY_S = 31,
352    KEY_D = 32,
353    KEY_F = 33,
354    KEY_G = 34,
355    KEY_H = 35,
356    KEY_J = 36,
357    KEY_K = 37,
358    KEY_L = 38,
359    KEY_SEMICOLON = 39,
360    KEY_APOSTROPHE = 40,
361    KEY_GRAVE = 41,
362    KEY_LEFTSHIFT = 42,
363    KEY_BACKSLASH = 43,
364    KEY_Z = 44,
365    KEY_X = 45,
366    KEY_C = 46,
367    KEY_V = 47,
368    KEY_B = 48,
369    KEY_N = 49,
370    KEY_M = 50,
371    KEY_COMMA = 51,
372    KEY_DOT = 52,
373    KEY_SLASH = 53,
374    KEY_RIGHTSHIFT = 54,
375    KEY_KPASTERISK = 55,
376    KEY_LEFTALT = 56,
377    KEY_SPACE = 57,
378    KEY_CAPSLOCK = 58,
379    KEY_F1 = 59,
380    KEY_F2 = 60,
381    KEY_F3 = 61,
382    KEY_F4 = 62,
383    KEY_F5 = 63,
384    KEY_F6 = 64,
385    KEY_F7 = 65,
386    KEY_F8 = 66,
387    KEY_F9 = 67,
388    KEY_F10 = 68,
389    KEY_NUMLOCK = 69,
390    KEY_SCROLLLOCK = 70,
391    KEY_KP7 = 71,
392    KEY_KP8 = 72,
393    KEY_KP9 = 73,
394    KEY_KPMINUS = 74,
395    KEY_KP4 = 75,
396    KEY_KP5 = 76,
397    KEY_KP6 = 77,
398    KEY_KPPLUS = 78,
399    KEY_KP1 = 79,
400    KEY_KP2 = 80,
401    KEY_KP3 = 81,
402    KEY_KP0 = 82,
403    KEY_KPDOT = 83,
404    KEY_ZENKAKUHANKAKU = 85,
405    KEY_102ND = 86,
406    KEY_F11 = 87,
407    KEY_F12 = 88,
408    KEY_RO = 89,
409    KEY_KATAKANA = 90,
410    KEY_HIRAGANA = 91,
411    KEY_HENKAN = 92,
412    KEY_KATAKANAHIRAGANA = 93,
413    KEY_MUHENKAN = 94,
414    KEY_KPJPCOMMA = 95,
415    KEY_KPENTER = 96,
416    KEY_RIGHTCTRL = 97,
417    KEY_KPSLASH = 98,
418    KEY_SYSRQ = 99,
419    KEY_RIGHTALT = 100,
420    KEY_LINEFEED = 101,
421    KEY_HOME = 102,
422    KEY_UP = 103,
423    KEY_PAGEUP = 104,
424    KEY_LEFT = 105,
425    KEY_RIGHT = 106,
426    KEY_END = 107,
427    KEY_DOWN = 108,
428    KEY_PAGEDOWN = 109,
429    KEY_INSERT = 110,
430    KEY_DELETE = 111,
431    KEY_MACRO = 112,
432    KEY_MUTE = 113,
433    KEY_VOLUMEDOWN = 114,
434    KEY_VOLUMEUP = 115,
435    KEY_POWER = 116,
436    KEY_KPEQUAL = 117,
437    KEY_KPPLUSMINUS = 118,
438    KEY_PAUSE = 119,
439    KEY_SCALE = 120,
440    KEY_KPCOMMA = 121,
441    KEY_HANGEUL = 122,
442    KEY_HANJA = 123,
443    KEY_YEN = 124,
444    KEY_LEFTMETA = 125,
445    KEY_RIGHTMETA = 126,
446    KEY_COMPOSE = 127,
447    KEY_STOP = 128,
448    KEY_AGAIN = 129,
449    KEY_PROPS = 130,
450    KEY_UNDO = 131,
451    KEY_FRONT = 132,
452    KEY_COPY = 133,
453    KEY_OPEN = 134,
454    KEY_PASTE = 135,
455    KEY_FIND = 136,
456    KEY_CUT = 137,
457    KEY_HELP = 138,
458    KEY_MENU = 139,
459    KEY_CALC = 140,
460    KEY_SETUP = 141,
461    KEY_SLEEP = 142,
462    KEY_WAKEUP = 143,
463    KEY_FILE = 144,
464    KEY_SENDFILE = 145,
465    KEY_DELETEFILE = 146,
466    KEY_XFER = 147,
467    KEY_PROG1 = 148,
468    KEY_PROG2 = 149,
469    KEY_WWW = 150,
470    KEY_MSDOS = 151,
471    KEY_COFFEE = 152,
472    KEY_ROTATE_DISPLAY = 153,
473    KEY_CYCLEWINDOWS = 154,
474    KEY_MAIL = 155,
475    KEY_BOOKMARKS = 156,
476    KEY_COMPUTER = 157,
477    KEY_BACK = 158,
478    KEY_FORWARD = 159,
479    KEY_CLOSECD = 160,
480    KEY_EJECTCD = 161,
481    KEY_EJECTCLOSECD = 162,
482    KEY_NEXTSONG = 163,
483    KEY_PLAYPAUSE = 164,
484    KEY_PREVIOUSSONG = 165,
485    KEY_STOPCD = 166,
486    KEY_RECORD = 167,
487    KEY_REWIND = 168,
488    KEY_PHONE = 169,
489    KEY_ISO = 170,
490    KEY_CONFIG = 171,
491    KEY_HOMEPAGE = 172,
492    KEY_REFRESH = 173,
493    KEY_EXIT = 174,
494    KEY_MOVE = 175,
495    KEY_EDIT = 176,
496    KEY_SCROLLUP = 177,
497    KEY_SCROLLDOWN = 178,
498    KEY_KPLEFTPAREN = 179,
499    KEY_KPRIGHTPAREN = 180,
500    KEY_NEW = 181,
501    KEY_REDO = 182,
502    KEY_F13 = 183,
503    KEY_F14 = 184,
504    KEY_F15 = 185,
505    KEY_F16 = 186,
506    KEY_F17 = 187,
507    KEY_F18 = 188,
508    KEY_F19 = 189,
509    KEY_F20 = 190,
510    KEY_F21 = 191,
511    KEY_F22 = 192,
512    KEY_F23 = 193,
513    KEY_F24 = 194,
514    KEY_PLAYCD = 200,
515    KEY_PAUSECD = 201,
516    KEY_PROG3 = 202,
517    KEY_PROG4 = 203,
518    KEY_ALL_APPLICATIONS = 204,
519    KEY_SUSPEND = 205,
520    KEY_CLOSE = 206,
521    KEY_PLAY = 207,
522    KEY_FASTFORWARD = 208,
523    KEY_BASSBOOST = 209,
524    KEY_PRINT = 210,
525    KEY_HP = 211,
526    KEY_CAMERA = 212,
527    KEY_SOUND = 213,
528    KEY_QUESTION = 214,
529    KEY_EMAIL = 215,
530    KEY_CHAT = 216,
531    KEY_SEARCH = 217,
532    KEY_CONNECT = 218,
533    KEY_FINANCE = 219,
534    KEY_SPORT = 220,
535    KEY_SHOP = 221,
536    KEY_ALTERASE = 222,
537    KEY_CANCEL = 223,
538    KEY_BRIGHTNESSDOWN = 224,
539    KEY_BRIGHTNESSUP = 225,
540    KEY_MEDIA = 226,
541    KEY_SWITCHVIDEOMODE = 227,
542    KEY_KBDILLUMTOGGLE = 228,
543    KEY_KBDILLUMDOWN = 229,
544    KEY_KBDILLUMUP = 230,
545    KEY_SEND = 231,
546    KEY_REPLY = 232,
547    KEY_FORWARDMAIL = 233,
548    KEY_SAVE = 234,
549    KEY_DOCUMENTS = 235,
550    KEY_BATTERY = 236,
551    KEY_BLUETOOTH = 237,
552    KEY_WLAN = 238,
553    KEY_UWB = 239,
554    KEY_UNKNOWN = 240,
555    KEY_VIDEO_NEXT = 241,
556    KEY_VIDEO_PREV = 242,
557    KEY_BRIGHTNESS_CYCLE = 243,
558    KEY_BRIGHTNESS_AUTO = 244,
559    KEY_DISPLAY_OFF = 245,
560    KEY_WWAN = 246,
561    KEY_RFKILL = 247,
562    KEY_MICMUTE = 248,
563    KEY_OK = 352,
564    KEY_SELECT = 353,
565    KEY_GOTO = 354,
566    KEY_CLEAR = 355,
567    KEY_POWER2 = 356,
568    KEY_OPTION = 357,
569    KEY_INFO = 358,
570    KEY_TIME = 359,
571    KEY_VENDOR = 360,
572    KEY_ARCHIVE = 361,
573    KEY_PROGRAM = 362,
574    KEY_CHANNEL = 363,
575    KEY_FAVORITES = 364,
576    KEY_EPG = 365,
577    KEY_PVR = 366,
578    KEY_MHP = 367,
579    KEY_LANGUAGE = 368,
580    KEY_TITLE = 369,
581    KEY_SUBTITLE = 370,
582    KEY_ANGLE = 371,
583    KEY_FULL_SCREEN = 372,
584    KEY_MODE = 373,
585    KEY_KEYBOARD = 374,
586    KEY_ASPECT_RATIO = 375,
587    KEY_PC = 376,
588    KEY_TV = 377,
589    KEY_TV2 = 378,
590    KEY_VCR = 379,
591    KEY_VCR2 = 380,
592    KEY_SAT = 381,
593    KEY_SAT2 = 382,
594    KEY_CD = 383,
595    KEY_TAPE = 384,
596    KEY_RADIO = 385,
597    KEY_TUNER = 386,
598    KEY_PLAYER = 387,
599    KEY_TEXT = 388,
600    KEY_DVD = 389,
601    KEY_AUX = 390,
602    KEY_MP3 = 391,
603    KEY_AUDIO = 392,
604    KEY_VIDEO = 393,
605    KEY_DIRECTORY = 394,
606    KEY_LIST = 395,
607    KEY_MEMO = 396,
608    KEY_CALENDAR = 397,
609    KEY_RED = 398,
610    KEY_GREEN = 399,
611    KEY_YELLOW = 400,
612    KEY_BLUE = 401,
613    KEY_CHANNELUP = 402,
614    KEY_CHANNELDOWN = 403,
615    KEY_FIRST = 404,
616    KEY_LAST = 405,
617    KEY_AB = 406,
618    KEY_NEXT = 407,
619    KEY_RESTART = 408,
620    KEY_SLOW = 409,
621    KEY_SHUFFLE = 410,
622    KEY_BREAK = 411,
623    KEY_PREVIOUS = 412,
624    KEY_DIGITS = 413,
625    KEY_TEEN = 414,
626    KEY_TWEN = 415,
627    KEY_VIDEOPHONE = 416,
628    KEY_GAMES = 417,
629    KEY_ZOOMIN = 418,
630    KEY_ZOOMOUT = 419,
631    KEY_ZOOMRESET = 420,
632    KEY_WORDPROCESSOR = 421,
633    KEY_EDITOR = 422,
634    KEY_SPREADSHEET = 423,
635    KEY_GRAPHICSEDITOR = 424,
636    KEY_PRESENTATION = 425,
637    KEY_DATABASE = 426,
638    KEY_NEWS = 427,
639    KEY_VOICEMAIL = 428,
640    KEY_ADDRESSBOOK = 429,
641    KEY_MESSENGER = 430,
642    KEY_DISPLAYTOGGLE = 431,
643    KEY_SPELLCHECK = 432,
644    KEY_LOGOFF = 433,
645    KEY_DOLLAR = 434,
646    KEY_EURO = 435,
647    KEY_FRAMEBACK = 436,
648    KEY_FRAMEFORWARD = 437,
649    KEY_CONTEXT_MENU = 438,
650    KEY_MEDIA_REPEAT = 439,
651    KEY_10CHANNELSUP = 440,
652    KEY_10CHANNELSDOWN = 441,
653    KEY_IMAGES = 442,
654    KEY_NOTIFICATION_CENTER = 444,
655    KEY_PICKUP_PHONE = 445,
656    KEY_HANGUP_PHONE = 446,
657    KEY_DEL_EOL = 448,
658    KEY_DEL_EOS = 449,
659    KEY_INS_LINE = 450,
660    KEY_DEL_LINE = 451,
661    KEY_FN = 464,
662    KEY_FN_ESC = 465,
663    KEY_FN_F1 = 466,
664    KEY_FN_F2 = 467,
665    KEY_FN_F3 = 468,
666    KEY_FN_F4 = 469,
667    KEY_FN_F5 = 470,
668    KEY_FN_F6 = 471,
669    KEY_FN_F7 = 472,
670    KEY_FN_F8 = 473,
671    KEY_FN_F9 = 474,
672    KEY_FN_F10 = 475,
673    KEY_FN_F11 = 476,
674    KEY_FN_F12 = 477,
675    KEY_FN_1 = 478,
676    KEY_FN_2 = 479,
677    KEY_FN_D = 480,
678    KEY_FN_E = 481,
679    KEY_FN_F = 482,
680    KEY_FN_S = 483,
681    KEY_FN_B = 484,
682    KEY_FN_RIGHT_SHIFT = 485,
683    KEY_BRL_DOT1 = 497,
684    KEY_BRL_DOT2 = 498,
685    KEY_BRL_DOT3 = 499,
686    KEY_BRL_DOT4 = 500,
687    KEY_BRL_DOT5 = 501,
688    KEY_BRL_DOT6 = 502,
689    KEY_BRL_DOT7 = 503,
690    KEY_BRL_DOT8 = 504,
691    KEY_BRL_DOT9 = 505,
692    KEY_BRL_DOT10 = 506,
693    KEY_NUMERIC_0 = 512,
694    KEY_NUMERIC_1 = 513,
695    KEY_NUMERIC_2 = 514,
696    KEY_NUMERIC_3 = 515,
697    KEY_NUMERIC_4 = 516,
698    KEY_NUMERIC_5 = 517,
699    KEY_NUMERIC_6 = 518,
700    KEY_NUMERIC_7 = 519,
701    KEY_NUMERIC_8 = 520,
702    KEY_NUMERIC_9 = 521,
703    KEY_NUMERIC_STAR = 522,
704    KEY_NUMERIC_POUND = 523,
705    KEY_NUMERIC_A = 524,
706    KEY_NUMERIC_B = 525,
707    KEY_NUMERIC_C = 526,
708    KEY_NUMERIC_D = 527,
709    KEY_CAMERA_FOCUS = 528,
710    KEY_WPS_BUTTON = 529,
711    KEY_TOUCHPAD_TOGGLE = 530,
712    KEY_TOUCHPAD_ON = 531,
713    KEY_TOUCHPAD_OFF = 532,
714    KEY_CAMERA_ZOOMIN = 533,
715    KEY_CAMERA_ZOOMOUT = 534,
716    KEY_CAMERA_UP = 535,
717    KEY_CAMERA_DOWN = 536,
718    KEY_CAMERA_LEFT = 537,
719    KEY_CAMERA_RIGHT = 538,
720    KEY_ATTENDANT_ON = 539,
721    KEY_ATTENDANT_OFF = 540,
722    KEY_ATTENDANT_TOGGLE = 541,
723    KEY_LIGHTS_TOGGLE = 542,
724    KEY_ALS_TOGGLE = 560,
725    KEY_ROTATE_LOCK_TOGGLE = 561,
726    KEY_REFRESH_RATE_TOGGLE = 562,
727    KEY_BUTTONCONFIG = 576,
728    KEY_TASKMANAGER = 577,
729    KEY_JOURNAL = 578,
730    KEY_CONTROLPANEL = 579,
731    KEY_APPSELECT = 580,
732    KEY_SCREENSAVER = 581,
733    KEY_VOICECOMMAND = 582,
734    KEY_ASSISTANT = 583,
735    KEY_KBD_LAYOUT_NEXT = 584,
736    KEY_EMOJI_PICKER = 585,
737    KEY_DICTATE = 586,
738    KEY_CAMERA_ACCESS_ENABLE = 587,
739    KEY_CAMERA_ACCESS_DISABLE = 588,
740    KEY_CAMERA_ACCESS_TOGGLE = 589,
741    KEY_ACCESSIBILITY = 590,
742    KEY_DO_NOT_DISTURB = 591,
743    KEY_BRIGHTNESS_MIN = 592,
744    KEY_BRIGHTNESS_MAX = 593,
745    KEY_KBDINPUTASSIST_PREV = 608,
746    KEY_KBDINPUTASSIST_NEXT = 609,
747    KEY_KBDINPUTASSIST_PREVGROUP = 610,
748    KEY_KBDINPUTASSIST_NEXTGROUP = 611,
749    KEY_KBDINPUTASSIST_ACCEPT = 612,
750    KEY_KBDINPUTASSIST_CANCEL = 613,
751    KEY_RIGHT_UP = 614,
752    KEY_RIGHT_DOWN = 615,
753    KEY_LEFT_UP = 616,
754    KEY_LEFT_DOWN = 617,
755    KEY_ROOT_MENU = 618,
756    KEY_MEDIA_TOP_MENU = 619,
757    KEY_NUMERIC_11 = 620,
758    KEY_NUMERIC_12 = 621,
759    KEY_AUDIO_DESC = 622,
760    KEY_3D_MODE = 623,
761    KEY_NEXT_FAVORITE = 624,
762    KEY_STOP_RECORD = 625,
763    KEY_PAUSE_RECORD = 626,
764    KEY_VOD = 627,
765    KEY_UNMUTE = 628,
766    KEY_FASTREVERSE = 629,
767    KEY_SLOWREVERSE = 630,
768    KEY_DATA = 631,
769    KEY_ONSCREEN_KEYBOARD = 632,
770    KEY_PRIVACY_SCREEN_TOGGLE = 633,
771    KEY_SELECTIVE_SCREENSHOT = 634,
772    KEY_NEXT_ELEMENT = 635,
773    KEY_PREVIOUS_ELEMENT = 636,
774    KEY_AUTOPILOT_ENGAGE_TOGGLE = 637,
775    KEY_MARK_WAYPOINT = 638,
776    KEY_SOS = 639,
777    KEY_NAV_CHART = 640,
778    KEY_FISHING_CHART = 641,
779    KEY_SINGLE_RANGE_RADAR = 642,
780    KEY_DUAL_RANGE_RADAR = 643,
781    KEY_RADAR_OVERLAY = 644,
782    KEY_TRADITIONAL_SONAR = 645,
783    KEY_CLEARVU_SONAR = 646,
784    KEY_SIDEVU_SONAR = 647,
785    KEY_NAV_INFO = 648,
786    KEY_BRIGHTNESS_MENU = 649,
787    KEY_MACRO1 = 656,
788    KEY_MACRO2 = 657,
789    KEY_MACRO3 = 658,
790    KEY_MACRO4 = 659,
791    KEY_MACRO5 = 660,
792    KEY_MACRO6 = 661,
793    KEY_MACRO7 = 662,
794    KEY_MACRO8 = 663,
795    KEY_MACRO9 = 664,
796    KEY_MACRO10 = 665,
797    KEY_MACRO11 = 666,
798    KEY_MACRO12 = 667,
799    KEY_MACRO13 = 668,
800    KEY_MACRO14 = 669,
801    KEY_MACRO15 = 670,
802    KEY_MACRO16 = 671,
803    KEY_MACRO17 = 672,
804    KEY_MACRO18 = 673,
805    KEY_MACRO19 = 674,
806    KEY_MACRO20 = 675,
807    KEY_MACRO21 = 676,
808    KEY_MACRO22 = 677,
809    KEY_MACRO23 = 678,
810    KEY_MACRO24 = 679,
811    KEY_MACRO25 = 680,
812    KEY_MACRO26 = 681,
813    KEY_MACRO27 = 682,
814    KEY_MACRO28 = 683,
815    KEY_MACRO29 = 684,
816    KEY_MACRO30 = 685,
817    KEY_MACRO_RECORD_START = 688,
818    KEY_MACRO_RECORD_STOP = 689,
819    KEY_MACRO_PRESET_CYCLE = 690,
820    KEY_MACRO_PRESET1 = 691,
821    KEY_MACRO_PRESET2 = 692,
822    KEY_MACRO_PRESET3 = 693,
823    KEY_KBD_LCD_MENU1 = 696,
824    KEY_KBD_LCD_MENU2 = 697,
825    KEY_KBD_LCD_MENU3 = 698,
826    KEY_KBD_LCD_MENU4 = 699,
827    KEY_KBD_LCD_MENU5 = 700,
828    KEY_MAX = 767,
829    BTN_0 = 256,
830    BTN_1 = 257,
831    BTN_2 = 258,
832    BTN_3 = 259,
833    BTN_4 = 260,
834    BTN_5 = 261,
835    BTN_6 = 262,
836    BTN_7 = 263,
837    BTN_8 = 264,
838    BTN_9 = 265,
839    BTN_LEFT = 272,
840    BTN_RIGHT = 273,
841    BTN_MIDDLE = 274,
842    BTN_SIDE = 275,
843    BTN_EXTRA = 276,
844    BTN_FORWARD = 277,
845    BTN_BACK = 278,
846    BTN_TASK = 279,
847    BTN_TRIGGER = 288,
848    BTN_THUMB = 289,
849    BTN_THUMB2 = 290,
850    BTN_TOP = 291,
851    BTN_TOP2 = 292,
852    BTN_PINKIE = 293,
853    BTN_BASE = 294,
854    BTN_BASE2 = 295,
855    BTN_BASE3 = 296,
856    BTN_BASE4 = 297,
857    BTN_BASE5 = 298,
858    BTN_BASE6 = 299,
859    BTN_DEAD = 303,
860    BTN_SOUTH = 304,
861    BTN_EAST = 305,
862    BTN_C = 306,
863    BTN_NORTH = 307,
864    BTN_WEST = 308,
865    BTN_Z = 309,
866    BTN_TL = 310,
867    BTN_TR = 311,
868    BTN_TL2 = 312,
869    BTN_TR2 = 313,
870    BTN_SELECT = 314,
871    BTN_START = 315,
872    BTN_MODE = 316,
873    BTN_THUMBL = 317,
874    BTN_THUMBR = 318,
875    BTN_TOOL_PEN = 320,
876    BTN_TOOL_RUBBER = 321,
877    BTN_TOOL_BRUSH = 322,
878    BTN_TOOL_PENCIL = 323,
879    BTN_TOOL_AIRBRUSH = 324,
880    BTN_TOOL_FINGER = 325,
881    BTN_TOOL_MOUSE = 326,
882    BTN_TOOL_LENS = 327,
883    BTN_TOOL_QUINTTAP = 328,
884    BTN_STYLUS3 = 329,
885    BTN_TOUCH = 330,
886    BTN_STYLUS = 331,
887    BTN_STYLUS2 = 332,
888    BTN_TOOL_DOUBLETAP = 333,
889    BTN_TOOL_TRIPLETAP = 334,
890    BTN_TOOL_QUADTAP = 335,
891    BTN_GEAR_DOWN = 336,
892    BTN_GEAR_UP = 337,
893    BTN_DPAD_UP = 544,
894    BTN_DPAD_DOWN = 545,
895    BTN_DPAD_LEFT = 546,
896    BTN_DPAD_RIGHT = 547,
897    BTN_TRIGGER_HAPPY1 = 704,
898    BTN_TRIGGER_HAPPY2 = 705,
899    BTN_TRIGGER_HAPPY3 = 706,
900    BTN_TRIGGER_HAPPY4 = 707,
901    BTN_TRIGGER_HAPPY5 = 708,
902    BTN_TRIGGER_HAPPY6 = 709,
903    BTN_TRIGGER_HAPPY7 = 710,
904    BTN_TRIGGER_HAPPY8 = 711,
905    BTN_TRIGGER_HAPPY9 = 712,
906    BTN_TRIGGER_HAPPY10 = 713,
907    BTN_TRIGGER_HAPPY11 = 714,
908    BTN_TRIGGER_HAPPY12 = 715,
909    BTN_TRIGGER_HAPPY13 = 716,
910    BTN_TRIGGER_HAPPY14 = 717,
911    BTN_TRIGGER_HAPPY15 = 718,
912    BTN_TRIGGER_HAPPY16 = 719,
913    BTN_TRIGGER_HAPPY17 = 720,
914    BTN_TRIGGER_HAPPY18 = 721,
915    BTN_TRIGGER_HAPPY19 = 722,
916    BTN_TRIGGER_HAPPY20 = 723,
917    BTN_TRIGGER_HAPPY21 = 724,
918    BTN_TRIGGER_HAPPY22 = 725,
919    BTN_TRIGGER_HAPPY23 = 726,
920    BTN_TRIGGER_HAPPY24 = 727,
921    BTN_TRIGGER_HAPPY25 = 728,
922    BTN_TRIGGER_HAPPY26 = 729,
923    BTN_TRIGGER_HAPPY27 = 730,
924    BTN_TRIGGER_HAPPY28 = 731,
925    BTN_TRIGGER_HAPPY29 = 732,
926    BTN_TRIGGER_HAPPY30 = 733,
927    BTN_TRIGGER_HAPPY31 = 734,
928    BTN_TRIGGER_HAPPY32 = 735,
929    BTN_TRIGGER_HAPPY33 = 736,
930    BTN_TRIGGER_HAPPY34 = 737,
931    BTN_TRIGGER_HAPPY35 = 738,
932    BTN_TRIGGER_HAPPY36 = 739,
933    BTN_TRIGGER_HAPPY37 = 740,
934    BTN_TRIGGER_HAPPY38 = 741,
935    BTN_TRIGGER_HAPPY39 = 742,
936    BTN_TRIGGER_HAPPY40 = 743,
937}
938
939pub const fn int_to_ev_key(code: u32) -> Option<EV_KEY> {
940    match code {
941        0 => Some(EV_KEY::KEY_RESERVED),
942        1 => Some(EV_KEY::KEY_ESC),
943        2 => Some(EV_KEY::KEY_1),
944        3 => Some(EV_KEY::KEY_2),
945        4 => Some(EV_KEY::KEY_3),
946        5 => Some(EV_KEY::KEY_4),
947        6 => Some(EV_KEY::KEY_5),
948        7 => Some(EV_KEY::KEY_6),
949        8 => Some(EV_KEY::KEY_7),
950        9 => Some(EV_KEY::KEY_8),
951        10 => Some(EV_KEY::KEY_9),
952        11 => Some(EV_KEY::KEY_0),
953        12 => Some(EV_KEY::KEY_MINUS),
954        13 => Some(EV_KEY::KEY_EQUAL),
955        14 => Some(EV_KEY::KEY_BACKSPACE),
956        15 => Some(EV_KEY::KEY_TAB),
957        16 => Some(EV_KEY::KEY_Q),
958        17 => Some(EV_KEY::KEY_W),
959        18 => Some(EV_KEY::KEY_E),
960        19 => Some(EV_KEY::KEY_R),
961        20 => Some(EV_KEY::KEY_T),
962        21 => Some(EV_KEY::KEY_Y),
963        22 => Some(EV_KEY::KEY_U),
964        23 => Some(EV_KEY::KEY_I),
965        24 => Some(EV_KEY::KEY_O),
966        25 => Some(EV_KEY::KEY_P),
967        26 => Some(EV_KEY::KEY_LEFTBRACE),
968        27 => Some(EV_KEY::KEY_RIGHTBRACE),
969        28 => Some(EV_KEY::KEY_ENTER),
970        29 => Some(EV_KEY::KEY_LEFTCTRL),
971        30 => Some(EV_KEY::KEY_A),
972        31 => Some(EV_KEY::KEY_S),
973        32 => Some(EV_KEY::KEY_D),
974        33 => Some(EV_KEY::KEY_F),
975        34 => Some(EV_KEY::KEY_G),
976        35 => Some(EV_KEY::KEY_H),
977        36 => Some(EV_KEY::KEY_J),
978        37 => Some(EV_KEY::KEY_K),
979        38 => Some(EV_KEY::KEY_L),
980        39 => Some(EV_KEY::KEY_SEMICOLON),
981        40 => Some(EV_KEY::KEY_APOSTROPHE),
982        41 => Some(EV_KEY::KEY_GRAVE),
983        42 => Some(EV_KEY::KEY_LEFTSHIFT),
984        43 => Some(EV_KEY::KEY_BACKSLASH),
985        44 => Some(EV_KEY::KEY_Z),
986        45 => Some(EV_KEY::KEY_X),
987        46 => Some(EV_KEY::KEY_C),
988        47 => Some(EV_KEY::KEY_V),
989        48 => Some(EV_KEY::KEY_B),
990        49 => Some(EV_KEY::KEY_N),
991        50 => Some(EV_KEY::KEY_M),
992        51 => Some(EV_KEY::KEY_COMMA),
993        52 => Some(EV_KEY::KEY_DOT),
994        53 => Some(EV_KEY::KEY_SLASH),
995        54 => Some(EV_KEY::KEY_RIGHTSHIFT),
996        55 => Some(EV_KEY::KEY_KPASTERISK),
997        56 => Some(EV_KEY::KEY_LEFTALT),
998        57 => Some(EV_KEY::KEY_SPACE),
999        58 => Some(EV_KEY::KEY_CAPSLOCK),
1000        59 => Some(EV_KEY::KEY_F1),
1001        60 => Some(EV_KEY::KEY_F2),
1002        61 => Some(EV_KEY::KEY_F3),
1003        62 => Some(EV_KEY::KEY_F4),
1004        63 => Some(EV_KEY::KEY_F5),
1005        64 => Some(EV_KEY::KEY_F6),
1006        65 => Some(EV_KEY::KEY_F7),
1007        66 => Some(EV_KEY::KEY_F8),
1008        67 => Some(EV_KEY::KEY_F9),
1009        68 => Some(EV_KEY::KEY_F10),
1010        69 => Some(EV_KEY::KEY_NUMLOCK),
1011        70 => Some(EV_KEY::KEY_SCROLLLOCK),
1012        71 => Some(EV_KEY::KEY_KP7),
1013        72 => Some(EV_KEY::KEY_KP8),
1014        73 => Some(EV_KEY::KEY_KP9),
1015        74 => Some(EV_KEY::KEY_KPMINUS),
1016        75 => Some(EV_KEY::KEY_KP4),
1017        76 => Some(EV_KEY::KEY_KP5),
1018        77 => Some(EV_KEY::KEY_KP6),
1019        78 => Some(EV_KEY::KEY_KPPLUS),
1020        79 => Some(EV_KEY::KEY_KP1),
1021        80 => Some(EV_KEY::KEY_KP2),
1022        81 => Some(EV_KEY::KEY_KP3),
1023        82 => Some(EV_KEY::KEY_KP0),
1024        83 => Some(EV_KEY::KEY_KPDOT),
1025        85 => Some(EV_KEY::KEY_ZENKAKUHANKAKU),
1026        86 => Some(EV_KEY::KEY_102ND),
1027        87 => Some(EV_KEY::KEY_F11),
1028        88 => Some(EV_KEY::KEY_F12),
1029        89 => Some(EV_KEY::KEY_RO),
1030        90 => Some(EV_KEY::KEY_KATAKANA),
1031        91 => Some(EV_KEY::KEY_HIRAGANA),
1032        92 => Some(EV_KEY::KEY_HENKAN),
1033        93 => Some(EV_KEY::KEY_KATAKANAHIRAGANA),
1034        94 => Some(EV_KEY::KEY_MUHENKAN),
1035        95 => Some(EV_KEY::KEY_KPJPCOMMA),
1036        96 => Some(EV_KEY::KEY_KPENTER),
1037        97 => Some(EV_KEY::KEY_RIGHTCTRL),
1038        98 => Some(EV_KEY::KEY_KPSLASH),
1039        99 => Some(EV_KEY::KEY_SYSRQ),
1040        100 => Some(EV_KEY::KEY_RIGHTALT),
1041        101 => Some(EV_KEY::KEY_LINEFEED),
1042        102 => Some(EV_KEY::KEY_HOME),
1043        103 => Some(EV_KEY::KEY_UP),
1044        104 => Some(EV_KEY::KEY_PAGEUP),
1045        105 => Some(EV_KEY::KEY_LEFT),
1046        106 => Some(EV_KEY::KEY_RIGHT),
1047        107 => Some(EV_KEY::KEY_END),
1048        108 => Some(EV_KEY::KEY_DOWN),
1049        109 => Some(EV_KEY::KEY_PAGEDOWN),
1050        110 => Some(EV_KEY::KEY_INSERT),
1051        111 => Some(EV_KEY::KEY_DELETE),
1052        112 => Some(EV_KEY::KEY_MACRO),
1053        113 => Some(EV_KEY::KEY_MUTE),
1054        114 => Some(EV_KEY::KEY_VOLUMEDOWN),
1055        115 => Some(EV_KEY::KEY_VOLUMEUP),
1056        116 => Some(EV_KEY::KEY_POWER),
1057        117 => Some(EV_KEY::KEY_KPEQUAL),
1058        118 => Some(EV_KEY::KEY_KPPLUSMINUS),
1059        119 => Some(EV_KEY::KEY_PAUSE),
1060        120 => Some(EV_KEY::KEY_SCALE),
1061        121 => Some(EV_KEY::KEY_KPCOMMA),
1062        122 => Some(EV_KEY::KEY_HANGEUL),
1063        123 => Some(EV_KEY::KEY_HANJA),
1064        124 => Some(EV_KEY::KEY_YEN),
1065        125 => Some(EV_KEY::KEY_LEFTMETA),
1066        126 => Some(EV_KEY::KEY_RIGHTMETA),
1067        127 => Some(EV_KEY::KEY_COMPOSE),
1068        128 => Some(EV_KEY::KEY_STOP),
1069        129 => Some(EV_KEY::KEY_AGAIN),
1070        130 => Some(EV_KEY::KEY_PROPS),
1071        131 => Some(EV_KEY::KEY_UNDO),
1072        132 => Some(EV_KEY::KEY_FRONT),
1073        133 => Some(EV_KEY::KEY_COPY),
1074        134 => Some(EV_KEY::KEY_OPEN),
1075        135 => Some(EV_KEY::KEY_PASTE),
1076        136 => Some(EV_KEY::KEY_FIND),
1077        137 => Some(EV_KEY::KEY_CUT),
1078        138 => Some(EV_KEY::KEY_HELP),
1079        139 => Some(EV_KEY::KEY_MENU),
1080        140 => Some(EV_KEY::KEY_CALC),
1081        141 => Some(EV_KEY::KEY_SETUP),
1082        142 => Some(EV_KEY::KEY_SLEEP),
1083        143 => Some(EV_KEY::KEY_WAKEUP),
1084        144 => Some(EV_KEY::KEY_FILE),
1085        145 => Some(EV_KEY::KEY_SENDFILE),
1086        146 => Some(EV_KEY::KEY_DELETEFILE),
1087        147 => Some(EV_KEY::KEY_XFER),
1088        148 => Some(EV_KEY::KEY_PROG1),
1089        149 => Some(EV_KEY::KEY_PROG2),
1090        150 => Some(EV_KEY::KEY_WWW),
1091        151 => Some(EV_KEY::KEY_MSDOS),
1092        152 => Some(EV_KEY::KEY_COFFEE),
1093        153 => Some(EV_KEY::KEY_ROTATE_DISPLAY),
1094        154 => Some(EV_KEY::KEY_CYCLEWINDOWS),
1095        155 => Some(EV_KEY::KEY_MAIL),
1096        156 => Some(EV_KEY::KEY_BOOKMARKS),
1097        157 => Some(EV_KEY::KEY_COMPUTER),
1098        158 => Some(EV_KEY::KEY_BACK),
1099        159 => Some(EV_KEY::KEY_FORWARD),
1100        160 => Some(EV_KEY::KEY_CLOSECD),
1101        161 => Some(EV_KEY::KEY_EJECTCD),
1102        162 => Some(EV_KEY::KEY_EJECTCLOSECD),
1103        163 => Some(EV_KEY::KEY_NEXTSONG),
1104        164 => Some(EV_KEY::KEY_PLAYPAUSE),
1105        165 => Some(EV_KEY::KEY_PREVIOUSSONG),
1106        166 => Some(EV_KEY::KEY_STOPCD),
1107        167 => Some(EV_KEY::KEY_RECORD),
1108        168 => Some(EV_KEY::KEY_REWIND),
1109        169 => Some(EV_KEY::KEY_PHONE),
1110        170 => Some(EV_KEY::KEY_ISO),
1111        171 => Some(EV_KEY::KEY_CONFIG),
1112        172 => Some(EV_KEY::KEY_HOMEPAGE),
1113        173 => Some(EV_KEY::KEY_REFRESH),
1114        174 => Some(EV_KEY::KEY_EXIT),
1115        175 => Some(EV_KEY::KEY_MOVE),
1116        176 => Some(EV_KEY::KEY_EDIT),
1117        177 => Some(EV_KEY::KEY_SCROLLUP),
1118        178 => Some(EV_KEY::KEY_SCROLLDOWN),
1119        179 => Some(EV_KEY::KEY_KPLEFTPAREN),
1120        180 => Some(EV_KEY::KEY_KPRIGHTPAREN),
1121        181 => Some(EV_KEY::KEY_NEW),
1122        182 => Some(EV_KEY::KEY_REDO),
1123        183 => Some(EV_KEY::KEY_F13),
1124        184 => Some(EV_KEY::KEY_F14),
1125        185 => Some(EV_KEY::KEY_F15),
1126        186 => Some(EV_KEY::KEY_F16),
1127        187 => Some(EV_KEY::KEY_F17),
1128        188 => Some(EV_KEY::KEY_F18),
1129        189 => Some(EV_KEY::KEY_F19),
1130        190 => Some(EV_KEY::KEY_F20),
1131        191 => Some(EV_KEY::KEY_F21),
1132        192 => Some(EV_KEY::KEY_F22),
1133        193 => Some(EV_KEY::KEY_F23),
1134        194 => Some(EV_KEY::KEY_F24),
1135        200 => Some(EV_KEY::KEY_PLAYCD),
1136        201 => Some(EV_KEY::KEY_PAUSECD),
1137        202 => Some(EV_KEY::KEY_PROG3),
1138        203 => Some(EV_KEY::KEY_PROG4),
1139        204 => Some(EV_KEY::KEY_ALL_APPLICATIONS),
1140        205 => Some(EV_KEY::KEY_SUSPEND),
1141        206 => Some(EV_KEY::KEY_CLOSE),
1142        207 => Some(EV_KEY::KEY_PLAY),
1143        208 => Some(EV_KEY::KEY_FASTFORWARD),
1144        209 => Some(EV_KEY::KEY_BASSBOOST),
1145        210 => Some(EV_KEY::KEY_PRINT),
1146        211 => Some(EV_KEY::KEY_HP),
1147        212 => Some(EV_KEY::KEY_CAMERA),
1148        213 => Some(EV_KEY::KEY_SOUND),
1149        214 => Some(EV_KEY::KEY_QUESTION),
1150        215 => Some(EV_KEY::KEY_EMAIL),
1151        216 => Some(EV_KEY::KEY_CHAT),
1152        217 => Some(EV_KEY::KEY_SEARCH),
1153        218 => Some(EV_KEY::KEY_CONNECT),
1154        219 => Some(EV_KEY::KEY_FINANCE),
1155        220 => Some(EV_KEY::KEY_SPORT),
1156        221 => Some(EV_KEY::KEY_SHOP),
1157        222 => Some(EV_KEY::KEY_ALTERASE),
1158        223 => Some(EV_KEY::KEY_CANCEL),
1159        224 => Some(EV_KEY::KEY_BRIGHTNESSDOWN),
1160        225 => Some(EV_KEY::KEY_BRIGHTNESSUP),
1161        226 => Some(EV_KEY::KEY_MEDIA),
1162        227 => Some(EV_KEY::KEY_SWITCHVIDEOMODE),
1163        228 => Some(EV_KEY::KEY_KBDILLUMTOGGLE),
1164        229 => Some(EV_KEY::KEY_KBDILLUMDOWN),
1165        230 => Some(EV_KEY::KEY_KBDILLUMUP),
1166        231 => Some(EV_KEY::KEY_SEND),
1167        232 => Some(EV_KEY::KEY_REPLY),
1168        233 => Some(EV_KEY::KEY_FORWARDMAIL),
1169        234 => Some(EV_KEY::KEY_SAVE),
1170        235 => Some(EV_KEY::KEY_DOCUMENTS),
1171        236 => Some(EV_KEY::KEY_BATTERY),
1172        237 => Some(EV_KEY::KEY_BLUETOOTH),
1173        238 => Some(EV_KEY::KEY_WLAN),
1174        239 => Some(EV_KEY::KEY_UWB),
1175        240 => Some(EV_KEY::KEY_UNKNOWN),
1176        241 => Some(EV_KEY::KEY_VIDEO_NEXT),
1177        242 => Some(EV_KEY::KEY_VIDEO_PREV),
1178        243 => Some(EV_KEY::KEY_BRIGHTNESS_CYCLE),
1179        244 => Some(EV_KEY::KEY_BRIGHTNESS_AUTO),
1180        245 => Some(EV_KEY::KEY_DISPLAY_OFF),
1181        246 => Some(EV_KEY::KEY_WWAN),
1182        247 => Some(EV_KEY::KEY_RFKILL),
1183        248 => Some(EV_KEY::KEY_MICMUTE),
1184        352 => Some(EV_KEY::KEY_OK),
1185        353 => Some(EV_KEY::KEY_SELECT),
1186        354 => Some(EV_KEY::KEY_GOTO),
1187        355 => Some(EV_KEY::KEY_CLEAR),
1188        356 => Some(EV_KEY::KEY_POWER2),
1189        357 => Some(EV_KEY::KEY_OPTION),
1190        358 => Some(EV_KEY::KEY_INFO),
1191        359 => Some(EV_KEY::KEY_TIME),
1192        360 => Some(EV_KEY::KEY_VENDOR),
1193        361 => Some(EV_KEY::KEY_ARCHIVE),
1194        362 => Some(EV_KEY::KEY_PROGRAM),
1195        363 => Some(EV_KEY::KEY_CHANNEL),
1196        364 => Some(EV_KEY::KEY_FAVORITES),
1197        365 => Some(EV_KEY::KEY_EPG),
1198        366 => Some(EV_KEY::KEY_PVR),
1199        367 => Some(EV_KEY::KEY_MHP),
1200        368 => Some(EV_KEY::KEY_LANGUAGE),
1201        369 => Some(EV_KEY::KEY_TITLE),
1202        370 => Some(EV_KEY::KEY_SUBTITLE),
1203        371 => Some(EV_KEY::KEY_ANGLE),
1204        372 => Some(EV_KEY::KEY_FULL_SCREEN),
1205        373 => Some(EV_KEY::KEY_MODE),
1206        374 => Some(EV_KEY::KEY_KEYBOARD),
1207        375 => Some(EV_KEY::KEY_ASPECT_RATIO),
1208        376 => Some(EV_KEY::KEY_PC),
1209        377 => Some(EV_KEY::KEY_TV),
1210        378 => Some(EV_KEY::KEY_TV2),
1211        379 => Some(EV_KEY::KEY_VCR),
1212        380 => Some(EV_KEY::KEY_VCR2),
1213        381 => Some(EV_KEY::KEY_SAT),
1214        382 => Some(EV_KEY::KEY_SAT2),
1215        383 => Some(EV_KEY::KEY_CD),
1216        384 => Some(EV_KEY::KEY_TAPE),
1217        385 => Some(EV_KEY::KEY_RADIO),
1218        386 => Some(EV_KEY::KEY_TUNER),
1219        387 => Some(EV_KEY::KEY_PLAYER),
1220        388 => Some(EV_KEY::KEY_TEXT),
1221        389 => Some(EV_KEY::KEY_DVD),
1222        390 => Some(EV_KEY::KEY_AUX),
1223        391 => Some(EV_KEY::KEY_MP3),
1224        392 => Some(EV_KEY::KEY_AUDIO),
1225        393 => Some(EV_KEY::KEY_VIDEO),
1226        394 => Some(EV_KEY::KEY_DIRECTORY),
1227        395 => Some(EV_KEY::KEY_LIST),
1228        396 => Some(EV_KEY::KEY_MEMO),
1229        397 => Some(EV_KEY::KEY_CALENDAR),
1230        398 => Some(EV_KEY::KEY_RED),
1231        399 => Some(EV_KEY::KEY_GREEN),
1232        400 => Some(EV_KEY::KEY_YELLOW),
1233        401 => Some(EV_KEY::KEY_BLUE),
1234        402 => Some(EV_KEY::KEY_CHANNELUP),
1235        403 => Some(EV_KEY::KEY_CHANNELDOWN),
1236        404 => Some(EV_KEY::KEY_FIRST),
1237        405 => Some(EV_KEY::KEY_LAST),
1238        406 => Some(EV_KEY::KEY_AB),
1239        407 => Some(EV_KEY::KEY_NEXT),
1240        408 => Some(EV_KEY::KEY_RESTART),
1241        409 => Some(EV_KEY::KEY_SLOW),
1242        410 => Some(EV_KEY::KEY_SHUFFLE),
1243        411 => Some(EV_KEY::KEY_BREAK),
1244        412 => Some(EV_KEY::KEY_PREVIOUS),
1245        413 => Some(EV_KEY::KEY_DIGITS),
1246        414 => Some(EV_KEY::KEY_TEEN),
1247        415 => Some(EV_KEY::KEY_TWEN),
1248        416 => Some(EV_KEY::KEY_VIDEOPHONE),
1249        417 => Some(EV_KEY::KEY_GAMES),
1250        418 => Some(EV_KEY::KEY_ZOOMIN),
1251        419 => Some(EV_KEY::KEY_ZOOMOUT),
1252        420 => Some(EV_KEY::KEY_ZOOMRESET),
1253        421 => Some(EV_KEY::KEY_WORDPROCESSOR),
1254        422 => Some(EV_KEY::KEY_EDITOR),
1255        423 => Some(EV_KEY::KEY_SPREADSHEET),
1256        424 => Some(EV_KEY::KEY_GRAPHICSEDITOR),
1257        425 => Some(EV_KEY::KEY_PRESENTATION),
1258        426 => Some(EV_KEY::KEY_DATABASE),
1259        427 => Some(EV_KEY::KEY_NEWS),
1260        428 => Some(EV_KEY::KEY_VOICEMAIL),
1261        429 => Some(EV_KEY::KEY_ADDRESSBOOK),
1262        430 => Some(EV_KEY::KEY_MESSENGER),
1263        431 => Some(EV_KEY::KEY_DISPLAYTOGGLE),
1264        432 => Some(EV_KEY::KEY_SPELLCHECK),
1265        433 => Some(EV_KEY::KEY_LOGOFF),
1266        434 => Some(EV_KEY::KEY_DOLLAR),
1267        435 => Some(EV_KEY::KEY_EURO),
1268        436 => Some(EV_KEY::KEY_FRAMEBACK),
1269        437 => Some(EV_KEY::KEY_FRAMEFORWARD),
1270        438 => Some(EV_KEY::KEY_CONTEXT_MENU),
1271        439 => Some(EV_KEY::KEY_MEDIA_REPEAT),
1272        440 => Some(EV_KEY::KEY_10CHANNELSUP),
1273        441 => Some(EV_KEY::KEY_10CHANNELSDOWN),
1274        442 => Some(EV_KEY::KEY_IMAGES),
1275        444 => Some(EV_KEY::KEY_NOTIFICATION_CENTER),
1276        445 => Some(EV_KEY::KEY_PICKUP_PHONE),
1277        446 => Some(EV_KEY::KEY_HANGUP_PHONE),
1278        448 => Some(EV_KEY::KEY_DEL_EOL),
1279        449 => Some(EV_KEY::KEY_DEL_EOS),
1280        450 => Some(EV_KEY::KEY_INS_LINE),
1281        451 => Some(EV_KEY::KEY_DEL_LINE),
1282        464 => Some(EV_KEY::KEY_FN),
1283        465 => Some(EV_KEY::KEY_FN_ESC),
1284        466 => Some(EV_KEY::KEY_FN_F1),
1285        467 => Some(EV_KEY::KEY_FN_F2),
1286        468 => Some(EV_KEY::KEY_FN_F3),
1287        469 => Some(EV_KEY::KEY_FN_F4),
1288        470 => Some(EV_KEY::KEY_FN_F5),
1289        471 => Some(EV_KEY::KEY_FN_F6),
1290        472 => Some(EV_KEY::KEY_FN_F7),
1291        473 => Some(EV_KEY::KEY_FN_F8),
1292        474 => Some(EV_KEY::KEY_FN_F9),
1293        475 => Some(EV_KEY::KEY_FN_F10),
1294        476 => Some(EV_KEY::KEY_FN_F11),
1295        477 => Some(EV_KEY::KEY_FN_F12),
1296        478 => Some(EV_KEY::KEY_FN_1),
1297        479 => Some(EV_KEY::KEY_FN_2),
1298        480 => Some(EV_KEY::KEY_FN_D),
1299        481 => Some(EV_KEY::KEY_FN_E),
1300        482 => Some(EV_KEY::KEY_FN_F),
1301        483 => Some(EV_KEY::KEY_FN_S),
1302        484 => Some(EV_KEY::KEY_FN_B),
1303        485 => Some(EV_KEY::KEY_FN_RIGHT_SHIFT),
1304        497 => Some(EV_KEY::KEY_BRL_DOT1),
1305        498 => Some(EV_KEY::KEY_BRL_DOT2),
1306        499 => Some(EV_KEY::KEY_BRL_DOT3),
1307        500 => Some(EV_KEY::KEY_BRL_DOT4),
1308        501 => Some(EV_KEY::KEY_BRL_DOT5),
1309        502 => Some(EV_KEY::KEY_BRL_DOT6),
1310        503 => Some(EV_KEY::KEY_BRL_DOT7),
1311        504 => Some(EV_KEY::KEY_BRL_DOT8),
1312        505 => Some(EV_KEY::KEY_BRL_DOT9),
1313        506 => Some(EV_KEY::KEY_BRL_DOT10),
1314        512 => Some(EV_KEY::KEY_NUMERIC_0),
1315        513 => Some(EV_KEY::KEY_NUMERIC_1),
1316        514 => Some(EV_KEY::KEY_NUMERIC_2),
1317        515 => Some(EV_KEY::KEY_NUMERIC_3),
1318        516 => Some(EV_KEY::KEY_NUMERIC_4),
1319        517 => Some(EV_KEY::KEY_NUMERIC_5),
1320        518 => Some(EV_KEY::KEY_NUMERIC_6),
1321        519 => Some(EV_KEY::KEY_NUMERIC_7),
1322        520 => Some(EV_KEY::KEY_NUMERIC_8),
1323        521 => Some(EV_KEY::KEY_NUMERIC_9),
1324        522 => Some(EV_KEY::KEY_NUMERIC_STAR),
1325        523 => Some(EV_KEY::KEY_NUMERIC_POUND),
1326        524 => Some(EV_KEY::KEY_NUMERIC_A),
1327        525 => Some(EV_KEY::KEY_NUMERIC_B),
1328        526 => Some(EV_KEY::KEY_NUMERIC_C),
1329        527 => Some(EV_KEY::KEY_NUMERIC_D),
1330        528 => Some(EV_KEY::KEY_CAMERA_FOCUS),
1331        529 => Some(EV_KEY::KEY_WPS_BUTTON),
1332        530 => Some(EV_KEY::KEY_TOUCHPAD_TOGGLE),
1333        531 => Some(EV_KEY::KEY_TOUCHPAD_ON),
1334        532 => Some(EV_KEY::KEY_TOUCHPAD_OFF),
1335        533 => Some(EV_KEY::KEY_CAMERA_ZOOMIN),
1336        534 => Some(EV_KEY::KEY_CAMERA_ZOOMOUT),
1337        535 => Some(EV_KEY::KEY_CAMERA_UP),
1338        536 => Some(EV_KEY::KEY_CAMERA_DOWN),
1339        537 => Some(EV_KEY::KEY_CAMERA_LEFT),
1340        538 => Some(EV_KEY::KEY_CAMERA_RIGHT),
1341        539 => Some(EV_KEY::KEY_ATTENDANT_ON),
1342        540 => Some(EV_KEY::KEY_ATTENDANT_OFF),
1343        541 => Some(EV_KEY::KEY_ATTENDANT_TOGGLE),
1344        542 => Some(EV_KEY::KEY_LIGHTS_TOGGLE),
1345        560 => Some(EV_KEY::KEY_ALS_TOGGLE),
1346        561 => Some(EV_KEY::KEY_ROTATE_LOCK_TOGGLE),
1347        562 => Some(EV_KEY::KEY_REFRESH_RATE_TOGGLE),
1348        576 => Some(EV_KEY::KEY_BUTTONCONFIG),
1349        577 => Some(EV_KEY::KEY_TASKMANAGER),
1350        578 => Some(EV_KEY::KEY_JOURNAL),
1351        579 => Some(EV_KEY::KEY_CONTROLPANEL),
1352        580 => Some(EV_KEY::KEY_APPSELECT),
1353        581 => Some(EV_KEY::KEY_SCREENSAVER),
1354        582 => Some(EV_KEY::KEY_VOICECOMMAND),
1355        583 => Some(EV_KEY::KEY_ASSISTANT),
1356        584 => Some(EV_KEY::KEY_KBD_LAYOUT_NEXT),
1357        585 => Some(EV_KEY::KEY_EMOJI_PICKER),
1358        586 => Some(EV_KEY::KEY_DICTATE),
1359        587 => Some(EV_KEY::KEY_CAMERA_ACCESS_ENABLE),
1360        588 => Some(EV_KEY::KEY_CAMERA_ACCESS_DISABLE),
1361        589 => Some(EV_KEY::KEY_CAMERA_ACCESS_TOGGLE),
1362        590 => Some(EV_KEY::KEY_ACCESSIBILITY),
1363        591 => Some(EV_KEY::KEY_DO_NOT_DISTURB),
1364        592 => Some(EV_KEY::KEY_BRIGHTNESS_MIN),
1365        593 => Some(EV_KEY::KEY_BRIGHTNESS_MAX),
1366        608 => Some(EV_KEY::KEY_KBDINPUTASSIST_PREV),
1367        609 => Some(EV_KEY::KEY_KBDINPUTASSIST_NEXT),
1368        610 => Some(EV_KEY::KEY_KBDINPUTASSIST_PREVGROUP),
1369        611 => Some(EV_KEY::KEY_KBDINPUTASSIST_NEXTGROUP),
1370        612 => Some(EV_KEY::KEY_KBDINPUTASSIST_ACCEPT),
1371        613 => Some(EV_KEY::KEY_KBDINPUTASSIST_CANCEL),
1372        614 => Some(EV_KEY::KEY_RIGHT_UP),
1373        615 => Some(EV_KEY::KEY_RIGHT_DOWN),
1374        616 => Some(EV_KEY::KEY_LEFT_UP),
1375        617 => Some(EV_KEY::KEY_LEFT_DOWN),
1376        618 => Some(EV_KEY::KEY_ROOT_MENU),
1377        619 => Some(EV_KEY::KEY_MEDIA_TOP_MENU),
1378        620 => Some(EV_KEY::KEY_NUMERIC_11),
1379        621 => Some(EV_KEY::KEY_NUMERIC_12),
1380        622 => Some(EV_KEY::KEY_AUDIO_DESC),
1381        623 => Some(EV_KEY::KEY_3D_MODE),
1382        624 => Some(EV_KEY::KEY_NEXT_FAVORITE),
1383        625 => Some(EV_KEY::KEY_STOP_RECORD),
1384        626 => Some(EV_KEY::KEY_PAUSE_RECORD),
1385        627 => Some(EV_KEY::KEY_VOD),
1386        628 => Some(EV_KEY::KEY_UNMUTE),
1387        629 => Some(EV_KEY::KEY_FASTREVERSE),
1388        630 => Some(EV_KEY::KEY_SLOWREVERSE),
1389        631 => Some(EV_KEY::KEY_DATA),
1390        632 => Some(EV_KEY::KEY_ONSCREEN_KEYBOARD),
1391        633 => Some(EV_KEY::KEY_PRIVACY_SCREEN_TOGGLE),
1392        634 => Some(EV_KEY::KEY_SELECTIVE_SCREENSHOT),
1393        635 => Some(EV_KEY::KEY_NEXT_ELEMENT),
1394        636 => Some(EV_KEY::KEY_PREVIOUS_ELEMENT),
1395        637 => Some(EV_KEY::KEY_AUTOPILOT_ENGAGE_TOGGLE),
1396        638 => Some(EV_KEY::KEY_MARK_WAYPOINT),
1397        639 => Some(EV_KEY::KEY_SOS),
1398        640 => Some(EV_KEY::KEY_NAV_CHART),
1399        641 => Some(EV_KEY::KEY_FISHING_CHART),
1400        642 => Some(EV_KEY::KEY_SINGLE_RANGE_RADAR),
1401        643 => Some(EV_KEY::KEY_DUAL_RANGE_RADAR),
1402        644 => Some(EV_KEY::KEY_RADAR_OVERLAY),
1403        645 => Some(EV_KEY::KEY_TRADITIONAL_SONAR),
1404        646 => Some(EV_KEY::KEY_CLEARVU_SONAR),
1405        647 => Some(EV_KEY::KEY_SIDEVU_SONAR),
1406        648 => Some(EV_KEY::KEY_NAV_INFO),
1407        649 => Some(EV_KEY::KEY_BRIGHTNESS_MENU),
1408        656 => Some(EV_KEY::KEY_MACRO1),
1409        657 => Some(EV_KEY::KEY_MACRO2),
1410        658 => Some(EV_KEY::KEY_MACRO3),
1411        659 => Some(EV_KEY::KEY_MACRO4),
1412        660 => Some(EV_KEY::KEY_MACRO5),
1413        661 => Some(EV_KEY::KEY_MACRO6),
1414        662 => Some(EV_KEY::KEY_MACRO7),
1415        663 => Some(EV_KEY::KEY_MACRO8),
1416        664 => Some(EV_KEY::KEY_MACRO9),
1417        665 => Some(EV_KEY::KEY_MACRO10),
1418        666 => Some(EV_KEY::KEY_MACRO11),
1419        667 => Some(EV_KEY::KEY_MACRO12),
1420        668 => Some(EV_KEY::KEY_MACRO13),
1421        669 => Some(EV_KEY::KEY_MACRO14),
1422        670 => Some(EV_KEY::KEY_MACRO15),
1423        671 => Some(EV_KEY::KEY_MACRO16),
1424        672 => Some(EV_KEY::KEY_MACRO17),
1425        673 => Some(EV_KEY::KEY_MACRO18),
1426        674 => Some(EV_KEY::KEY_MACRO19),
1427        675 => Some(EV_KEY::KEY_MACRO20),
1428        676 => Some(EV_KEY::KEY_MACRO21),
1429        677 => Some(EV_KEY::KEY_MACRO22),
1430        678 => Some(EV_KEY::KEY_MACRO23),
1431        679 => Some(EV_KEY::KEY_MACRO24),
1432        680 => Some(EV_KEY::KEY_MACRO25),
1433        681 => Some(EV_KEY::KEY_MACRO26),
1434        682 => Some(EV_KEY::KEY_MACRO27),
1435        683 => Some(EV_KEY::KEY_MACRO28),
1436        684 => Some(EV_KEY::KEY_MACRO29),
1437        685 => Some(EV_KEY::KEY_MACRO30),
1438        688 => Some(EV_KEY::KEY_MACRO_RECORD_START),
1439        689 => Some(EV_KEY::KEY_MACRO_RECORD_STOP),
1440        690 => Some(EV_KEY::KEY_MACRO_PRESET_CYCLE),
1441        691 => Some(EV_KEY::KEY_MACRO_PRESET1),
1442        692 => Some(EV_KEY::KEY_MACRO_PRESET2),
1443        693 => Some(EV_KEY::KEY_MACRO_PRESET3),
1444        696 => Some(EV_KEY::KEY_KBD_LCD_MENU1),
1445        697 => Some(EV_KEY::KEY_KBD_LCD_MENU2),
1446        698 => Some(EV_KEY::KEY_KBD_LCD_MENU3),
1447        699 => Some(EV_KEY::KEY_KBD_LCD_MENU4),
1448        700 => Some(EV_KEY::KEY_KBD_LCD_MENU5),
1449        767 => Some(EV_KEY::KEY_MAX),
1450        256 => Some(EV_KEY::BTN_0),
1451        257 => Some(EV_KEY::BTN_1),
1452        258 => Some(EV_KEY::BTN_2),
1453        259 => Some(EV_KEY::BTN_3),
1454        260 => Some(EV_KEY::BTN_4),
1455        261 => Some(EV_KEY::BTN_5),
1456        262 => Some(EV_KEY::BTN_6),
1457        263 => Some(EV_KEY::BTN_7),
1458        264 => Some(EV_KEY::BTN_8),
1459        265 => Some(EV_KEY::BTN_9),
1460        272 => Some(EV_KEY::BTN_LEFT),
1461        273 => Some(EV_KEY::BTN_RIGHT),
1462        274 => Some(EV_KEY::BTN_MIDDLE),
1463        275 => Some(EV_KEY::BTN_SIDE),
1464        276 => Some(EV_KEY::BTN_EXTRA),
1465        277 => Some(EV_KEY::BTN_FORWARD),
1466        278 => Some(EV_KEY::BTN_BACK),
1467        279 => Some(EV_KEY::BTN_TASK),
1468        288 => Some(EV_KEY::BTN_TRIGGER),
1469        289 => Some(EV_KEY::BTN_THUMB),
1470        290 => Some(EV_KEY::BTN_THUMB2),
1471        291 => Some(EV_KEY::BTN_TOP),
1472        292 => Some(EV_KEY::BTN_TOP2),
1473        293 => Some(EV_KEY::BTN_PINKIE),
1474        294 => Some(EV_KEY::BTN_BASE),
1475        295 => Some(EV_KEY::BTN_BASE2),
1476        296 => Some(EV_KEY::BTN_BASE3),
1477        297 => Some(EV_KEY::BTN_BASE4),
1478        298 => Some(EV_KEY::BTN_BASE5),
1479        299 => Some(EV_KEY::BTN_BASE6),
1480        303 => Some(EV_KEY::BTN_DEAD),
1481        304 => Some(EV_KEY::BTN_SOUTH),
1482        305 => Some(EV_KEY::BTN_EAST),
1483        306 => Some(EV_KEY::BTN_C),
1484        307 => Some(EV_KEY::BTN_NORTH),
1485        308 => Some(EV_KEY::BTN_WEST),
1486        309 => Some(EV_KEY::BTN_Z),
1487        310 => Some(EV_KEY::BTN_TL),
1488        311 => Some(EV_KEY::BTN_TR),
1489        312 => Some(EV_KEY::BTN_TL2),
1490        313 => Some(EV_KEY::BTN_TR2),
1491        314 => Some(EV_KEY::BTN_SELECT),
1492        315 => Some(EV_KEY::BTN_START),
1493        316 => Some(EV_KEY::BTN_MODE),
1494        317 => Some(EV_KEY::BTN_THUMBL),
1495        318 => Some(EV_KEY::BTN_THUMBR),
1496        320 => Some(EV_KEY::BTN_TOOL_PEN),
1497        321 => Some(EV_KEY::BTN_TOOL_RUBBER),
1498        322 => Some(EV_KEY::BTN_TOOL_BRUSH),
1499        323 => Some(EV_KEY::BTN_TOOL_PENCIL),
1500        324 => Some(EV_KEY::BTN_TOOL_AIRBRUSH),
1501        325 => Some(EV_KEY::BTN_TOOL_FINGER),
1502        326 => Some(EV_KEY::BTN_TOOL_MOUSE),
1503        327 => Some(EV_KEY::BTN_TOOL_LENS),
1504        328 => Some(EV_KEY::BTN_TOOL_QUINTTAP),
1505        329 => Some(EV_KEY::BTN_STYLUS3),
1506        330 => Some(EV_KEY::BTN_TOUCH),
1507        331 => Some(EV_KEY::BTN_STYLUS),
1508        332 => Some(EV_KEY::BTN_STYLUS2),
1509        333 => Some(EV_KEY::BTN_TOOL_DOUBLETAP),
1510        334 => Some(EV_KEY::BTN_TOOL_TRIPLETAP),
1511        335 => Some(EV_KEY::BTN_TOOL_QUADTAP),
1512        336 => Some(EV_KEY::BTN_GEAR_DOWN),
1513        337 => Some(EV_KEY::BTN_GEAR_UP),
1514        544 => Some(EV_KEY::BTN_DPAD_UP),
1515        545 => Some(EV_KEY::BTN_DPAD_DOWN),
1516        546 => Some(EV_KEY::BTN_DPAD_LEFT),
1517        547 => Some(EV_KEY::BTN_DPAD_RIGHT),
1518        704 => Some(EV_KEY::BTN_TRIGGER_HAPPY1),
1519        705 => Some(EV_KEY::BTN_TRIGGER_HAPPY2),
1520        706 => Some(EV_KEY::BTN_TRIGGER_HAPPY3),
1521        707 => Some(EV_KEY::BTN_TRIGGER_HAPPY4),
1522        708 => Some(EV_KEY::BTN_TRIGGER_HAPPY5),
1523        709 => Some(EV_KEY::BTN_TRIGGER_HAPPY6),
1524        710 => Some(EV_KEY::BTN_TRIGGER_HAPPY7),
1525        711 => Some(EV_KEY::BTN_TRIGGER_HAPPY8),
1526        712 => Some(EV_KEY::BTN_TRIGGER_HAPPY9),
1527        713 => Some(EV_KEY::BTN_TRIGGER_HAPPY10),
1528        714 => Some(EV_KEY::BTN_TRIGGER_HAPPY11),
1529        715 => Some(EV_KEY::BTN_TRIGGER_HAPPY12),
1530        716 => Some(EV_KEY::BTN_TRIGGER_HAPPY13),
1531        717 => Some(EV_KEY::BTN_TRIGGER_HAPPY14),
1532        718 => Some(EV_KEY::BTN_TRIGGER_HAPPY15),
1533        719 => Some(EV_KEY::BTN_TRIGGER_HAPPY16),
1534        720 => Some(EV_KEY::BTN_TRIGGER_HAPPY17),
1535        721 => Some(EV_KEY::BTN_TRIGGER_HAPPY18),
1536        722 => Some(EV_KEY::BTN_TRIGGER_HAPPY19),
1537        723 => Some(EV_KEY::BTN_TRIGGER_HAPPY20),
1538        724 => Some(EV_KEY::BTN_TRIGGER_HAPPY21),
1539        725 => Some(EV_KEY::BTN_TRIGGER_HAPPY22),
1540        726 => Some(EV_KEY::BTN_TRIGGER_HAPPY23),
1541        727 => Some(EV_KEY::BTN_TRIGGER_HAPPY24),
1542        728 => Some(EV_KEY::BTN_TRIGGER_HAPPY25),
1543        729 => Some(EV_KEY::BTN_TRIGGER_HAPPY26),
1544        730 => Some(EV_KEY::BTN_TRIGGER_HAPPY27),
1545        731 => Some(EV_KEY::BTN_TRIGGER_HAPPY28),
1546        732 => Some(EV_KEY::BTN_TRIGGER_HAPPY29),
1547        733 => Some(EV_KEY::BTN_TRIGGER_HAPPY30),
1548        734 => Some(EV_KEY::BTN_TRIGGER_HAPPY31),
1549        735 => Some(EV_KEY::BTN_TRIGGER_HAPPY32),
1550        736 => Some(EV_KEY::BTN_TRIGGER_HAPPY33),
1551        737 => Some(EV_KEY::BTN_TRIGGER_HAPPY34),
1552        738 => Some(EV_KEY::BTN_TRIGGER_HAPPY35),
1553        739 => Some(EV_KEY::BTN_TRIGGER_HAPPY36),
1554        740 => Some(EV_KEY::BTN_TRIGGER_HAPPY37),
1555        741 => Some(EV_KEY::BTN_TRIGGER_HAPPY38),
1556        742 => Some(EV_KEY::BTN_TRIGGER_HAPPY39),
1557        743 => Some(EV_KEY::BTN_TRIGGER_HAPPY40),
1558        _ => None,
1559    }
1560}
1561
1562impl std::str::FromStr for EV_KEY {
1563    type Err = ();
1564    fn from_str(s: &str) -> Result<Self, Self::Err> {
1565        match s {
1566            "KEY_RESERVED" => Ok(EV_KEY::KEY_RESERVED),
1567            "KEY_ESC" => Ok(EV_KEY::KEY_ESC),
1568            "KEY_1" => Ok(EV_KEY::KEY_1),
1569            "KEY_2" => Ok(EV_KEY::KEY_2),
1570            "KEY_3" => Ok(EV_KEY::KEY_3),
1571            "KEY_4" => Ok(EV_KEY::KEY_4),
1572            "KEY_5" => Ok(EV_KEY::KEY_5),
1573            "KEY_6" => Ok(EV_KEY::KEY_6),
1574            "KEY_7" => Ok(EV_KEY::KEY_7),
1575            "KEY_8" => Ok(EV_KEY::KEY_8),
1576            "KEY_9" => Ok(EV_KEY::KEY_9),
1577            "KEY_0" => Ok(EV_KEY::KEY_0),
1578            "KEY_MINUS" => Ok(EV_KEY::KEY_MINUS),
1579            "KEY_EQUAL" => Ok(EV_KEY::KEY_EQUAL),
1580            "KEY_BACKSPACE" => Ok(EV_KEY::KEY_BACKSPACE),
1581            "KEY_TAB" => Ok(EV_KEY::KEY_TAB),
1582            "KEY_Q" => Ok(EV_KEY::KEY_Q),
1583            "KEY_W" => Ok(EV_KEY::KEY_W),
1584            "KEY_E" => Ok(EV_KEY::KEY_E),
1585            "KEY_R" => Ok(EV_KEY::KEY_R),
1586            "KEY_T" => Ok(EV_KEY::KEY_T),
1587            "KEY_Y" => Ok(EV_KEY::KEY_Y),
1588            "KEY_U" => Ok(EV_KEY::KEY_U),
1589            "KEY_I" => Ok(EV_KEY::KEY_I),
1590            "KEY_O" => Ok(EV_KEY::KEY_O),
1591            "KEY_P" => Ok(EV_KEY::KEY_P),
1592            "KEY_LEFTBRACE" => Ok(EV_KEY::KEY_LEFTBRACE),
1593            "KEY_RIGHTBRACE" => Ok(EV_KEY::KEY_RIGHTBRACE),
1594            "KEY_ENTER" => Ok(EV_KEY::KEY_ENTER),
1595            "KEY_LEFTCTRL" => Ok(EV_KEY::KEY_LEFTCTRL),
1596            "KEY_A" => Ok(EV_KEY::KEY_A),
1597            "KEY_S" => Ok(EV_KEY::KEY_S),
1598            "KEY_D" => Ok(EV_KEY::KEY_D),
1599            "KEY_F" => Ok(EV_KEY::KEY_F),
1600            "KEY_G" => Ok(EV_KEY::KEY_G),
1601            "KEY_H" => Ok(EV_KEY::KEY_H),
1602            "KEY_J" => Ok(EV_KEY::KEY_J),
1603            "KEY_K" => Ok(EV_KEY::KEY_K),
1604            "KEY_L" => Ok(EV_KEY::KEY_L),
1605            "KEY_SEMICOLON" => Ok(EV_KEY::KEY_SEMICOLON),
1606            "KEY_APOSTROPHE" => Ok(EV_KEY::KEY_APOSTROPHE),
1607            "KEY_GRAVE" => Ok(EV_KEY::KEY_GRAVE),
1608            "KEY_LEFTSHIFT" => Ok(EV_KEY::KEY_LEFTSHIFT),
1609            "KEY_BACKSLASH" => Ok(EV_KEY::KEY_BACKSLASH),
1610            "KEY_Z" => Ok(EV_KEY::KEY_Z),
1611            "KEY_X" => Ok(EV_KEY::KEY_X),
1612            "KEY_C" => Ok(EV_KEY::KEY_C),
1613            "KEY_V" => Ok(EV_KEY::KEY_V),
1614            "KEY_B" => Ok(EV_KEY::KEY_B),
1615            "KEY_N" => Ok(EV_KEY::KEY_N),
1616            "KEY_M" => Ok(EV_KEY::KEY_M),
1617            "KEY_COMMA" => Ok(EV_KEY::KEY_COMMA),
1618            "KEY_DOT" => Ok(EV_KEY::KEY_DOT),
1619            "KEY_SLASH" => Ok(EV_KEY::KEY_SLASH),
1620            "KEY_RIGHTSHIFT" => Ok(EV_KEY::KEY_RIGHTSHIFT),
1621            "KEY_KPASTERISK" => Ok(EV_KEY::KEY_KPASTERISK),
1622            "KEY_LEFTALT" => Ok(EV_KEY::KEY_LEFTALT),
1623            "KEY_SPACE" => Ok(EV_KEY::KEY_SPACE),
1624            "KEY_CAPSLOCK" => Ok(EV_KEY::KEY_CAPSLOCK),
1625            "KEY_F1" => Ok(EV_KEY::KEY_F1),
1626            "KEY_F2" => Ok(EV_KEY::KEY_F2),
1627            "KEY_F3" => Ok(EV_KEY::KEY_F3),
1628            "KEY_F4" => Ok(EV_KEY::KEY_F4),
1629            "KEY_F5" => Ok(EV_KEY::KEY_F5),
1630            "KEY_F6" => Ok(EV_KEY::KEY_F6),
1631            "KEY_F7" => Ok(EV_KEY::KEY_F7),
1632            "KEY_F8" => Ok(EV_KEY::KEY_F8),
1633            "KEY_F9" => Ok(EV_KEY::KEY_F9),
1634            "KEY_F10" => Ok(EV_KEY::KEY_F10),
1635            "KEY_NUMLOCK" => Ok(EV_KEY::KEY_NUMLOCK),
1636            "KEY_SCROLLLOCK" => Ok(EV_KEY::KEY_SCROLLLOCK),
1637            "KEY_KP7" => Ok(EV_KEY::KEY_KP7),
1638            "KEY_KP8" => Ok(EV_KEY::KEY_KP8),
1639            "KEY_KP9" => Ok(EV_KEY::KEY_KP9),
1640            "KEY_KPMINUS" => Ok(EV_KEY::KEY_KPMINUS),
1641            "KEY_KP4" => Ok(EV_KEY::KEY_KP4),
1642            "KEY_KP5" => Ok(EV_KEY::KEY_KP5),
1643            "KEY_KP6" => Ok(EV_KEY::KEY_KP6),
1644            "KEY_KPPLUS" => Ok(EV_KEY::KEY_KPPLUS),
1645            "KEY_KP1" => Ok(EV_KEY::KEY_KP1),
1646            "KEY_KP2" => Ok(EV_KEY::KEY_KP2),
1647            "KEY_KP3" => Ok(EV_KEY::KEY_KP3),
1648            "KEY_KP0" => Ok(EV_KEY::KEY_KP0),
1649            "KEY_KPDOT" => Ok(EV_KEY::KEY_KPDOT),
1650            "KEY_ZENKAKUHANKAKU" => Ok(EV_KEY::KEY_ZENKAKUHANKAKU),
1651            "KEY_102ND" => Ok(EV_KEY::KEY_102ND),
1652            "KEY_F11" => Ok(EV_KEY::KEY_F11),
1653            "KEY_F12" => Ok(EV_KEY::KEY_F12),
1654            "KEY_RO" => Ok(EV_KEY::KEY_RO),
1655            "KEY_KATAKANA" => Ok(EV_KEY::KEY_KATAKANA),
1656            "KEY_HIRAGANA" => Ok(EV_KEY::KEY_HIRAGANA),
1657            "KEY_HENKAN" => Ok(EV_KEY::KEY_HENKAN),
1658            "KEY_KATAKANAHIRAGANA" => Ok(EV_KEY::KEY_KATAKANAHIRAGANA),
1659            "KEY_MUHENKAN" => Ok(EV_KEY::KEY_MUHENKAN),
1660            "KEY_KPJPCOMMA" => Ok(EV_KEY::KEY_KPJPCOMMA),
1661            "KEY_KPENTER" => Ok(EV_KEY::KEY_KPENTER),
1662            "KEY_RIGHTCTRL" => Ok(EV_KEY::KEY_RIGHTCTRL),
1663            "KEY_KPSLASH" => Ok(EV_KEY::KEY_KPSLASH),
1664            "KEY_SYSRQ" => Ok(EV_KEY::KEY_SYSRQ),
1665            "KEY_RIGHTALT" => Ok(EV_KEY::KEY_RIGHTALT),
1666            "KEY_LINEFEED" => Ok(EV_KEY::KEY_LINEFEED),
1667            "KEY_HOME" => Ok(EV_KEY::KEY_HOME),
1668            "KEY_UP" => Ok(EV_KEY::KEY_UP),
1669            "KEY_PAGEUP" => Ok(EV_KEY::KEY_PAGEUP),
1670            "KEY_LEFT" => Ok(EV_KEY::KEY_LEFT),
1671            "KEY_RIGHT" => Ok(EV_KEY::KEY_RIGHT),
1672            "KEY_END" => Ok(EV_KEY::KEY_END),
1673            "KEY_DOWN" => Ok(EV_KEY::KEY_DOWN),
1674            "KEY_PAGEDOWN" => Ok(EV_KEY::KEY_PAGEDOWN),
1675            "KEY_INSERT" => Ok(EV_KEY::KEY_INSERT),
1676            "KEY_DELETE" => Ok(EV_KEY::KEY_DELETE),
1677            "KEY_MACRO" => Ok(EV_KEY::KEY_MACRO),
1678            "KEY_MUTE" => Ok(EV_KEY::KEY_MUTE),
1679            "KEY_VOLUMEDOWN" => Ok(EV_KEY::KEY_VOLUMEDOWN),
1680            "KEY_VOLUMEUP" => Ok(EV_KEY::KEY_VOLUMEUP),
1681            "KEY_POWER" => Ok(EV_KEY::KEY_POWER),
1682            "KEY_KPEQUAL" => Ok(EV_KEY::KEY_KPEQUAL),
1683            "KEY_KPPLUSMINUS" => Ok(EV_KEY::KEY_KPPLUSMINUS),
1684            "KEY_PAUSE" => Ok(EV_KEY::KEY_PAUSE),
1685            "KEY_SCALE" => Ok(EV_KEY::KEY_SCALE),
1686            "KEY_KPCOMMA" => Ok(EV_KEY::KEY_KPCOMMA),
1687            "KEY_HANGEUL" => Ok(EV_KEY::KEY_HANGEUL),
1688            "KEY_HANJA" => Ok(EV_KEY::KEY_HANJA),
1689            "KEY_YEN" => Ok(EV_KEY::KEY_YEN),
1690            "KEY_LEFTMETA" => Ok(EV_KEY::KEY_LEFTMETA),
1691            "KEY_RIGHTMETA" => Ok(EV_KEY::KEY_RIGHTMETA),
1692            "KEY_COMPOSE" => Ok(EV_KEY::KEY_COMPOSE),
1693            "KEY_STOP" => Ok(EV_KEY::KEY_STOP),
1694            "KEY_AGAIN" => Ok(EV_KEY::KEY_AGAIN),
1695            "KEY_PROPS" => Ok(EV_KEY::KEY_PROPS),
1696            "KEY_UNDO" => Ok(EV_KEY::KEY_UNDO),
1697            "KEY_FRONT" => Ok(EV_KEY::KEY_FRONT),
1698            "KEY_COPY" => Ok(EV_KEY::KEY_COPY),
1699            "KEY_OPEN" => Ok(EV_KEY::KEY_OPEN),
1700            "KEY_PASTE" => Ok(EV_KEY::KEY_PASTE),
1701            "KEY_FIND" => Ok(EV_KEY::KEY_FIND),
1702            "KEY_CUT" => Ok(EV_KEY::KEY_CUT),
1703            "KEY_HELP" => Ok(EV_KEY::KEY_HELP),
1704            "KEY_MENU" => Ok(EV_KEY::KEY_MENU),
1705            "KEY_CALC" => Ok(EV_KEY::KEY_CALC),
1706            "KEY_SETUP" => Ok(EV_KEY::KEY_SETUP),
1707            "KEY_SLEEP" => Ok(EV_KEY::KEY_SLEEP),
1708            "KEY_WAKEUP" => Ok(EV_KEY::KEY_WAKEUP),
1709            "KEY_FILE" => Ok(EV_KEY::KEY_FILE),
1710            "KEY_SENDFILE" => Ok(EV_KEY::KEY_SENDFILE),
1711            "KEY_DELETEFILE" => Ok(EV_KEY::KEY_DELETEFILE),
1712            "KEY_XFER" => Ok(EV_KEY::KEY_XFER),
1713            "KEY_PROG1" => Ok(EV_KEY::KEY_PROG1),
1714            "KEY_PROG2" => Ok(EV_KEY::KEY_PROG2),
1715            "KEY_WWW" => Ok(EV_KEY::KEY_WWW),
1716            "KEY_MSDOS" => Ok(EV_KEY::KEY_MSDOS),
1717            "KEY_COFFEE" => Ok(EV_KEY::KEY_COFFEE),
1718            "KEY_ROTATE_DISPLAY" => Ok(EV_KEY::KEY_ROTATE_DISPLAY),
1719            "KEY_CYCLEWINDOWS" => Ok(EV_KEY::KEY_CYCLEWINDOWS),
1720            "KEY_MAIL" => Ok(EV_KEY::KEY_MAIL),
1721            "KEY_BOOKMARKS" => Ok(EV_KEY::KEY_BOOKMARKS),
1722            "KEY_COMPUTER" => Ok(EV_KEY::KEY_COMPUTER),
1723            "KEY_BACK" => Ok(EV_KEY::KEY_BACK),
1724            "KEY_FORWARD" => Ok(EV_KEY::KEY_FORWARD),
1725            "KEY_CLOSECD" => Ok(EV_KEY::KEY_CLOSECD),
1726            "KEY_EJECTCD" => Ok(EV_KEY::KEY_EJECTCD),
1727            "KEY_EJECTCLOSECD" => Ok(EV_KEY::KEY_EJECTCLOSECD),
1728            "KEY_NEXTSONG" => Ok(EV_KEY::KEY_NEXTSONG),
1729            "KEY_PLAYPAUSE" => Ok(EV_KEY::KEY_PLAYPAUSE),
1730            "KEY_PREVIOUSSONG" => Ok(EV_KEY::KEY_PREVIOUSSONG),
1731            "KEY_STOPCD" => Ok(EV_KEY::KEY_STOPCD),
1732            "KEY_RECORD" => Ok(EV_KEY::KEY_RECORD),
1733            "KEY_REWIND" => Ok(EV_KEY::KEY_REWIND),
1734            "KEY_PHONE" => Ok(EV_KEY::KEY_PHONE),
1735            "KEY_ISO" => Ok(EV_KEY::KEY_ISO),
1736            "KEY_CONFIG" => Ok(EV_KEY::KEY_CONFIG),
1737            "KEY_HOMEPAGE" => Ok(EV_KEY::KEY_HOMEPAGE),
1738            "KEY_REFRESH" => Ok(EV_KEY::KEY_REFRESH),
1739            "KEY_EXIT" => Ok(EV_KEY::KEY_EXIT),
1740            "KEY_MOVE" => Ok(EV_KEY::KEY_MOVE),
1741            "KEY_EDIT" => Ok(EV_KEY::KEY_EDIT),
1742            "KEY_SCROLLUP" => Ok(EV_KEY::KEY_SCROLLUP),
1743            "KEY_SCROLLDOWN" => Ok(EV_KEY::KEY_SCROLLDOWN),
1744            "KEY_KPLEFTPAREN" => Ok(EV_KEY::KEY_KPLEFTPAREN),
1745            "KEY_KPRIGHTPAREN" => Ok(EV_KEY::KEY_KPRIGHTPAREN),
1746            "KEY_NEW" => Ok(EV_KEY::KEY_NEW),
1747            "KEY_REDO" => Ok(EV_KEY::KEY_REDO),
1748            "KEY_F13" => Ok(EV_KEY::KEY_F13),
1749            "KEY_F14" => Ok(EV_KEY::KEY_F14),
1750            "KEY_F15" => Ok(EV_KEY::KEY_F15),
1751            "KEY_F16" => Ok(EV_KEY::KEY_F16),
1752            "KEY_F17" => Ok(EV_KEY::KEY_F17),
1753            "KEY_F18" => Ok(EV_KEY::KEY_F18),
1754            "KEY_F19" => Ok(EV_KEY::KEY_F19),
1755            "KEY_F20" => Ok(EV_KEY::KEY_F20),
1756            "KEY_F21" => Ok(EV_KEY::KEY_F21),
1757            "KEY_F22" => Ok(EV_KEY::KEY_F22),
1758            "KEY_F23" => Ok(EV_KEY::KEY_F23),
1759            "KEY_F24" => Ok(EV_KEY::KEY_F24),
1760            "KEY_PLAYCD" => Ok(EV_KEY::KEY_PLAYCD),
1761            "KEY_PAUSECD" => Ok(EV_KEY::KEY_PAUSECD),
1762            "KEY_PROG3" => Ok(EV_KEY::KEY_PROG3),
1763            "KEY_PROG4" => Ok(EV_KEY::KEY_PROG4),
1764            "KEY_ALL_APPLICATIONS" => Ok(EV_KEY::KEY_ALL_APPLICATIONS),
1765            "KEY_SUSPEND" => Ok(EV_KEY::KEY_SUSPEND),
1766            "KEY_CLOSE" => Ok(EV_KEY::KEY_CLOSE),
1767            "KEY_PLAY" => Ok(EV_KEY::KEY_PLAY),
1768            "KEY_FASTFORWARD" => Ok(EV_KEY::KEY_FASTFORWARD),
1769            "KEY_BASSBOOST" => Ok(EV_KEY::KEY_BASSBOOST),
1770            "KEY_PRINT" => Ok(EV_KEY::KEY_PRINT),
1771            "KEY_HP" => Ok(EV_KEY::KEY_HP),
1772            "KEY_CAMERA" => Ok(EV_KEY::KEY_CAMERA),
1773            "KEY_SOUND" => Ok(EV_KEY::KEY_SOUND),
1774            "KEY_QUESTION" => Ok(EV_KEY::KEY_QUESTION),
1775            "KEY_EMAIL" => Ok(EV_KEY::KEY_EMAIL),
1776            "KEY_CHAT" => Ok(EV_KEY::KEY_CHAT),
1777            "KEY_SEARCH" => Ok(EV_KEY::KEY_SEARCH),
1778            "KEY_CONNECT" => Ok(EV_KEY::KEY_CONNECT),
1779            "KEY_FINANCE" => Ok(EV_KEY::KEY_FINANCE),
1780            "KEY_SPORT" => Ok(EV_KEY::KEY_SPORT),
1781            "KEY_SHOP" => Ok(EV_KEY::KEY_SHOP),
1782            "KEY_ALTERASE" => Ok(EV_KEY::KEY_ALTERASE),
1783            "KEY_CANCEL" => Ok(EV_KEY::KEY_CANCEL),
1784            "KEY_BRIGHTNESSDOWN" => Ok(EV_KEY::KEY_BRIGHTNESSDOWN),
1785            "KEY_BRIGHTNESSUP" => Ok(EV_KEY::KEY_BRIGHTNESSUP),
1786            "KEY_MEDIA" => Ok(EV_KEY::KEY_MEDIA),
1787            "KEY_SWITCHVIDEOMODE" => Ok(EV_KEY::KEY_SWITCHVIDEOMODE),
1788            "KEY_KBDILLUMTOGGLE" => Ok(EV_KEY::KEY_KBDILLUMTOGGLE),
1789            "KEY_KBDILLUMDOWN" => Ok(EV_KEY::KEY_KBDILLUMDOWN),
1790            "KEY_KBDILLUMUP" => Ok(EV_KEY::KEY_KBDILLUMUP),
1791            "KEY_SEND" => Ok(EV_KEY::KEY_SEND),
1792            "KEY_REPLY" => Ok(EV_KEY::KEY_REPLY),
1793            "KEY_FORWARDMAIL" => Ok(EV_KEY::KEY_FORWARDMAIL),
1794            "KEY_SAVE" => Ok(EV_KEY::KEY_SAVE),
1795            "KEY_DOCUMENTS" => Ok(EV_KEY::KEY_DOCUMENTS),
1796            "KEY_BATTERY" => Ok(EV_KEY::KEY_BATTERY),
1797            "KEY_BLUETOOTH" => Ok(EV_KEY::KEY_BLUETOOTH),
1798            "KEY_WLAN" => Ok(EV_KEY::KEY_WLAN),
1799            "KEY_UWB" => Ok(EV_KEY::KEY_UWB),
1800            "KEY_UNKNOWN" => Ok(EV_KEY::KEY_UNKNOWN),
1801            "KEY_VIDEO_NEXT" => Ok(EV_KEY::KEY_VIDEO_NEXT),
1802            "KEY_VIDEO_PREV" => Ok(EV_KEY::KEY_VIDEO_PREV),
1803            "KEY_BRIGHTNESS_CYCLE" => Ok(EV_KEY::KEY_BRIGHTNESS_CYCLE),
1804            "KEY_BRIGHTNESS_AUTO" => Ok(EV_KEY::KEY_BRIGHTNESS_AUTO),
1805            "KEY_DISPLAY_OFF" => Ok(EV_KEY::KEY_DISPLAY_OFF),
1806            "KEY_WWAN" => Ok(EV_KEY::KEY_WWAN),
1807            "KEY_RFKILL" => Ok(EV_KEY::KEY_RFKILL),
1808            "KEY_MICMUTE" => Ok(EV_KEY::KEY_MICMUTE),
1809            "KEY_OK" => Ok(EV_KEY::KEY_OK),
1810            "KEY_SELECT" => Ok(EV_KEY::KEY_SELECT),
1811            "KEY_GOTO" => Ok(EV_KEY::KEY_GOTO),
1812            "KEY_CLEAR" => Ok(EV_KEY::KEY_CLEAR),
1813            "KEY_POWER2" => Ok(EV_KEY::KEY_POWER2),
1814            "KEY_OPTION" => Ok(EV_KEY::KEY_OPTION),
1815            "KEY_INFO" => Ok(EV_KEY::KEY_INFO),
1816            "KEY_TIME" => Ok(EV_KEY::KEY_TIME),
1817            "KEY_VENDOR" => Ok(EV_KEY::KEY_VENDOR),
1818            "KEY_ARCHIVE" => Ok(EV_KEY::KEY_ARCHIVE),
1819            "KEY_PROGRAM" => Ok(EV_KEY::KEY_PROGRAM),
1820            "KEY_CHANNEL" => Ok(EV_KEY::KEY_CHANNEL),
1821            "KEY_FAVORITES" => Ok(EV_KEY::KEY_FAVORITES),
1822            "KEY_EPG" => Ok(EV_KEY::KEY_EPG),
1823            "KEY_PVR" => Ok(EV_KEY::KEY_PVR),
1824            "KEY_MHP" => Ok(EV_KEY::KEY_MHP),
1825            "KEY_LANGUAGE" => Ok(EV_KEY::KEY_LANGUAGE),
1826            "KEY_TITLE" => Ok(EV_KEY::KEY_TITLE),
1827            "KEY_SUBTITLE" => Ok(EV_KEY::KEY_SUBTITLE),
1828            "KEY_ANGLE" => Ok(EV_KEY::KEY_ANGLE),
1829            "KEY_FULL_SCREEN" => Ok(EV_KEY::KEY_FULL_SCREEN),
1830            "KEY_MODE" => Ok(EV_KEY::KEY_MODE),
1831            "KEY_KEYBOARD" => Ok(EV_KEY::KEY_KEYBOARD),
1832            "KEY_ASPECT_RATIO" => Ok(EV_KEY::KEY_ASPECT_RATIO),
1833            "KEY_PC" => Ok(EV_KEY::KEY_PC),
1834            "KEY_TV" => Ok(EV_KEY::KEY_TV),
1835            "KEY_TV2" => Ok(EV_KEY::KEY_TV2),
1836            "KEY_VCR" => Ok(EV_KEY::KEY_VCR),
1837            "KEY_VCR2" => Ok(EV_KEY::KEY_VCR2),
1838            "KEY_SAT" => Ok(EV_KEY::KEY_SAT),
1839            "KEY_SAT2" => Ok(EV_KEY::KEY_SAT2),
1840            "KEY_CD" => Ok(EV_KEY::KEY_CD),
1841            "KEY_TAPE" => Ok(EV_KEY::KEY_TAPE),
1842            "KEY_RADIO" => Ok(EV_KEY::KEY_RADIO),
1843            "KEY_TUNER" => Ok(EV_KEY::KEY_TUNER),
1844            "KEY_PLAYER" => Ok(EV_KEY::KEY_PLAYER),
1845            "KEY_TEXT" => Ok(EV_KEY::KEY_TEXT),
1846            "KEY_DVD" => Ok(EV_KEY::KEY_DVD),
1847            "KEY_AUX" => Ok(EV_KEY::KEY_AUX),
1848            "KEY_MP3" => Ok(EV_KEY::KEY_MP3),
1849            "KEY_AUDIO" => Ok(EV_KEY::KEY_AUDIO),
1850            "KEY_VIDEO" => Ok(EV_KEY::KEY_VIDEO),
1851            "KEY_DIRECTORY" => Ok(EV_KEY::KEY_DIRECTORY),
1852            "KEY_LIST" => Ok(EV_KEY::KEY_LIST),
1853            "KEY_MEMO" => Ok(EV_KEY::KEY_MEMO),
1854            "KEY_CALENDAR" => Ok(EV_KEY::KEY_CALENDAR),
1855            "KEY_RED" => Ok(EV_KEY::KEY_RED),
1856            "KEY_GREEN" => Ok(EV_KEY::KEY_GREEN),
1857            "KEY_YELLOW" => Ok(EV_KEY::KEY_YELLOW),
1858            "KEY_BLUE" => Ok(EV_KEY::KEY_BLUE),
1859            "KEY_CHANNELUP" => Ok(EV_KEY::KEY_CHANNELUP),
1860            "KEY_CHANNELDOWN" => Ok(EV_KEY::KEY_CHANNELDOWN),
1861            "KEY_FIRST" => Ok(EV_KEY::KEY_FIRST),
1862            "KEY_LAST" => Ok(EV_KEY::KEY_LAST),
1863            "KEY_AB" => Ok(EV_KEY::KEY_AB),
1864            "KEY_NEXT" => Ok(EV_KEY::KEY_NEXT),
1865            "KEY_RESTART" => Ok(EV_KEY::KEY_RESTART),
1866            "KEY_SLOW" => Ok(EV_KEY::KEY_SLOW),
1867            "KEY_SHUFFLE" => Ok(EV_KEY::KEY_SHUFFLE),
1868            "KEY_BREAK" => Ok(EV_KEY::KEY_BREAK),
1869            "KEY_PREVIOUS" => Ok(EV_KEY::KEY_PREVIOUS),
1870            "KEY_DIGITS" => Ok(EV_KEY::KEY_DIGITS),
1871            "KEY_TEEN" => Ok(EV_KEY::KEY_TEEN),
1872            "KEY_TWEN" => Ok(EV_KEY::KEY_TWEN),
1873            "KEY_VIDEOPHONE" => Ok(EV_KEY::KEY_VIDEOPHONE),
1874            "KEY_GAMES" => Ok(EV_KEY::KEY_GAMES),
1875            "KEY_ZOOMIN" => Ok(EV_KEY::KEY_ZOOMIN),
1876            "KEY_ZOOMOUT" => Ok(EV_KEY::KEY_ZOOMOUT),
1877            "KEY_ZOOMRESET" => Ok(EV_KEY::KEY_ZOOMRESET),
1878            "KEY_WORDPROCESSOR" => Ok(EV_KEY::KEY_WORDPROCESSOR),
1879            "KEY_EDITOR" => Ok(EV_KEY::KEY_EDITOR),
1880            "KEY_SPREADSHEET" => Ok(EV_KEY::KEY_SPREADSHEET),
1881            "KEY_GRAPHICSEDITOR" => Ok(EV_KEY::KEY_GRAPHICSEDITOR),
1882            "KEY_PRESENTATION" => Ok(EV_KEY::KEY_PRESENTATION),
1883            "KEY_DATABASE" => Ok(EV_KEY::KEY_DATABASE),
1884            "KEY_NEWS" => Ok(EV_KEY::KEY_NEWS),
1885            "KEY_VOICEMAIL" => Ok(EV_KEY::KEY_VOICEMAIL),
1886            "KEY_ADDRESSBOOK" => Ok(EV_KEY::KEY_ADDRESSBOOK),
1887            "KEY_MESSENGER" => Ok(EV_KEY::KEY_MESSENGER),
1888            "KEY_DISPLAYTOGGLE" => Ok(EV_KEY::KEY_DISPLAYTOGGLE),
1889            "KEY_SPELLCHECK" => Ok(EV_KEY::KEY_SPELLCHECK),
1890            "KEY_LOGOFF" => Ok(EV_KEY::KEY_LOGOFF),
1891            "KEY_DOLLAR" => Ok(EV_KEY::KEY_DOLLAR),
1892            "KEY_EURO" => Ok(EV_KEY::KEY_EURO),
1893            "KEY_FRAMEBACK" => Ok(EV_KEY::KEY_FRAMEBACK),
1894            "KEY_FRAMEFORWARD" => Ok(EV_KEY::KEY_FRAMEFORWARD),
1895            "KEY_CONTEXT_MENU" => Ok(EV_KEY::KEY_CONTEXT_MENU),
1896            "KEY_MEDIA_REPEAT" => Ok(EV_KEY::KEY_MEDIA_REPEAT),
1897            "KEY_10CHANNELSUP" => Ok(EV_KEY::KEY_10CHANNELSUP),
1898            "KEY_10CHANNELSDOWN" => Ok(EV_KEY::KEY_10CHANNELSDOWN),
1899            "KEY_IMAGES" => Ok(EV_KEY::KEY_IMAGES),
1900            "KEY_NOTIFICATION_CENTER" => Ok(EV_KEY::KEY_NOTIFICATION_CENTER),
1901            "KEY_PICKUP_PHONE" => Ok(EV_KEY::KEY_PICKUP_PHONE),
1902            "KEY_HANGUP_PHONE" => Ok(EV_KEY::KEY_HANGUP_PHONE),
1903            "KEY_DEL_EOL" => Ok(EV_KEY::KEY_DEL_EOL),
1904            "KEY_DEL_EOS" => Ok(EV_KEY::KEY_DEL_EOS),
1905            "KEY_INS_LINE" => Ok(EV_KEY::KEY_INS_LINE),
1906            "KEY_DEL_LINE" => Ok(EV_KEY::KEY_DEL_LINE),
1907            "KEY_FN" => Ok(EV_KEY::KEY_FN),
1908            "KEY_FN_ESC" => Ok(EV_KEY::KEY_FN_ESC),
1909            "KEY_FN_F1" => Ok(EV_KEY::KEY_FN_F1),
1910            "KEY_FN_F2" => Ok(EV_KEY::KEY_FN_F2),
1911            "KEY_FN_F3" => Ok(EV_KEY::KEY_FN_F3),
1912            "KEY_FN_F4" => Ok(EV_KEY::KEY_FN_F4),
1913            "KEY_FN_F5" => Ok(EV_KEY::KEY_FN_F5),
1914            "KEY_FN_F6" => Ok(EV_KEY::KEY_FN_F6),
1915            "KEY_FN_F7" => Ok(EV_KEY::KEY_FN_F7),
1916            "KEY_FN_F8" => Ok(EV_KEY::KEY_FN_F8),
1917            "KEY_FN_F9" => Ok(EV_KEY::KEY_FN_F9),
1918            "KEY_FN_F10" => Ok(EV_KEY::KEY_FN_F10),
1919            "KEY_FN_F11" => Ok(EV_KEY::KEY_FN_F11),
1920            "KEY_FN_F12" => Ok(EV_KEY::KEY_FN_F12),
1921            "KEY_FN_1" => Ok(EV_KEY::KEY_FN_1),
1922            "KEY_FN_2" => Ok(EV_KEY::KEY_FN_2),
1923            "KEY_FN_D" => Ok(EV_KEY::KEY_FN_D),
1924            "KEY_FN_E" => Ok(EV_KEY::KEY_FN_E),
1925            "KEY_FN_F" => Ok(EV_KEY::KEY_FN_F),
1926            "KEY_FN_S" => Ok(EV_KEY::KEY_FN_S),
1927            "KEY_FN_B" => Ok(EV_KEY::KEY_FN_B),
1928            "KEY_FN_RIGHT_SHIFT" => Ok(EV_KEY::KEY_FN_RIGHT_SHIFT),
1929            "KEY_BRL_DOT1" => Ok(EV_KEY::KEY_BRL_DOT1),
1930            "KEY_BRL_DOT2" => Ok(EV_KEY::KEY_BRL_DOT2),
1931            "KEY_BRL_DOT3" => Ok(EV_KEY::KEY_BRL_DOT3),
1932            "KEY_BRL_DOT4" => Ok(EV_KEY::KEY_BRL_DOT4),
1933            "KEY_BRL_DOT5" => Ok(EV_KEY::KEY_BRL_DOT5),
1934            "KEY_BRL_DOT6" => Ok(EV_KEY::KEY_BRL_DOT6),
1935            "KEY_BRL_DOT7" => Ok(EV_KEY::KEY_BRL_DOT7),
1936            "KEY_BRL_DOT8" => Ok(EV_KEY::KEY_BRL_DOT8),
1937            "KEY_BRL_DOT9" => Ok(EV_KEY::KEY_BRL_DOT9),
1938            "KEY_BRL_DOT10" => Ok(EV_KEY::KEY_BRL_DOT10),
1939            "KEY_NUMERIC_0" => Ok(EV_KEY::KEY_NUMERIC_0),
1940            "KEY_NUMERIC_1" => Ok(EV_KEY::KEY_NUMERIC_1),
1941            "KEY_NUMERIC_2" => Ok(EV_KEY::KEY_NUMERIC_2),
1942            "KEY_NUMERIC_3" => Ok(EV_KEY::KEY_NUMERIC_3),
1943            "KEY_NUMERIC_4" => Ok(EV_KEY::KEY_NUMERIC_4),
1944            "KEY_NUMERIC_5" => Ok(EV_KEY::KEY_NUMERIC_5),
1945            "KEY_NUMERIC_6" => Ok(EV_KEY::KEY_NUMERIC_6),
1946            "KEY_NUMERIC_7" => Ok(EV_KEY::KEY_NUMERIC_7),
1947            "KEY_NUMERIC_8" => Ok(EV_KEY::KEY_NUMERIC_8),
1948            "KEY_NUMERIC_9" => Ok(EV_KEY::KEY_NUMERIC_9),
1949            "KEY_NUMERIC_STAR" => Ok(EV_KEY::KEY_NUMERIC_STAR),
1950            "KEY_NUMERIC_POUND" => Ok(EV_KEY::KEY_NUMERIC_POUND),
1951            "KEY_NUMERIC_A" => Ok(EV_KEY::KEY_NUMERIC_A),
1952            "KEY_NUMERIC_B" => Ok(EV_KEY::KEY_NUMERIC_B),
1953            "KEY_NUMERIC_C" => Ok(EV_KEY::KEY_NUMERIC_C),
1954            "KEY_NUMERIC_D" => Ok(EV_KEY::KEY_NUMERIC_D),
1955            "KEY_CAMERA_FOCUS" => Ok(EV_KEY::KEY_CAMERA_FOCUS),
1956            "KEY_WPS_BUTTON" => Ok(EV_KEY::KEY_WPS_BUTTON),
1957            "KEY_TOUCHPAD_TOGGLE" => Ok(EV_KEY::KEY_TOUCHPAD_TOGGLE),
1958            "KEY_TOUCHPAD_ON" => Ok(EV_KEY::KEY_TOUCHPAD_ON),
1959            "KEY_TOUCHPAD_OFF" => Ok(EV_KEY::KEY_TOUCHPAD_OFF),
1960            "KEY_CAMERA_ZOOMIN" => Ok(EV_KEY::KEY_CAMERA_ZOOMIN),
1961            "KEY_CAMERA_ZOOMOUT" => Ok(EV_KEY::KEY_CAMERA_ZOOMOUT),
1962            "KEY_CAMERA_UP" => Ok(EV_KEY::KEY_CAMERA_UP),
1963            "KEY_CAMERA_DOWN" => Ok(EV_KEY::KEY_CAMERA_DOWN),
1964            "KEY_CAMERA_LEFT" => Ok(EV_KEY::KEY_CAMERA_LEFT),
1965            "KEY_CAMERA_RIGHT" => Ok(EV_KEY::KEY_CAMERA_RIGHT),
1966            "KEY_ATTENDANT_ON" => Ok(EV_KEY::KEY_ATTENDANT_ON),
1967            "KEY_ATTENDANT_OFF" => Ok(EV_KEY::KEY_ATTENDANT_OFF),
1968            "KEY_ATTENDANT_TOGGLE" => Ok(EV_KEY::KEY_ATTENDANT_TOGGLE),
1969            "KEY_LIGHTS_TOGGLE" => Ok(EV_KEY::KEY_LIGHTS_TOGGLE),
1970            "KEY_ALS_TOGGLE" => Ok(EV_KEY::KEY_ALS_TOGGLE),
1971            "KEY_ROTATE_LOCK_TOGGLE" => Ok(EV_KEY::KEY_ROTATE_LOCK_TOGGLE),
1972            "KEY_REFRESH_RATE_TOGGLE" => Ok(EV_KEY::KEY_REFRESH_RATE_TOGGLE),
1973            "KEY_BUTTONCONFIG" => Ok(EV_KEY::KEY_BUTTONCONFIG),
1974            "KEY_TASKMANAGER" => Ok(EV_KEY::KEY_TASKMANAGER),
1975            "KEY_JOURNAL" => Ok(EV_KEY::KEY_JOURNAL),
1976            "KEY_CONTROLPANEL" => Ok(EV_KEY::KEY_CONTROLPANEL),
1977            "KEY_APPSELECT" => Ok(EV_KEY::KEY_APPSELECT),
1978            "KEY_SCREENSAVER" => Ok(EV_KEY::KEY_SCREENSAVER),
1979            "KEY_VOICECOMMAND" => Ok(EV_KEY::KEY_VOICECOMMAND),
1980            "KEY_ASSISTANT" => Ok(EV_KEY::KEY_ASSISTANT),
1981            "KEY_KBD_LAYOUT_NEXT" => Ok(EV_KEY::KEY_KBD_LAYOUT_NEXT),
1982            "KEY_EMOJI_PICKER" => Ok(EV_KEY::KEY_EMOJI_PICKER),
1983            "KEY_DICTATE" => Ok(EV_KEY::KEY_DICTATE),
1984            "KEY_CAMERA_ACCESS_ENABLE" => Ok(EV_KEY::KEY_CAMERA_ACCESS_ENABLE),
1985            "KEY_CAMERA_ACCESS_DISABLE" => Ok(EV_KEY::KEY_CAMERA_ACCESS_DISABLE),
1986            "KEY_CAMERA_ACCESS_TOGGLE" => Ok(EV_KEY::KEY_CAMERA_ACCESS_TOGGLE),
1987            "KEY_ACCESSIBILITY" => Ok(EV_KEY::KEY_ACCESSIBILITY),
1988            "KEY_DO_NOT_DISTURB" => Ok(EV_KEY::KEY_DO_NOT_DISTURB),
1989            "KEY_BRIGHTNESS_MIN" => Ok(EV_KEY::KEY_BRIGHTNESS_MIN),
1990            "KEY_BRIGHTNESS_MAX" => Ok(EV_KEY::KEY_BRIGHTNESS_MAX),
1991            "KEY_KBDINPUTASSIST_PREV" => Ok(EV_KEY::KEY_KBDINPUTASSIST_PREV),
1992            "KEY_KBDINPUTASSIST_NEXT" => Ok(EV_KEY::KEY_KBDINPUTASSIST_NEXT),
1993            "KEY_KBDINPUTASSIST_PREVGROUP" => Ok(EV_KEY::KEY_KBDINPUTASSIST_PREVGROUP),
1994            "KEY_KBDINPUTASSIST_NEXTGROUP" => Ok(EV_KEY::KEY_KBDINPUTASSIST_NEXTGROUP),
1995            "KEY_KBDINPUTASSIST_ACCEPT" => Ok(EV_KEY::KEY_KBDINPUTASSIST_ACCEPT),
1996            "KEY_KBDINPUTASSIST_CANCEL" => Ok(EV_KEY::KEY_KBDINPUTASSIST_CANCEL),
1997            "KEY_RIGHT_UP" => Ok(EV_KEY::KEY_RIGHT_UP),
1998            "KEY_RIGHT_DOWN" => Ok(EV_KEY::KEY_RIGHT_DOWN),
1999            "KEY_LEFT_UP" => Ok(EV_KEY::KEY_LEFT_UP),
2000            "KEY_LEFT_DOWN" => Ok(EV_KEY::KEY_LEFT_DOWN),
2001            "KEY_ROOT_MENU" => Ok(EV_KEY::KEY_ROOT_MENU),
2002            "KEY_MEDIA_TOP_MENU" => Ok(EV_KEY::KEY_MEDIA_TOP_MENU),
2003            "KEY_NUMERIC_11" => Ok(EV_KEY::KEY_NUMERIC_11),
2004            "KEY_NUMERIC_12" => Ok(EV_KEY::KEY_NUMERIC_12),
2005            "KEY_AUDIO_DESC" => Ok(EV_KEY::KEY_AUDIO_DESC),
2006            "KEY_3D_MODE" => Ok(EV_KEY::KEY_3D_MODE),
2007            "KEY_NEXT_FAVORITE" => Ok(EV_KEY::KEY_NEXT_FAVORITE),
2008            "KEY_STOP_RECORD" => Ok(EV_KEY::KEY_STOP_RECORD),
2009            "KEY_PAUSE_RECORD" => Ok(EV_KEY::KEY_PAUSE_RECORD),
2010            "KEY_VOD" => Ok(EV_KEY::KEY_VOD),
2011            "KEY_UNMUTE" => Ok(EV_KEY::KEY_UNMUTE),
2012            "KEY_FASTREVERSE" => Ok(EV_KEY::KEY_FASTREVERSE),
2013            "KEY_SLOWREVERSE" => Ok(EV_KEY::KEY_SLOWREVERSE),
2014            "KEY_DATA" => Ok(EV_KEY::KEY_DATA),
2015            "KEY_ONSCREEN_KEYBOARD" => Ok(EV_KEY::KEY_ONSCREEN_KEYBOARD),
2016            "KEY_PRIVACY_SCREEN_TOGGLE" => Ok(EV_KEY::KEY_PRIVACY_SCREEN_TOGGLE),
2017            "KEY_SELECTIVE_SCREENSHOT" => Ok(EV_KEY::KEY_SELECTIVE_SCREENSHOT),
2018            "KEY_NEXT_ELEMENT" => Ok(EV_KEY::KEY_NEXT_ELEMENT),
2019            "KEY_PREVIOUS_ELEMENT" => Ok(EV_KEY::KEY_PREVIOUS_ELEMENT),
2020            "KEY_AUTOPILOT_ENGAGE_TOGGLE" => Ok(EV_KEY::KEY_AUTOPILOT_ENGAGE_TOGGLE),
2021            "KEY_MARK_WAYPOINT" => Ok(EV_KEY::KEY_MARK_WAYPOINT),
2022            "KEY_SOS" => Ok(EV_KEY::KEY_SOS),
2023            "KEY_NAV_CHART" => Ok(EV_KEY::KEY_NAV_CHART),
2024            "KEY_FISHING_CHART" => Ok(EV_KEY::KEY_FISHING_CHART),
2025            "KEY_SINGLE_RANGE_RADAR" => Ok(EV_KEY::KEY_SINGLE_RANGE_RADAR),
2026            "KEY_DUAL_RANGE_RADAR" => Ok(EV_KEY::KEY_DUAL_RANGE_RADAR),
2027            "KEY_RADAR_OVERLAY" => Ok(EV_KEY::KEY_RADAR_OVERLAY),
2028            "KEY_TRADITIONAL_SONAR" => Ok(EV_KEY::KEY_TRADITIONAL_SONAR),
2029            "KEY_CLEARVU_SONAR" => Ok(EV_KEY::KEY_CLEARVU_SONAR),
2030            "KEY_SIDEVU_SONAR" => Ok(EV_KEY::KEY_SIDEVU_SONAR),
2031            "KEY_NAV_INFO" => Ok(EV_KEY::KEY_NAV_INFO),
2032            "KEY_BRIGHTNESS_MENU" => Ok(EV_KEY::KEY_BRIGHTNESS_MENU),
2033            "KEY_MACRO1" => Ok(EV_KEY::KEY_MACRO1),
2034            "KEY_MACRO2" => Ok(EV_KEY::KEY_MACRO2),
2035            "KEY_MACRO3" => Ok(EV_KEY::KEY_MACRO3),
2036            "KEY_MACRO4" => Ok(EV_KEY::KEY_MACRO4),
2037            "KEY_MACRO5" => Ok(EV_KEY::KEY_MACRO5),
2038            "KEY_MACRO6" => Ok(EV_KEY::KEY_MACRO6),
2039            "KEY_MACRO7" => Ok(EV_KEY::KEY_MACRO7),
2040            "KEY_MACRO8" => Ok(EV_KEY::KEY_MACRO8),
2041            "KEY_MACRO9" => Ok(EV_KEY::KEY_MACRO9),
2042            "KEY_MACRO10" => Ok(EV_KEY::KEY_MACRO10),
2043            "KEY_MACRO11" => Ok(EV_KEY::KEY_MACRO11),
2044            "KEY_MACRO12" => Ok(EV_KEY::KEY_MACRO12),
2045            "KEY_MACRO13" => Ok(EV_KEY::KEY_MACRO13),
2046            "KEY_MACRO14" => Ok(EV_KEY::KEY_MACRO14),
2047            "KEY_MACRO15" => Ok(EV_KEY::KEY_MACRO15),
2048            "KEY_MACRO16" => Ok(EV_KEY::KEY_MACRO16),
2049            "KEY_MACRO17" => Ok(EV_KEY::KEY_MACRO17),
2050            "KEY_MACRO18" => Ok(EV_KEY::KEY_MACRO18),
2051            "KEY_MACRO19" => Ok(EV_KEY::KEY_MACRO19),
2052            "KEY_MACRO20" => Ok(EV_KEY::KEY_MACRO20),
2053            "KEY_MACRO21" => Ok(EV_KEY::KEY_MACRO21),
2054            "KEY_MACRO22" => Ok(EV_KEY::KEY_MACRO22),
2055            "KEY_MACRO23" => Ok(EV_KEY::KEY_MACRO23),
2056            "KEY_MACRO24" => Ok(EV_KEY::KEY_MACRO24),
2057            "KEY_MACRO25" => Ok(EV_KEY::KEY_MACRO25),
2058            "KEY_MACRO26" => Ok(EV_KEY::KEY_MACRO26),
2059            "KEY_MACRO27" => Ok(EV_KEY::KEY_MACRO27),
2060            "KEY_MACRO28" => Ok(EV_KEY::KEY_MACRO28),
2061            "KEY_MACRO29" => Ok(EV_KEY::KEY_MACRO29),
2062            "KEY_MACRO30" => Ok(EV_KEY::KEY_MACRO30),
2063            "KEY_MACRO_RECORD_START" => Ok(EV_KEY::KEY_MACRO_RECORD_START),
2064            "KEY_MACRO_RECORD_STOP" => Ok(EV_KEY::KEY_MACRO_RECORD_STOP),
2065            "KEY_MACRO_PRESET_CYCLE" => Ok(EV_KEY::KEY_MACRO_PRESET_CYCLE),
2066            "KEY_MACRO_PRESET1" => Ok(EV_KEY::KEY_MACRO_PRESET1),
2067            "KEY_MACRO_PRESET2" => Ok(EV_KEY::KEY_MACRO_PRESET2),
2068            "KEY_MACRO_PRESET3" => Ok(EV_KEY::KEY_MACRO_PRESET3),
2069            "KEY_KBD_LCD_MENU1" => Ok(EV_KEY::KEY_KBD_LCD_MENU1),
2070            "KEY_KBD_LCD_MENU2" => Ok(EV_KEY::KEY_KBD_LCD_MENU2),
2071            "KEY_KBD_LCD_MENU3" => Ok(EV_KEY::KEY_KBD_LCD_MENU3),
2072            "KEY_KBD_LCD_MENU4" => Ok(EV_KEY::KEY_KBD_LCD_MENU4),
2073            "KEY_KBD_LCD_MENU5" => Ok(EV_KEY::KEY_KBD_LCD_MENU5),
2074            "KEY_MAX" => Ok(EV_KEY::KEY_MAX),
2075            "BTN_0" => Ok(EV_KEY::BTN_0),
2076            "BTN_1" => Ok(EV_KEY::BTN_1),
2077            "BTN_2" => Ok(EV_KEY::BTN_2),
2078            "BTN_3" => Ok(EV_KEY::BTN_3),
2079            "BTN_4" => Ok(EV_KEY::BTN_4),
2080            "BTN_5" => Ok(EV_KEY::BTN_5),
2081            "BTN_6" => Ok(EV_KEY::BTN_6),
2082            "BTN_7" => Ok(EV_KEY::BTN_7),
2083            "BTN_8" => Ok(EV_KEY::BTN_8),
2084            "BTN_9" => Ok(EV_KEY::BTN_9),
2085            "BTN_LEFT" => Ok(EV_KEY::BTN_LEFT),
2086            "BTN_RIGHT" => Ok(EV_KEY::BTN_RIGHT),
2087            "BTN_MIDDLE" => Ok(EV_KEY::BTN_MIDDLE),
2088            "BTN_SIDE" => Ok(EV_KEY::BTN_SIDE),
2089            "BTN_EXTRA" => Ok(EV_KEY::BTN_EXTRA),
2090            "BTN_FORWARD" => Ok(EV_KEY::BTN_FORWARD),
2091            "BTN_BACK" => Ok(EV_KEY::BTN_BACK),
2092            "BTN_TASK" => Ok(EV_KEY::BTN_TASK),
2093            "BTN_TRIGGER" => Ok(EV_KEY::BTN_TRIGGER),
2094            "BTN_THUMB" => Ok(EV_KEY::BTN_THUMB),
2095            "BTN_THUMB2" => Ok(EV_KEY::BTN_THUMB2),
2096            "BTN_TOP" => Ok(EV_KEY::BTN_TOP),
2097            "BTN_TOP2" => Ok(EV_KEY::BTN_TOP2),
2098            "BTN_PINKIE" => Ok(EV_KEY::BTN_PINKIE),
2099            "BTN_BASE" => Ok(EV_KEY::BTN_BASE),
2100            "BTN_BASE2" => Ok(EV_KEY::BTN_BASE2),
2101            "BTN_BASE3" => Ok(EV_KEY::BTN_BASE3),
2102            "BTN_BASE4" => Ok(EV_KEY::BTN_BASE4),
2103            "BTN_BASE5" => Ok(EV_KEY::BTN_BASE5),
2104            "BTN_BASE6" => Ok(EV_KEY::BTN_BASE6),
2105            "BTN_DEAD" => Ok(EV_KEY::BTN_DEAD),
2106            "BTN_SOUTH" => Ok(EV_KEY::BTN_SOUTH),
2107            "BTN_EAST" => Ok(EV_KEY::BTN_EAST),
2108            "BTN_C" => Ok(EV_KEY::BTN_C),
2109            "BTN_NORTH" => Ok(EV_KEY::BTN_NORTH),
2110            "BTN_WEST" => Ok(EV_KEY::BTN_WEST),
2111            "BTN_Z" => Ok(EV_KEY::BTN_Z),
2112            "BTN_TL" => Ok(EV_KEY::BTN_TL),
2113            "BTN_TR" => Ok(EV_KEY::BTN_TR),
2114            "BTN_TL2" => Ok(EV_KEY::BTN_TL2),
2115            "BTN_TR2" => Ok(EV_KEY::BTN_TR2),
2116            "BTN_SELECT" => Ok(EV_KEY::BTN_SELECT),
2117            "BTN_START" => Ok(EV_KEY::BTN_START),
2118            "BTN_MODE" => Ok(EV_KEY::BTN_MODE),
2119            "BTN_THUMBL" => Ok(EV_KEY::BTN_THUMBL),
2120            "BTN_THUMBR" => Ok(EV_KEY::BTN_THUMBR),
2121            "BTN_TOOL_PEN" => Ok(EV_KEY::BTN_TOOL_PEN),
2122            "BTN_TOOL_RUBBER" => Ok(EV_KEY::BTN_TOOL_RUBBER),
2123            "BTN_TOOL_BRUSH" => Ok(EV_KEY::BTN_TOOL_BRUSH),
2124            "BTN_TOOL_PENCIL" => Ok(EV_KEY::BTN_TOOL_PENCIL),
2125            "BTN_TOOL_AIRBRUSH" => Ok(EV_KEY::BTN_TOOL_AIRBRUSH),
2126            "BTN_TOOL_FINGER" => Ok(EV_KEY::BTN_TOOL_FINGER),
2127            "BTN_TOOL_MOUSE" => Ok(EV_KEY::BTN_TOOL_MOUSE),
2128            "BTN_TOOL_LENS" => Ok(EV_KEY::BTN_TOOL_LENS),
2129            "BTN_TOOL_QUINTTAP" => Ok(EV_KEY::BTN_TOOL_QUINTTAP),
2130            "BTN_STYLUS3" => Ok(EV_KEY::BTN_STYLUS3),
2131            "BTN_TOUCH" => Ok(EV_KEY::BTN_TOUCH),
2132            "BTN_STYLUS" => Ok(EV_KEY::BTN_STYLUS),
2133            "BTN_STYLUS2" => Ok(EV_KEY::BTN_STYLUS2),
2134            "BTN_TOOL_DOUBLETAP" => Ok(EV_KEY::BTN_TOOL_DOUBLETAP),
2135            "BTN_TOOL_TRIPLETAP" => Ok(EV_KEY::BTN_TOOL_TRIPLETAP),
2136            "BTN_TOOL_QUADTAP" => Ok(EV_KEY::BTN_TOOL_QUADTAP),
2137            "BTN_GEAR_DOWN" => Ok(EV_KEY::BTN_GEAR_DOWN),
2138            "BTN_GEAR_UP" => Ok(EV_KEY::BTN_GEAR_UP),
2139            "BTN_DPAD_UP" => Ok(EV_KEY::BTN_DPAD_UP),
2140            "BTN_DPAD_DOWN" => Ok(EV_KEY::BTN_DPAD_DOWN),
2141            "BTN_DPAD_LEFT" => Ok(EV_KEY::BTN_DPAD_LEFT),
2142            "BTN_DPAD_RIGHT" => Ok(EV_KEY::BTN_DPAD_RIGHT),
2143            "BTN_TRIGGER_HAPPY1" => Ok(EV_KEY::BTN_TRIGGER_HAPPY1),
2144            "BTN_TRIGGER_HAPPY2" => Ok(EV_KEY::BTN_TRIGGER_HAPPY2),
2145            "BTN_TRIGGER_HAPPY3" => Ok(EV_KEY::BTN_TRIGGER_HAPPY3),
2146            "BTN_TRIGGER_HAPPY4" => Ok(EV_KEY::BTN_TRIGGER_HAPPY4),
2147            "BTN_TRIGGER_HAPPY5" => Ok(EV_KEY::BTN_TRIGGER_HAPPY5),
2148            "BTN_TRIGGER_HAPPY6" => Ok(EV_KEY::BTN_TRIGGER_HAPPY6),
2149            "BTN_TRIGGER_HAPPY7" => Ok(EV_KEY::BTN_TRIGGER_HAPPY7),
2150            "BTN_TRIGGER_HAPPY8" => Ok(EV_KEY::BTN_TRIGGER_HAPPY8),
2151            "BTN_TRIGGER_HAPPY9" => Ok(EV_KEY::BTN_TRIGGER_HAPPY9),
2152            "BTN_TRIGGER_HAPPY10" => Ok(EV_KEY::BTN_TRIGGER_HAPPY10),
2153            "BTN_TRIGGER_HAPPY11" => Ok(EV_KEY::BTN_TRIGGER_HAPPY11),
2154            "BTN_TRIGGER_HAPPY12" => Ok(EV_KEY::BTN_TRIGGER_HAPPY12),
2155            "BTN_TRIGGER_HAPPY13" => Ok(EV_KEY::BTN_TRIGGER_HAPPY13),
2156            "BTN_TRIGGER_HAPPY14" => Ok(EV_KEY::BTN_TRIGGER_HAPPY14),
2157            "BTN_TRIGGER_HAPPY15" => Ok(EV_KEY::BTN_TRIGGER_HAPPY15),
2158            "BTN_TRIGGER_HAPPY16" => Ok(EV_KEY::BTN_TRIGGER_HAPPY16),
2159            "BTN_TRIGGER_HAPPY17" => Ok(EV_KEY::BTN_TRIGGER_HAPPY17),
2160            "BTN_TRIGGER_HAPPY18" => Ok(EV_KEY::BTN_TRIGGER_HAPPY18),
2161            "BTN_TRIGGER_HAPPY19" => Ok(EV_KEY::BTN_TRIGGER_HAPPY19),
2162            "BTN_TRIGGER_HAPPY20" => Ok(EV_KEY::BTN_TRIGGER_HAPPY20),
2163            "BTN_TRIGGER_HAPPY21" => Ok(EV_KEY::BTN_TRIGGER_HAPPY21),
2164            "BTN_TRIGGER_HAPPY22" => Ok(EV_KEY::BTN_TRIGGER_HAPPY22),
2165            "BTN_TRIGGER_HAPPY23" => Ok(EV_KEY::BTN_TRIGGER_HAPPY23),
2166            "BTN_TRIGGER_HAPPY24" => Ok(EV_KEY::BTN_TRIGGER_HAPPY24),
2167            "BTN_TRIGGER_HAPPY25" => Ok(EV_KEY::BTN_TRIGGER_HAPPY25),
2168            "BTN_TRIGGER_HAPPY26" => Ok(EV_KEY::BTN_TRIGGER_HAPPY26),
2169            "BTN_TRIGGER_HAPPY27" => Ok(EV_KEY::BTN_TRIGGER_HAPPY27),
2170            "BTN_TRIGGER_HAPPY28" => Ok(EV_KEY::BTN_TRIGGER_HAPPY28),
2171            "BTN_TRIGGER_HAPPY29" => Ok(EV_KEY::BTN_TRIGGER_HAPPY29),
2172            "BTN_TRIGGER_HAPPY30" => Ok(EV_KEY::BTN_TRIGGER_HAPPY30),
2173            "BTN_TRIGGER_HAPPY31" => Ok(EV_KEY::BTN_TRIGGER_HAPPY31),
2174            "BTN_TRIGGER_HAPPY32" => Ok(EV_KEY::BTN_TRIGGER_HAPPY32),
2175            "BTN_TRIGGER_HAPPY33" => Ok(EV_KEY::BTN_TRIGGER_HAPPY33),
2176            "BTN_TRIGGER_HAPPY34" => Ok(EV_KEY::BTN_TRIGGER_HAPPY34),
2177            "BTN_TRIGGER_HAPPY35" => Ok(EV_KEY::BTN_TRIGGER_HAPPY35),
2178            "BTN_TRIGGER_HAPPY36" => Ok(EV_KEY::BTN_TRIGGER_HAPPY36),
2179            "BTN_TRIGGER_HAPPY37" => Ok(EV_KEY::BTN_TRIGGER_HAPPY37),
2180            "BTN_TRIGGER_HAPPY38" => Ok(EV_KEY::BTN_TRIGGER_HAPPY38),
2181            "BTN_TRIGGER_HAPPY39" => Ok(EV_KEY::BTN_TRIGGER_HAPPY39),
2182            "BTN_TRIGGER_HAPPY40" => Ok(EV_KEY::BTN_TRIGGER_HAPPY40),
2183            _ => Err(()),
2184        }
2185    }
2186}
2187
2188impl std::fmt::Display for EV_KEY {
2189    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2190        write!(f, "{:?}", self)
2191    }
2192}
2193
2194#[allow(non_camel_case_types)]
2195#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
2196#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2197pub enum EV_LED {
2198    LED_NUML = 0,
2199    LED_CAPSL = 1,
2200    LED_SCROLLL = 2,
2201    LED_COMPOSE = 3,
2202    LED_KANA = 4,
2203    LED_SLEEP = 5,
2204    LED_SUSPEND = 6,
2205    LED_MUTE = 7,
2206    LED_MISC = 8,
2207    LED_MAIL = 9,
2208    LED_CHARGING = 10,
2209    LED_MAX = 15,
2210}
2211
2212pub const fn int_to_ev_led(code: u32) -> Option<EV_LED> {
2213    match code {
2214        0 => Some(EV_LED::LED_NUML),
2215        1 => Some(EV_LED::LED_CAPSL),
2216        2 => Some(EV_LED::LED_SCROLLL),
2217        3 => Some(EV_LED::LED_COMPOSE),
2218        4 => Some(EV_LED::LED_KANA),
2219        5 => Some(EV_LED::LED_SLEEP),
2220        6 => Some(EV_LED::LED_SUSPEND),
2221        7 => Some(EV_LED::LED_MUTE),
2222        8 => Some(EV_LED::LED_MISC),
2223        9 => Some(EV_LED::LED_MAIL),
2224        10 => Some(EV_LED::LED_CHARGING),
2225        15 => Some(EV_LED::LED_MAX),
2226        _ => None,
2227    }
2228}
2229
2230impl std::str::FromStr for EV_LED {
2231    type Err = ();
2232    fn from_str(s: &str) -> Result<Self, Self::Err> {
2233        match s {
2234            "LED_NUML" => Ok(EV_LED::LED_NUML),
2235            "LED_CAPSL" => Ok(EV_LED::LED_CAPSL),
2236            "LED_SCROLLL" => Ok(EV_LED::LED_SCROLLL),
2237            "LED_COMPOSE" => Ok(EV_LED::LED_COMPOSE),
2238            "LED_KANA" => Ok(EV_LED::LED_KANA),
2239            "LED_SLEEP" => Ok(EV_LED::LED_SLEEP),
2240            "LED_SUSPEND" => Ok(EV_LED::LED_SUSPEND),
2241            "LED_MUTE" => Ok(EV_LED::LED_MUTE),
2242            "LED_MISC" => Ok(EV_LED::LED_MISC),
2243            "LED_MAIL" => Ok(EV_LED::LED_MAIL),
2244            "LED_CHARGING" => Ok(EV_LED::LED_CHARGING),
2245            "LED_MAX" => Ok(EV_LED::LED_MAX),
2246            _ => Err(()),
2247        }
2248    }
2249}
2250
2251impl std::fmt::Display for EV_LED {
2252    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2253        write!(f, "{:?}", self)
2254    }
2255}
2256
2257#[allow(non_camel_case_types)]
2258#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
2259#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2260pub enum EV_SND {
2261    SND_CLICK = 0,
2262    SND_BELL = 1,
2263    SND_TONE = 2,
2264    SND_MAX = 7,
2265}
2266
2267pub const fn int_to_ev_snd(code: u32) -> Option<EV_SND> {
2268    match code {
2269        0 => Some(EV_SND::SND_CLICK),
2270        1 => Some(EV_SND::SND_BELL),
2271        2 => Some(EV_SND::SND_TONE),
2272        7 => Some(EV_SND::SND_MAX),
2273        _ => None,
2274    }
2275}
2276
2277impl std::str::FromStr for EV_SND {
2278    type Err = ();
2279    fn from_str(s: &str) -> Result<Self, Self::Err> {
2280        match s {
2281            "SND_CLICK" => Ok(EV_SND::SND_CLICK),
2282            "SND_BELL" => Ok(EV_SND::SND_BELL),
2283            "SND_TONE" => Ok(EV_SND::SND_TONE),
2284            "SND_MAX" => Ok(EV_SND::SND_MAX),
2285            _ => Err(()),
2286        }
2287    }
2288}
2289
2290impl std::fmt::Display for EV_SND {
2291    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2292        write!(f, "{:?}", self)
2293    }
2294}
2295
2296#[allow(non_camel_case_types)]
2297#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
2298#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2299pub enum EV_MSC {
2300    MSC_SERIAL = 0,
2301    MSC_PULSELED = 1,
2302    MSC_GESTURE = 2,
2303    MSC_RAW = 3,
2304    MSC_SCAN = 4,
2305    MSC_TIMESTAMP = 5,
2306    MSC_MAX = 7,
2307}
2308
2309pub const fn int_to_ev_msc(code: u32) -> Option<EV_MSC> {
2310    match code {
2311        0 => Some(EV_MSC::MSC_SERIAL),
2312        1 => Some(EV_MSC::MSC_PULSELED),
2313        2 => Some(EV_MSC::MSC_GESTURE),
2314        3 => Some(EV_MSC::MSC_RAW),
2315        4 => Some(EV_MSC::MSC_SCAN),
2316        5 => Some(EV_MSC::MSC_TIMESTAMP),
2317        7 => Some(EV_MSC::MSC_MAX),
2318        _ => None,
2319    }
2320}
2321
2322impl std::str::FromStr for EV_MSC {
2323    type Err = ();
2324    fn from_str(s: &str) -> Result<Self, Self::Err> {
2325        match s {
2326            "MSC_SERIAL" => Ok(EV_MSC::MSC_SERIAL),
2327            "MSC_PULSELED" => Ok(EV_MSC::MSC_PULSELED),
2328            "MSC_GESTURE" => Ok(EV_MSC::MSC_GESTURE),
2329            "MSC_RAW" => Ok(EV_MSC::MSC_RAW),
2330            "MSC_SCAN" => Ok(EV_MSC::MSC_SCAN),
2331            "MSC_TIMESTAMP" => Ok(EV_MSC::MSC_TIMESTAMP),
2332            "MSC_MAX" => Ok(EV_MSC::MSC_MAX),
2333            _ => Err(()),
2334        }
2335    }
2336}
2337
2338impl std::fmt::Display for EV_MSC {
2339    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2340        write!(f, "{:?}", self)
2341    }
2342}
2343
2344#[allow(non_camel_case_types)]
2345#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
2346#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2347pub enum EV_SW {
2348    SW_LID = 0,
2349    SW_TABLET_MODE = 1,
2350    SW_HEADPHONE_INSERT = 2,
2351    SW_RFKILL_ALL = 3,
2352    SW_MICROPHONE_INSERT = 4,
2353    SW_DOCK = 5,
2354    SW_LINEOUT_INSERT = 6,
2355    SW_JACK_PHYSICAL_INSERT = 7,
2356    SW_VIDEOOUT_INSERT = 8,
2357    SW_CAMERA_LENS_COVER = 9,
2358    SW_KEYPAD_SLIDE = 10,
2359    SW_FRONT_PROXIMITY = 11,
2360    SW_ROTATE_LOCK = 12,
2361    SW_LINEIN_INSERT = 13,
2362    SW_MUTE_DEVICE = 14,
2363    SW_PEN_INSERTED = 15,
2364    SW_MACHINE_COVER = 16,
2365}
2366
2367impl EV_SW {
2368    pub const SW_MAX: EV_SW = EV_SW::SW_MACHINE_COVER;
2369}
2370
2371pub const fn int_to_ev_sw(code: u32) -> Option<EV_SW> {
2372    match code {
2373        0 => Some(EV_SW::SW_LID),
2374        1 => Some(EV_SW::SW_TABLET_MODE),
2375        2 => Some(EV_SW::SW_HEADPHONE_INSERT),
2376        3 => Some(EV_SW::SW_RFKILL_ALL),
2377        4 => Some(EV_SW::SW_MICROPHONE_INSERT),
2378        5 => Some(EV_SW::SW_DOCK),
2379        6 => Some(EV_SW::SW_LINEOUT_INSERT),
2380        7 => Some(EV_SW::SW_JACK_PHYSICAL_INSERT),
2381        8 => Some(EV_SW::SW_VIDEOOUT_INSERT),
2382        9 => Some(EV_SW::SW_CAMERA_LENS_COVER),
2383        10 => Some(EV_SW::SW_KEYPAD_SLIDE),
2384        11 => Some(EV_SW::SW_FRONT_PROXIMITY),
2385        12 => Some(EV_SW::SW_ROTATE_LOCK),
2386        13 => Some(EV_SW::SW_LINEIN_INSERT),
2387        14 => Some(EV_SW::SW_MUTE_DEVICE),
2388        15 => Some(EV_SW::SW_PEN_INSERTED),
2389        16 => Some(EV_SW::SW_MACHINE_COVER),
2390        _ => None,
2391    }
2392}
2393
2394impl std::str::FromStr for EV_SW {
2395    type Err = ();
2396    fn from_str(s: &str) -> Result<Self, Self::Err> {
2397        match s {
2398            "SW_LID" => Ok(EV_SW::SW_LID),
2399            "SW_TABLET_MODE" => Ok(EV_SW::SW_TABLET_MODE),
2400            "SW_HEADPHONE_INSERT" => Ok(EV_SW::SW_HEADPHONE_INSERT),
2401            "SW_RFKILL_ALL" => Ok(EV_SW::SW_RFKILL_ALL),
2402            "SW_MICROPHONE_INSERT" => Ok(EV_SW::SW_MICROPHONE_INSERT),
2403            "SW_DOCK" => Ok(EV_SW::SW_DOCK),
2404            "SW_LINEOUT_INSERT" => Ok(EV_SW::SW_LINEOUT_INSERT),
2405            "SW_JACK_PHYSICAL_INSERT" => Ok(EV_SW::SW_JACK_PHYSICAL_INSERT),
2406            "SW_VIDEOOUT_INSERT" => Ok(EV_SW::SW_VIDEOOUT_INSERT),
2407            "SW_CAMERA_LENS_COVER" => Ok(EV_SW::SW_CAMERA_LENS_COVER),
2408            "SW_KEYPAD_SLIDE" => Ok(EV_SW::SW_KEYPAD_SLIDE),
2409            "SW_FRONT_PROXIMITY" => Ok(EV_SW::SW_FRONT_PROXIMITY),
2410            "SW_ROTATE_LOCK" => Ok(EV_SW::SW_ROTATE_LOCK),
2411            "SW_LINEIN_INSERT" => Ok(EV_SW::SW_LINEIN_INSERT),
2412            "SW_MUTE_DEVICE" => Ok(EV_SW::SW_MUTE_DEVICE),
2413            "SW_PEN_INSERTED" => Ok(EV_SW::SW_PEN_INSERTED),
2414            "SW_MACHINE_COVER" => Ok(EV_SW::SW_MACHINE_COVER),
2415            _ => Err(()),
2416        }
2417    }
2418}
2419
2420impl std::fmt::Display for EV_SW {
2421    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2422        write!(f, "{:?}", self)
2423    }
2424}
2425
2426#[allow(non_camel_case_types)]
2427#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
2428#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2429pub enum EV_SYN {
2430    SYN_REPORT = 0,
2431    SYN_CONFIG = 1,
2432    SYN_MT_REPORT = 2,
2433    SYN_DROPPED = 3,
2434    SYN_MAX = 15,
2435}
2436
2437pub const fn int_to_ev_syn(code: u32) -> Option<EV_SYN> {
2438    match code {
2439        0 => Some(EV_SYN::SYN_REPORT),
2440        1 => Some(EV_SYN::SYN_CONFIG),
2441        2 => Some(EV_SYN::SYN_MT_REPORT),
2442        3 => Some(EV_SYN::SYN_DROPPED),
2443        15 => Some(EV_SYN::SYN_MAX),
2444        _ => None,
2445    }
2446}
2447
2448impl std::str::FromStr for EV_SYN {
2449    type Err = ();
2450    fn from_str(s: &str) -> Result<Self, Self::Err> {
2451        match s {
2452            "SYN_REPORT" => Ok(EV_SYN::SYN_REPORT),
2453            "SYN_CONFIG" => Ok(EV_SYN::SYN_CONFIG),
2454            "SYN_MT_REPORT" => Ok(EV_SYN::SYN_MT_REPORT),
2455            "SYN_DROPPED" => Ok(EV_SYN::SYN_DROPPED),
2456            "SYN_MAX" => Ok(EV_SYN::SYN_MAX),
2457            _ => Err(()),
2458        }
2459    }
2460}
2461
2462impl std::fmt::Display for EV_SYN {
2463    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2464        write!(f, "{:?}", self)
2465    }
2466}
2467
2468#[allow(non_camel_case_types)]
2469#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
2470#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2471pub enum EV_REP {
2472    REP_DELAY = 0,
2473    REP_PERIOD = 1,
2474}
2475
2476impl EV_REP {
2477    pub const REP_MAX: EV_REP = EV_REP::REP_PERIOD;
2478}
2479
2480pub const fn int_to_ev_rep(code: u32) -> Option<EV_REP> {
2481    match code {
2482        0 => Some(EV_REP::REP_DELAY),
2483        1 => Some(EV_REP::REP_PERIOD),
2484        _ => None,
2485    }
2486}
2487
2488impl std::str::FromStr for EV_REP {
2489    type Err = ();
2490    fn from_str(s: &str) -> Result<Self, Self::Err> {
2491        match s {
2492            "REP_DELAY" => Ok(EV_REP::REP_DELAY),
2493            "REP_PERIOD" => Ok(EV_REP::REP_PERIOD),
2494            _ => Err(()),
2495        }
2496    }
2497}
2498
2499impl std::fmt::Display for EV_REP {
2500    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2501        write!(f, "{:?}", self)
2502    }
2503}
2504
2505#[allow(non_camel_case_types)]
2506#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
2507#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2508pub enum InputProp {
2509    INPUT_PROP_POINTER = 0,
2510    INPUT_PROP_DIRECT = 1,
2511    INPUT_PROP_BUTTONPAD = 2,
2512    INPUT_PROP_SEMI_MT = 3,
2513    INPUT_PROP_TOPBUTTONPAD = 4,
2514    INPUT_PROP_POINTING_STICK = 5,
2515    INPUT_PROP_ACCELEROMETER = 6,
2516    INPUT_PROP_MAX = 31,
2517}
2518
2519pub const fn int_to_input_prop(code: u32) -> Option<InputProp> {
2520    match code {
2521        0 => Some(InputProp::INPUT_PROP_POINTER),
2522        1 => Some(InputProp::INPUT_PROP_DIRECT),
2523        2 => Some(InputProp::INPUT_PROP_BUTTONPAD),
2524        3 => Some(InputProp::INPUT_PROP_SEMI_MT),
2525        4 => Some(InputProp::INPUT_PROP_TOPBUTTONPAD),
2526        5 => Some(InputProp::INPUT_PROP_POINTING_STICK),
2527        6 => Some(InputProp::INPUT_PROP_ACCELEROMETER),
2528        31 => Some(InputProp::INPUT_PROP_MAX),
2529        _ => None,
2530    }
2531}
2532
2533impl std::str::FromStr for InputProp {
2534    type Err = ();
2535    fn from_str(s: &str) -> Result<Self, Self::Err> {
2536        match s {
2537            "INPUT_PROP_POINTER" => Ok(InputProp::INPUT_PROP_POINTER),
2538            "INPUT_PROP_DIRECT" => Ok(InputProp::INPUT_PROP_DIRECT),
2539            "INPUT_PROP_BUTTONPAD" => Ok(InputProp::INPUT_PROP_BUTTONPAD),
2540            "INPUT_PROP_SEMI_MT" => Ok(InputProp::INPUT_PROP_SEMI_MT),
2541            "INPUT_PROP_TOPBUTTONPAD" => Ok(InputProp::INPUT_PROP_TOPBUTTONPAD),
2542            "INPUT_PROP_POINTING_STICK" => Ok(InputProp::INPUT_PROP_POINTING_STICK),
2543            "INPUT_PROP_ACCELEROMETER" => Ok(InputProp::INPUT_PROP_ACCELEROMETER),
2544            "INPUT_PROP_MAX" => Ok(InputProp::INPUT_PROP_MAX),
2545            _ => Err(()),
2546        }
2547    }
2548}
2549
2550#[allow(non_camel_case_types)]
2551#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
2552#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2553pub enum EV_FF {
2554    FF_STATUS_STOPPED = 0,
2555    FF_STATUS_PLAYING = 1,
2556    FF_RUMBLE = 80,
2557    FF_PERIODIC = 81,
2558    FF_CONSTANT = 82,
2559    FF_SPRING = 83,
2560    FF_FRICTION = 84,
2561    FF_DAMPER = 85,
2562    FF_INERTIA = 86,
2563    FF_RAMP = 87,
2564    FF_SQUARE = 88,
2565    FF_TRIANGLE = 89,
2566    FF_SINE = 90,
2567    FF_SAW_UP = 91,
2568    FF_SAW_DOWN = 92,
2569    FF_CUSTOM = 93,
2570    FF_GAIN = 96,
2571    FF_AUTOCENTER = 97,
2572    FF_MAX = 127,
2573}
2574
2575impl EV_FF {
2576    pub const FF_STATUS_MAX: EV_FF = EV_FF::FF_STATUS_PLAYING;
2577}
2578
2579pub const fn int_to_ev_ff(code: u32) -> Option<EV_FF> {
2580    match code {
2581        0 => Some(EV_FF::FF_STATUS_STOPPED),
2582        1 => Some(EV_FF::FF_STATUS_PLAYING),
2583        80 => Some(EV_FF::FF_RUMBLE),
2584        81 => Some(EV_FF::FF_PERIODIC),
2585        82 => Some(EV_FF::FF_CONSTANT),
2586        83 => Some(EV_FF::FF_SPRING),
2587        84 => Some(EV_FF::FF_FRICTION),
2588        85 => Some(EV_FF::FF_DAMPER),
2589        86 => Some(EV_FF::FF_INERTIA),
2590        87 => Some(EV_FF::FF_RAMP),
2591        88 => Some(EV_FF::FF_SQUARE),
2592        89 => Some(EV_FF::FF_TRIANGLE),
2593        90 => Some(EV_FF::FF_SINE),
2594        91 => Some(EV_FF::FF_SAW_UP),
2595        92 => Some(EV_FF::FF_SAW_DOWN),
2596        93 => Some(EV_FF::FF_CUSTOM),
2597        96 => Some(EV_FF::FF_GAIN),
2598        97 => Some(EV_FF::FF_AUTOCENTER),
2599        127 => Some(EV_FF::FF_MAX),
2600        _ => None,
2601    }
2602}
2603
2604impl std::str::FromStr for EV_FF {
2605    type Err = ();
2606    fn from_str(s: &str) -> Result<Self, Self::Err> {
2607        match s {
2608            "FF_STATUS_STOPPED" => Ok(EV_FF::FF_STATUS_STOPPED),
2609            "FF_STATUS_PLAYING" => Ok(EV_FF::FF_STATUS_PLAYING),
2610            "FF_RUMBLE" => Ok(EV_FF::FF_RUMBLE),
2611            "FF_PERIODIC" => Ok(EV_FF::FF_PERIODIC),
2612            "FF_CONSTANT" => Ok(EV_FF::FF_CONSTANT),
2613            "FF_SPRING" => Ok(EV_FF::FF_SPRING),
2614            "FF_FRICTION" => Ok(EV_FF::FF_FRICTION),
2615            "FF_DAMPER" => Ok(EV_FF::FF_DAMPER),
2616            "FF_INERTIA" => Ok(EV_FF::FF_INERTIA),
2617            "FF_RAMP" => Ok(EV_FF::FF_RAMP),
2618            "FF_SQUARE" => Ok(EV_FF::FF_SQUARE),
2619            "FF_TRIANGLE" => Ok(EV_FF::FF_TRIANGLE),
2620            "FF_SINE" => Ok(EV_FF::FF_SINE),
2621            "FF_SAW_UP" => Ok(EV_FF::FF_SAW_UP),
2622            "FF_SAW_DOWN" => Ok(EV_FF::FF_SAW_DOWN),
2623            "FF_CUSTOM" => Ok(EV_FF::FF_CUSTOM),
2624            "FF_GAIN" => Ok(EV_FF::FF_GAIN),
2625            "FF_AUTOCENTER" => Ok(EV_FF::FF_AUTOCENTER),
2626            "FF_MAX" => Ok(EV_FF::FF_MAX),
2627            _ => Err(()),
2628        }
2629    }
2630}
2631
2632impl std::fmt::Display for EV_FF {
2633    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2634        write!(f, "{:?}", self)
2635    }
2636}
2637
2638#[allow(non_camel_case_types)]
2639#[cfg_attr(feature = "serde", derive(Serialize), derive(Deserialize))]
2640#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2641pub enum BusType {
2642    BUS_PCI = 1,
2643    BUS_ISAPNP = 2,
2644    BUS_USB = 3,
2645    BUS_HIL = 4,
2646    BUS_BLUETOOTH = 5,
2647    BUS_VIRTUAL = 6,
2648    BUS_ISA = 16,
2649    BUS_I8042 = 17,
2650    BUS_XTKBD = 18,
2651    BUS_RS232 = 19,
2652    BUS_GAMEPORT = 20,
2653    BUS_PARPORT = 21,
2654    BUS_AMIGA = 22,
2655    BUS_ADB = 23,
2656    BUS_I2C = 24,
2657    BUS_HOST = 25,
2658    BUS_GSC = 26,
2659    BUS_ATARI = 27,
2660    BUS_SPI = 28,
2661    BUS_RMI = 29,
2662    BUS_CEC = 30,
2663    BUS_INTEL_ISHTP = 31,
2664    BUS_AMD_SFH = 32,
2665}
2666
2667pub const fn int_to_bus_type(code: u32) -> Option<BusType> {
2668    match code {
2669        1 => Some(BusType::BUS_PCI),
2670        2 => Some(BusType::BUS_ISAPNP),
2671        3 => Some(BusType::BUS_USB),
2672        4 => Some(BusType::BUS_HIL),
2673        5 => Some(BusType::BUS_BLUETOOTH),
2674        6 => Some(BusType::BUS_VIRTUAL),
2675        16 => Some(BusType::BUS_ISA),
2676        17 => Some(BusType::BUS_I8042),
2677        18 => Some(BusType::BUS_XTKBD),
2678        19 => Some(BusType::BUS_RS232),
2679        20 => Some(BusType::BUS_GAMEPORT),
2680        21 => Some(BusType::BUS_PARPORT),
2681        22 => Some(BusType::BUS_AMIGA),
2682        23 => Some(BusType::BUS_ADB),
2683        24 => Some(BusType::BUS_I2C),
2684        25 => Some(BusType::BUS_HOST),
2685        26 => Some(BusType::BUS_GSC),
2686        27 => Some(BusType::BUS_ATARI),
2687        28 => Some(BusType::BUS_SPI),
2688        29 => Some(BusType::BUS_RMI),
2689        30 => Some(BusType::BUS_CEC),
2690        31 => Some(BusType::BUS_INTEL_ISHTP),
2691        32 => Some(BusType::BUS_AMD_SFH),
2692        _ => None,
2693    }
2694}
2695
2696impl std::str::FromStr for BusType {
2697    type Err = ();
2698    fn from_str(s: &str) -> Result<Self, Self::Err> {
2699        match s {
2700            "BUS_PCI" => Ok(BusType::BUS_PCI),
2701            "BUS_ISAPNP" => Ok(BusType::BUS_ISAPNP),
2702            "BUS_USB" => Ok(BusType::BUS_USB),
2703            "BUS_HIL" => Ok(BusType::BUS_HIL),
2704            "BUS_BLUETOOTH" => Ok(BusType::BUS_BLUETOOTH),
2705            "BUS_VIRTUAL" => Ok(BusType::BUS_VIRTUAL),
2706            "BUS_ISA" => Ok(BusType::BUS_ISA),
2707            "BUS_I8042" => Ok(BusType::BUS_I8042),
2708            "BUS_XTKBD" => Ok(BusType::BUS_XTKBD),
2709            "BUS_RS232" => Ok(BusType::BUS_RS232),
2710            "BUS_GAMEPORT" => Ok(BusType::BUS_GAMEPORT),
2711            "BUS_PARPORT" => Ok(BusType::BUS_PARPORT),
2712            "BUS_AMIGA" => Ok(BusType::BUS_AMIGA),
2713            "BUS_ADB" => Ok(BusType::BUS_ADB),
2714            "BUS_I2C" => Ok(BusType::BUS_I2C),
2715            "BUS_HOST" => Ok(BusType::BUS_HOST),
2716            "BUS_GSC" => Ok(BusType::BUS_GSC),
2717            "BUS_ATARI" => Ok(BusType::BUS_ATARI),
2718            "BUS_SPI" => Ok(BusType::BUS_SPI),
2719            "BUS_RMI" => Ok(BusType::BUS_RMI),
2720            "BUS_CEC" => Ok(BusType::BUS_CEC),
2721            "BUS_INTEL_ISHTP" => Ok(BusType::BUS_INTEL_ISHTP),
2722            "BUS_AMD_SFH" => Ok(BusType::BUS_AMD_SFH),
2723            _ => Err(()),
2724        }
2725    }
2726}
2727
2728impl std::fmt::Display for BusType {
2729    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2730        write!(f, "{:?}", self)
2731    }
2732}