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