1use num_enum::TryFromPrimitive;
2use serde::{Deserialize, Serialize};
3
4#[repr(u32)]
10#[derive(Debug, Clone, Copy, TryFromPrimitive)]
11pub enum Windows {
12 Shutdown = 0xE05E,
13 SystemSleep = 0xE05F,
14 SystemWakeUp = 0xE063,
15 ErrorRollOver = 0x00FF,
16 KeyA = 0x001E,
17 KeyB = 0x0030,
18 KeyC = 0x002E,
19 KeyD = 0x0020,
20 KeyE = 0x0012,
21 KeyF = 0x0021,
22 KeyG = 0x0022,
23 KeyH = 0x0023,
24 KeyI = 0x0017,
25 KeyJ = 0x0024,
26 KeyK = 0x0025,
27 KeyL = 0x0026,
28 KeyM = 0x0032,
29 KeyN = 0x0031,
30 KeyO = 0x0018,
31 KeyP = 0x0019,
32 KeyQ = 0x0010,
33 KeyR = 0x0013,
34 KeyS = 0x001F,
35 KeyT = 0x0014,
36 KeyU = 0x0016,
37 KeyV = 0x002F,
38 KeyW = 0x0011,
39 KeyX = 0x002D,
40 KeyY = 0x0015,
41 KeyZ = 0x002C,
42 Key1 = 0x0002,
43 Key2 = 0x0003,
44 Key3 = 0x0004,
45 Key4 = 0x0005,
46 Key5 = 0x0006,
47 Key6 = 0x0007,
48 Key7 = 0x0008,
49 Key8 = 0x0009,
50 Key9 = 0x000A,
51 Key0 = 0x000B,
52 KeyEnter = 0x001C,
53 KeyEsc = 0x0001,
54 KeyDelete = 0x000E,
55 KeyTab = 0x000F,
56 KeySpace = 0x0039,
57 KeyMinus = 0x000C,
58 KeyEqual = 0x000D,
59 KeyLeftBrace = 0x001A,
60 KeyRightBrace = 0x001B,
61 KeyBackslash = 0x002B,
62 KeySemiColon = 0x0027,
63 KeyApostrophe = 0x0028,
64 KeyGrave = 0x0029,
65 KeyComma = 0x0033,
66 KeyDot = 0x0034,
67 KeySlash = 0x0035,
68 KeyCapsLock = 0x003A,
69 KeyF1 = 0x003B,
70 KeyF2 = 0x003C,
71 KeyF3 = 0x003D,
72 KeyF4 = 0x003E,
73 KeyF5 = 0x003F,
74 KeyF6 = 0x0040,
75 KeyF7 = 0x0041,
76 KeyF8 = 0x0042,
77 KeyF9 = 0x0043,
78 KeyF10 = 0x0044,
79 KeyF11 = 0x0057,
80 KeyF12 = 0x0058,
81 KeyPrintScreen = 0xE037,
82 KeyScrollLock = 0x0046,
83 KeyPause = 0xE11D45,
84 KeyInsert = 0xE052,
85 KeyHome = 0xE047,
86 KeyPageUp = 0xE049,
87 KeyDeleteForward = 0xE053,
88 KeyEnd = 0xE04F,
89 KeyPageDown = 0xE051,
90 KeyRight = 0xE04D,
91 KeyLeft = 0xE04B,
92 KeyDown = 0xE050,
93 KeyUp = 0xE048,
94 KeypadNumLock = 0x0045,
95 KeypadSlash = 0xE035,
96 KeypadStar = 0x0037,
97 KeypadDash = 0x004A,
98 KeypadPlus = 0x004E,
99 KeypadEnter = 0xE01C,
100 Keypad1End = 0x004F,
101 Keypad2DownArrow = 0x0050,
102 Keypad3PageDn = 0x0051,
103 Keypad4LeftArrow = 0x004B,
104 Keypad5 = 0x004C,
105 Keypad6RightArrow = 0x004D,
106 Keypad7Home = 0x0047,
107 Keypad8UpArrow = 0x0048,
108 Keypad9PageUp = 0x0049,
109 Keypad0Insert = 0x0052,
110 KeypadDot = 0x0053,
111 KeyNonUSSlashBar = 0x0056,
112 KeyApplication = 0xE05D,
113 KeypadEquals = 0x0059,
114 KeyF13 = 0x0064,
115 KeyF14 = 0x0065,
116 KeyF15 = 0x0066,
117 KeyF16 = 0x0067,
118 KeyF17 = 0x0068,
119 KeyF18 = 0x0069,
120 KeyF19 = 0x006A,
121 KeyF20 = 0x006B,
122 KeyF21 = 0x006C,
123 KeyF22 = 0x006D,
124 KeyF23 = 0x006E,
125 KeyF24 = 0x0076, KeypadComma = 0x007E,
127 KeyInternational1 = 0x0073,
128 KeyInternational2 = 0x0070,
129 KeyInternational3 = 0x007D, #[allow(dead_code)]
131 KeyInternational4 = 0x0079,
132 #[allow(dead_code)]
133 KeyInternational5 = 0x007B,
134 KeyLANG1 = 0x0072,
136 KeyLANG2 = 0x0071,
137 KeyLANG3 = 0x0078,
138 KeyLANG4 = 0x0077,
139 KeyLeftCtrl = 0x001D,
141 KeyLeftShift = 0x002A,
142 KeyLeftAlt = 0x0038,
143 KeyLeftGUI = 0xE05B,
144 KeyRightCtrl = 0xE01D,
145 KeyRightShift = 0x0036,
146 KeyFakeRightShift = 0xE036,
147 KeyRightAlt = 0xE038,
148 KeyRightGUI = 0xE05C,
149 KeyScanNextTrack = 0xE019,
150 KeyScanPreviousTrack = 0xE010,
151 KeyStop = 0xE024,
152 KeyPlayPause = 0xE022,
153 KeyMute = 0xE020,
154 KeyVolumeUp = 0xE030,
155 KeyVolumeDown = 0xE02E,
156 #[allow(dead_code)]
157 ALConsumerControlConfiguration = 0xE06D, ALEmailReader = 0xE06C,
159 ALCalculator = 0xE021,
160 ALLocalMachineBrowser = 0xE06B,
161 ACSearch = 0xE065,
162 ACHome = 0xE032,
163 ACBack = 0xE06A,
164 ACForward = 0xE069,
165 ACStop = 0xE068,
166 ACRefresh = 0xE067,
167 ACBookmarks = 0xE066,
168}
169
170#[repr(u32)]
174#[derive(Serialize, Deserialize, Debug, Clone, Copy, Eq, Hash, PartialEq, TryFromPrimitive)]
175#[allow(dead_code)]
176pub enum Linux {
177 KeyReserved = 0,
178 KeyEsc = 1,
179 Key1 = 2,
180 Key2 = 3,
181 Key3 = 4,
182 Key4 = 5,
183 Key5 = 6,
184 Key6 = 7,
185 Key7 = 8,
186 Key8 = 9,
187 Key9 = 10,
188 Key0 = 11,
189 KeyMinus = 12,
190 KeyEqual = 13,
191 KeyBackspace = 14,
192 KeyTab = 15,
193 KeyQ = 16,
194 KeyW = 17,
195 KeyE = 18,
196 KeyR = 19,
197 KeyT = 20,
198 KeyY = 21,
199 KeyU = 22,
200 KeyI = 23,
201 KeyO = 24,
202 KeyP = 25,
203 KeyLeftbrace = 26,
204 KeyRightbrace = 27,
205 KeyEnter = 28,
206 KeyLeftCtrl = 29,
207 KeyA = 30,
208 KeyS = 31,
209 KeyD = 32,
210 KeyF = 33,
211 KeyG = 34,
212 KeyH = 35,
213 KeyJ = 36,
214 KeyK = 37,
215 KeyL = 38,
216 KeySemicolon = 39,
217 KeyApostrophe = 40,
218 KeyGrave = 41,
219 KeyLeftShift = 42,
220 KeyBackslash = 43,
221 KeyZ = 44,
222 KeyX = 45,
223 KeyC = 46,
224 KeyV = 47,
225 KeyB = 48,
226 KeyN = 49,
227 KeyM = 50,
228 KeyComma = 51,
229 KeyDot = 52,
230 KeySlash = 53,
231 KeyRightShift = 54,
232 KeyKpAsterisk = 55,
233 KeyLeftAlt = 56,
234 KeySpace = 57,
235 KeyCapsLock = 58,
236 KeyF1 = 59,
237 KeyF2 = 60,
238 KeyF3 = 61,
239 KeyF4 = 62,
240 KeyF5 = 63,
241 KeyF6 = 64,
242 KeyF7 = 65,
243 KeyF8 = 66,
244 KeyF9 = 67,
245 KeyF10 = 68,
246 KeyNumlock = 69,
247 KeyScrollLock = 70,
248 KeyKp7 = 71,
249 KeyKp8 = 72,
250 KeyKp9 = 73,
251 KeyKpMinus = 74,
252 KeyKp4 = 75,
253 KeyKp5 = 76,
254 KeyKp6 = 77,
255 KeyKpplus = 78,
256 KeyKp1 = 79,
257 KeyKp2 = 80,
258 KeyKp3 = 81,
259 KeyKp0 = 82,
260 KeyKpDot = 83,
261 Invalid = 84,
262 KeyZenkakuhankaku = 85,
263 Key102nd = 86,
264 KeyF11 = 87,
265 KeyF12 = 88,
266 KeyRo = 89,
267 KeyKatakana = 90,
268 KeyHiragana = 91,
269 KeyHenkan = 92,
270 KeyKatakanahiragana = 93,
271 KeyMuhenkan = 94,
272 KeyKpJpComma = 95,
273 KeyKpEnter = 96,
274 KeyRightCtrl = 97,
275 KeyKpslash = 98,
276 KeySysrq = 99,
277 KeyRightalt = 100,
278 KeyLinefeed = 101,
279 KeyHome = 102,
280 KeyUp = 103,
281 KeyPageup = 104,
282 KeyLeft = 105,
283 KeyRight = 106,
284 KeyEnd = 107,
285 KeyDown = 108,
286 KeyPagedown = 109,
287 KeyInsert = 110,
288 KeyDelete = 111,
289 KeyMacro = 112,
290 KeyMute = 113,
291 KeyVolumeDown = 114,
292 KeyVolumeUp = 115,
293 KeyPower = 116, KeyKpequal = 117,
295 KeyKpplusminus = 118,
296 KeyPause = 119,
297 KeyScale = 120, KeyKpcomma = 121,
299 KeyHanguel = 122,
300 KeyHanja = 123,
302 KeyYen = 124,
303 KeyLeftMeta = 125,
304 KeyRightmeta = 126,
305 KeyCompose = 127,
306 KeyStop = 128, KeyAgain = 129,
308 KeyProps = 130, KeyUndo = 131, KeyFront = 132,
311 KeyCopy = 133, KeyOpen = 134, KeyPaste = 135, KeyFind = 136, KeyCut = 137, KeyHelp = 138, KeyMenu = 139, KeyCalc = 140, KeySetup = 141,
320 KeySleep = 142, KeyWakeup = 143, KeyFile = 144, KeySendfile = 145,
324 KeyDeletefile = 146,
325 KeyXfer = 147,
326 KeyProg1 = 148,
327 KeyProg2 = 149,
328 KeyWww = 150, KeyMsdos = 151,
330 KeyCoffee = 152, KeyRotateDisplay = 153, KeyCyclewindows = 154,
335 KeyMail = 155,
336 KeyBookmarks = 156, KeyComputer = 157,
338 KeyBack = 158, KeyForward = 159, KeyClosecd = 160,
341 KeyEjectcd = 161,
342 KeyEjectclosecd = 162,
343 KeyNextsong = 163,
344 KeyPlaypause = 164,
345 KeyPrevioussong = 165,
346 KeyStopcd = 166,
347 KeyRecord = 167,
348 KeyRewind = 168,
349 KeyPhone = 169, KeyIso = 170,
351 KeyConfig = 171, KeyHomepage = 172, KeyRefresh = 173, KeyExit = 174, KeyMove = 175,
356 KeyEdit = 176,
357 KeyScrollup = 177,
358 KeyScrolldown = 178,
359 KeyKpleftparen = 179,
360 KeyKprightparen = 180,
361 KeyNew = 181, KeyRedo = 182, KeyF13 = 183,
364 KeyF14 = 184,
365 KeyF15 = 185,
366 KeyF16 = 186,
367 KeyF17 = 187,
368 KeyF18 = 188,
369 KeyF19 = 189,
370 KeyF20 = 190,
371 KeyF21 = 191,
372 KeyF22 = 192,
373 KeyF23 = 193,
374 KeyF24 = 194,
375 Invalid1 = 195,
376 Invalid2 = 196,
377 Invalid3 = 197,
378 Invalid4 = 198,
379 Invalid5 = 199,
380 KeyPlaycd = 200,
381 KeyPausecd = 201,
382 KeyProg3 = 202,
383 KeyProg4 = 203,
384 KeyAllApplications = 204, KeySuspend = 205,
387 KeyClose = 206, KeyPlay = 207,
389 KeyFastforward = 208,
390 KeyBassboost = 209,
391 KeyPrint = 210, KeyHp = 211,
393 KeyCamera = 212,
394 KeySound = 213,
395 KeyQuestion = 214,
396 KeyEmail = 215,
397 KeyChat = 216,
398 KeySearch = 217,
399 KeyConnect = 218,
400 KeyFinance = 219, KeySport = 220,
402 KeyShop = 221,
403 KeyAlterase = 222,
404 KeyCancel = 223, KeyBrightnessdown = 224,
406 KeyBrightnessup = 225,
407 KeyMedia = 226,
408 KeySwitchvideomode = 227, KeyKbdillumtoggle = 228,
410 KeyKbdillumdown = 229,
411 KeyKbdillumup = 230,
412 KeySend = 231, KeyReply = 232, KeyForwardmail = 233, KeySave = 234, KeyDocuments = 235,
417 KeyBattery = 236,
418 KeyBluetooth = 237,
419 KeyWlan = 238,
420 KeyUwb = 239,
421 KeyUnknown = 240,
422 KeyVideoNext = 241, KeyVideoPrev = 242, KeyBrightnessCycle = 243, KeyBrightnessAuto = 244, KeyDisplayOff = 245, KeyWwan = 246, KeyRfkill = 247, KeyMicmute = 248, KeyCount = 249,
433}
434
435impl TryFrom<Linux> for Windows {
436 type Error = ();
437
438 fn try_from(value: Linux) -> Result<Self, Self::Error> {
439 match value {
440 Linux::KeyReserved => Err(()),
441 Linux::KeyEsc => Ok(Self::KeyEsc),
442 Linux::Key1 => Ok(Self::Key1),
443 Linux::Key2 => Ok(Self::Key2),
444 Linux::Key3 => Ok(Self::Key3),
445 Linux::Key4 => Ok(Self::Key4),
446 Linux::Key5 => Ok(Self::Key5),
447 Linux::Key6 => Ok(Self::Key6),
448 Linux::Key7 => Ok(Self::Key7),
449 Linux::Key8 => Ok(Self::Key8),
450 Linux::Key9 => Ok(Self::Key9),
451 Linux::Key0 => Ok(Self::Key0),
452 Linux::KeyMinus => Ok(Self::KeyMinus),
453 Linux::KeyEqual => Ok(Self::KeyEqual),
454 Linux::KeyBackspace => Ok(Self::KeyDelete),
455 Linux::KeyTab => Ok(Self::KeyTab),
456 Linux::KeyQ => Ok(Self::KeyQ),
457 Linux::KeyW => Ok(Self::KeyW),
458 Linux::KeyE => Ok(Self::KeyE),
459 Linux::KeyR => Ok(Self::KeyR),
460 Linux::KeyT => Ok(Self::KeyT),
461 Linux::KeyY => Ok(Self::KeyY),
462 Linux::KeyU => Ok(Self::KeyU),
463 Linux::KeyI => Ok(Self::KeyI),
464 Linux::KeyO => Ok(Self::KeyO),
465 Linux::KeyP => Ok(Self::KeyP),
466 Linux::KeyLeftbrace => Ok(Self::KeyLeftBrace),
467 Linux::KeyRightbrace => Ok(Self::KeyRightBrace),
468 Linux::KeyEnter => Ok(Self::KeyEnter),
469 Linux::KeyLeftCtrl => Ok(Self::KeyLeftCtrl),
470 Linux::KeyA => Ok(Self::KeyA),
471 Linux::KeyS => Ok(Self::KeyS),
472 Linux::KeyD => Ok(Self::KeyD),
473 Linux::KeyF => Ok(Self::KeyF),
474 Linux::KeyG => Ok(Self::KeyG),
475 Linux::KeyH => Ok(Self::KeyH),
476 Linux::KeyJ => Ok(Self::KeyJ),
477 Linux::KeyK => Ok(Self::KeyK),
478 Linux::KeyL => Ok(Self::KeyL),
479 Linux::KeySemicolon => Ok(Self::KeySemiColon),
480 Linux::KeyApostrophe => Ok(Self::KeyApostrophe),
481 Linux::KeyGrave => Ok(Self::KeyGrave),
482 Linux::KeyLeftShift => Ok(Self::KeyLeftShift),
483 Linux::KeyBackslash => Ok(Self::KeyBackslash),
484 Linux::KeyZ => Ok(Self::KeyZ),
485 Linux::KeyX => Ok(Self::KeyX),
486 Linux::KeyC => Ok(Self::KeyC),
487 Linux::KeyV => Ok(Self::KeyV),
488 Linux::KeyB => Ok(Self::KeyB),
489 Linux::KeyN => Ok(Self::KeyN),
490 Linux::KeyM => Ok(Self::KeyM),
491 Linux::KeyComma => Ok(Self::KeyComma),
492 Linux::KeyDot => Ok(Self::KeyDot),
493 Linux::KeySlash => Ok(Self::KeySlash),
494 Linux::KeyRightShift => Ok(Self::KeyRightShift),
495 Linux::KeyKpAsterisk => Ok(Self::KeypadStar),
496 Linux::KeyLeftAlt => Ok(Self::KeyLeftAlt),
497 Linux::KeySpace => Ok(Self::KeySpace),
498 Linux::KeyCapsLock => Ok(Self::KeyCapsLock),
499 Linux::KeyF1 => Ok(Self::KeyF1),
500 Linux::KeyF2 => Ok(Self::KeyF2),
501 Linux::KeyF3 => Ok(Self::KeyF3),
502 Linux::KeyF4 => Ok(Self::KeyF4),
503 Linux::KeyF5 => Ok(Self::KeyF5),
504 Linux::KeyF6 => Ok(Self::KeyF6),
505 Linux::KeyF7 => Ok(Self::KeyF7),
506 Linux::KeyF8 => Ok(Self::KeyF8),
507 Linux::KeyF9 => Ok(Self::KeyF9),
508 Linux::KeyF10 => Ok(Self::KeyF10),
509 Linux::KeyNumlock => Ok(Self::KeypadNumLock),
510 Linux::KeyScrollLock => Ok(Self::KeyScrollLock),
511 Linux::KeyKp7 => Ok(Self::Keypad7Home),
512 Linux::KeyKp8 => Ok(Self::Keypad8UpArrow),
513 Linux::KeyKp9 => Ok(Self::Keypad9PageUp),
514 Linux::KeyKpMinus => Ok(Self::KeypadDash),
515 Linux::KeyKp4 => Ok(Self::Keypad4LeftArrow),
516 Linux::KeyKp5 => Ok(Self::Keypad5),
517 Linux::KeyKp6 => Ok(Self::Keypad6RightArrow),
518 Linux::KeyKpplus => Ok(Self::KeypadPlus),
519 Linux::KeyKp1 => Ok(Self::Keypad1End),
520 Linux::KeyKp2 => Ok(Self::Keypad2DownArrow),
521 Linux::KeyKp3 => Ok(Self::Keypad3PageDn),
522 Linux::KeyKp0 => Ok(Self::Keypad0Insert),
523 Linux::KeyKpDot => Ok(Self::KeypadDot),
524 Linux::KeyZenkakuhankaku => Ok(Self::KeyF24), Linux::Key102nd => Ok(Self::KeyNonUSSlashBar), Linux::KeyF11 => Ok(Self::KeyF11),
527 Linux::KeyF12 => Ok(Self::KeyF12),
528 Linux::KeyRo => Ok(Self::KeyInternational1),
529 Linux::KeyKatakana => Ok(Self::KeyLANG3),
530 Linux::KeyHiragana => Ok(Self::KeyLANG4),
531 Linux::KeyHenkan => Ok(Self::KeyInternational4),
532 Linux::KeyKatakanahiragana => Ok(Self::KeyInternational2),
533 Linux::KeyMuhenkan => Ok(Self::KeyInternational5),
534 Linux::KeyKpJpComma => Ok(Self::KeypadComma),
535 Linux::KeyKpEnter => Ok(Self::KeypadEnter),
536 Linux::KeyRightCtrl => Ok(Self::KeyRightCtrl),
537 Linux::KeyKpslash => Ok(Self::KeypadSlash),
538 Linux::KeySysrq => Ok(Self::KeyPrintScreen), Linux::KeyRightalt => Ok(Self::KeyRightAlt),
540 Linux::KeyLinefeed => Ok(Self::KeyEnter), Linux::KeyHome => Ok(Self::KeyHome),
542 Linux::KeyUp => Ok(Self::KeyUp),
543 Linux::KeyPageup => Ok(Self::KeyPageUp),
544 Linux::KeyLeft => Ok(Self::KeyLeft),
545 Linux::KeyRight => Ok(Self::KeyRight),
546 Linux::KeyEnd => Ok(Self::KeyEnd),
547 Linux::KeyDown => Ok(Self::KeyDown),
548 Linux::KeyPagedown => Ok(Self::KeyPageDown),
549 Linux::KeyInsert => Ok(Self::KeyInsert),
550 Linux::KeyDelete => Ok(Self::KeyDeleteForward),
551 Linux::KeyMacro => Err(()), Linux::KeyMute => Ok(Self::KeyMute),
553 Linux::KeyVolumeDown => Ok(Self::KeyVolumeDown),
554 Linux::KeyVolumeUp => Ok(Self::KeyVolumeUp),
555 Linux::KeyPower => Ok(Self::Shutdown),
556 Linux::KeyKpequal => Ok(Self::KeypadEquals),
557 Linux::KeyKpplusminus => Ok(Self::KeypadPlus),
558 Linux::KeyPause => Ok(Self::KeyPause),
559 Linux::KeyScale => Err(()), Linux::KeyKpcomma => Ok(Self::KeypadComma),
561 Linux::KeyHanguel => Ok(Self::KeyLANG1), Linux::KeyHanja => Ok(Self::KeyLANG2), Linux::KeyYen => Ok(Self::KeyInternational3),
564 Linux::KeyLeftMeta => Ok(Self::KeyLeftGUI),
565 Linux::KeyRightmeta => Ok(Self::KeyRightGUI),
566 Linux::KeyCompose => Ok(Self::KeyApplication),
567 Linux::KeyStop => Ok(Self::ACStop),
568 Linux::KeyAgain => Err(()),
569 Linux::KeyProps => Err(()),
570 Linux::KeyUndo => Err(()),
571 Linux::KeyFront => Err(()),
572 Linux::KeyCopy => Err(()),
573 Linux::KeyOpen => Err(()),
574 Linux::KeyPaste => Err(()),
575 Linux::KeyFind => Ok(Self::ACSearch),
576 Linux::KeyCut => Err(()),
577 Linux::KeyHelp => Ok(Self::KeyF1), Linux::KeyMenu => Ok(Self::KeyApplication),
579 Linux::KeyCalc => Ok(Self::ALCalculator),
580 Linux::KeySetup => Err(()),
581 Linux::KeySleep => Ok(Self::SystemSleep),
582 Linux::KeyWakeup => Ok(Self::SystemWakeUp),
583 Linux::KeyFile => Ok(Self::ALLocalMachineBrowser),
584 Linux::KeySendfile => Err(()),
585 Linux::KeyDeletefile => Err(()),
586 Linux::KeyXfer => Err(()),
587 Linux::KeyProg1 => Err(()),
588 Linux::KeyProg2 => Err(()),
589 Linux::KeyWww => Ok(Self::ACSearch), Linux::KeyMsdos => Err(()),
591 Linux::KeyCoffee => Err(()),
592 Linux::KeyRotateDisplay => Err(()),
593 Linux::KeyCyclewindows => Err(()),
594 Linux::KeyMail => Ok(Self::ALEmailReader),
595 Linux::KeyBookmarks => Ok(Self::ACBookmarks),
596 Linux::KeyComputer => Ok(Self::ACHome),
597 Linux::KeyBack => Ok(Self::ACBack),
598 Linux::KeyForward => Ok(Self::ACForward),
599 Linux::KeyClosecd => Err(()),
600 Linux::KeyEjectcd => Err(()),
601 Linux::KeyEjectclosecd => Err(()),
602 Linux::KeyNextsong => Ok(Self::KeyScanNextTrack),
603 Linux::KeyPlaypause => Ok(Self::KeyPlayPause),
604 Linux::KeyPrevioussong => Ok(Self::KeyScanPreviousTrack),
605 Linux::KeyStopcd => Ok(Self::KeyStop),
606 Linux::KeyRecord => Err(()),
607 Linux::KeyRewind => Err(()),
608 Linux::KeyPhone => Err(()),
609 Linux::KeyIso => Err(()),
610 Linux::KeyConfig => Err(()),
611 Linux::KeyHomepage => Ok(Self::ACHome),
612 Linux::KeyRefresh => Ok(Self::ACRefresh),
613 Linux::KeyExit => Err(()),
614 Linux::KeyMove => Err(()),
615 Linux::KeyEdit => Err(()),
616 Linux::KeyScrollup => Err(()),
617 Linux::KeyScrolldown => Err(()),
618 Linux::KeyKpleftparen => Err(()),
619 Linux::KeyKprightparen => Err(()),
620 Linux::KeyNew => Err(()),
621 Linux::KeyRedo => Err(()),
622 Linux::KeyF13 => Ok(Self::KeyF13),
623 Linux::KeyF14 => Ok(Self::KeyF14),
624 Linux::KeyF15 => Ok(Self::KeyF15),
625 Linux::KeyF16 => Ok(Self::KeyF16),
626 Linux::KeyF17 => Ok(Self::KeyF17),
627 Linux::KeyF18 => Ok(Self::KeyF18),
628 Linux::KeyF19 => Ok(Self::KeyF19),
629 Linux::KeyF20 => Ok(Self::KeyF20),
630 Linux::KeyF21 => Ok(Self::KeyF21),
631 Linux::KeyF22 => Ok(Self::KeyF22),
632 Linux::KeyF23 => Ok(Self::KeyF23),
633 Linux::KeyF24 => Ok(Self::KeyF24),
634 Linux::KeyPlaycd => Err(()),
635 Linux::KeyPausecd => Err(()),
636 Linux::KeyProg3 => Err(()),
637 Linux::KeyProg4 => Err(()),
638 Linux::KeyAllApplications => Err(()),
639 Linux::KeySuspend => Err(()),
640 Linux::KeyClose => Err(()),
641 Linux::KeyPlay => Err(()),
642 Linux::KeyFastforward => Err(()),
643 Linux::KeyBassboost => Err(()),
644 Linux::KeyPrint => Err(()),
645 Linux::KeyHp => Err(()),
646 Linux::KeyCamera => Err(()),
647 Linux::KeySound => Err(()),
648 Linux::KeyQuestion => Err(()),
649 Linux::KeyEmail => Err(()),
650 Linux::KeyChat => Err(()),
651 Linux::KeySearch => Err(()),
652 Linux::KeyConnect => Err(()),
653 Linux::KeyFinance => Err(()),
654 Linux::KeySport => Err(()),
655 Linux::KeyShop => Err(()),
656 Linux::KeyAlterase => Err(()),
657 Linux::KeyCancel => Err(()),
658 Linux::KeyBrightnessdown => Err(()),
659 Linux::KeyBrightnessup => Err(()),
660 Linux::KeyMedia => Err(()),
661 Linux::KeySwitchvideomode => Err(()),
662 Linux::KeyKbdillumtoggle => Err(()),
663 Linux::KeyKbdillumdown => Err(()),
664 Linux::KeyKbdillumup => Err(()),
665 Linux::KeySend => Err(()),
666 Linux::KeyReply => Err(()),
667 Linux::KeyForwardmail => Err(()),
668 Linux::KeySave => Err(()),
669 Linux::KeyDocuments => Err(()),
670 Linux::KeyBattery => Err(()),
671 Linux::KeyBluetooth => Err(()),
672 Linux::KeyWlan => Err(()),
673 Linux::KeyUwb => Err(()),
674 Linux::KeyUnknown => Err(()),
675 Linux::KeyVideoNext => Err(()),
676 Linux::KeyVideoPrev => Err(()),
677 Linux::KeyBrightnessCycle => Err(()),
678 Linux::KeyBrightnessAuto => Err(()),
679 Linux::KeyDisplayOff => Err(()),
680 Linux::KeyWwan => Err(()),
681 Linux::KeyRfkill => Err(()),
682 Linux::KeyMicmute => Err(()),
683 Linux::KeyCount => Err(()),
684 Linux::Invalid => Err(()),
685 Linux::Invalid1 => Err(()),
686 Linux::Invalid2 => Err(()),
687 Linux::Invalid3 => Err(()),
688 Linux::Invalid4 => Err(()),
689 Linux::Invalid5 => Err(()),
690 }
691 }
692}
693impl TryFrom<Windows> for Linux {
694 type Error = ();
695
696 fn try_from(value: Windows) -> Result<Self, Self::Error> {
697 match value {
698 Windows::Shutdown => Ok(Self::KeyPower),
699 Windows::SystemSleep => Ok(Self::KeySleep),
700 Windows::SystemWakeUp => Ok(Self::KeyWakeup),
701 Windows::ErrorRollOver => Ok(Self::KeyRo),
702 Windows::KeyA => Ok(Self::KeyA),
703 Windows::KeyB => Ok(Self::KeyB),
704 Windows::KeyC => Ok(Self::KeyC),
705 Windows::KeyD => Ok(Self::KeyD),
706 Windows::KeyE => Ok(Self::KeyE),
707 Windows::KeyF => Ok(Self::KeyF),
708 Windows::KeyG => Ok(Self::KeyG),
709 Windows::KeyH => Ok(Self::KeyH),
710 Windows::KeyI => Ok(Self::KeyI),
711 Windows::KeyJ => Ok(Self::KeyJ),
712 Windows::KeyK => Ok(Self::KeyK),
713 Windows::KeyL => Ok(Self::KeyL),
714 Windows::KeyM => Ok(Self::KeyM),
715 Windows::KeyN => Ok(Self::KeyN),
716 Windows::KeyO => Ok(Self::KeyO),
717 Windows::KeyP => Ok(Self::KeyP),
718 Windows::KeyQ => Ok(Self::KeyQ),
719 Windows::KeyR => Ok(Self::KeyR),
720 Windows::KeyS => Ok(Self::KeyS),
721 Windows::KeyT => Ok(Self::KeyT),
722 Windows::KeyU => Ok(Self::KeyU),
723 Windows::KeyV => Ok(Self::KeyV),
724 Windows::KeyW => Ok(Self::KeyW),
725 Windows::KeyX => Ok(Self::KeyX),
726 Windows::KeyY => Ok(Self::KeyY),
727 Windows::KeyZ => Ok(Self::KeyZ),
728 Windows::Key1 => Ok(Self::Key1),
729 Windows::Key2 => Ok(Self::Key2),
730 Windows::Key3 => Ok(Self::Key3),
731 Windows::Key4 => Ok(Self::Key4),
732 Windows::Key5 => Ok(Self::Key5),
733 Windows::Key6 => Ok(Self::Key6),
734 Windows::Key7 => Ok(Self::Key7),
735 Windows::Key8 => Ok(Self::Key8),
736 Windows::Key9 => Ok(Self::Key9),
737 Windows::Key0 => Ok(Self::Key0),
738 Windows::KeyEnter => Ok(Self::KeyEnter),
739 Windows::KeyEsc => Ok(Self::KeyEsc),
740 Windows::KeyDelete => Ok(Self::KeyBackspace),
741 Windows::KeyTab => Ok(Self::KeyTab),
742 Windows::KeySpace => Ok(Self::KeySpace),
743 Windows::KeyMinus => Ok(Self::KeyMinus),
744 Windows::KeyEqual => Ok(Self::KeyEqual),
745 Windows::KeyLeftBrace => Ok(Self::KeyLeftbrace),
746 Windows::KeyRightBrace => Ok(Self::KeyRightbrace),
747 Windows::KeyBackslash => Ok(Self::KeyBackslash),
748 Windows::KeySemiColon => Ok(Self::KeySemicolon),
749 Windows::KeyApostrophe => Ok(Self::KeyApostrophe),
750 Windows::KeyGrave => Ok(Self::KeyGrave),
751 Windows::KeyComma => Ok(Self::KeyComma),
752 Windows::KeyDot => Ok(Self::KeyDot),
753 Windows::KeySlash => Ok(Self::KeySlash),
754 Windows::KeyCapsLock => Ok(Self::KeyCapsLock),
755 Windows::KeyF1 => Ok(Self::KeyF1),
756 Windows::KeyF2 => Ok(Self::KeyF2),
757 Windows::KeyF3 => Ok(Self::KeyF3),
758 Windows::KeyF4 => Ok(Self::KeyF4),
759 Windows::KeyF5 => Ok(Self::KeyF5),
760 Windows::KeyF6 => Ok(Self::KeyF6),
761 Windows::KeyF7 => Ok(Self::KeyF7),
762 Windows::KeyF8 => Ok(Self::KeyF8),
763 Windows::KeyF9 => Ok(Self::KeyF9),
764 Windows::KeyF10 => Ok(Self::KeyF10),
765 Windows::KeyF11 => Ok(Self::KeyF11),
766 Windows::KeyF12 => Ok(Self::KeyF12),
767 Windows::KeyPrintScreen => Ok(Self::KeySysrq),
768 Windows::KeyScrollLock => Ok(Self::KeyScrollLock),
769 Windows::KeyPause => Ok(Self::KeyPause),
770 Windows::KeyInsert => Ok(Self::KeyInsert),
771 Windows::KeyHome => Ok(Self::KeyHome),
772 Windows::KeyPageUp => Ok(Self::KeyPageup),
773 Windows::KeyDeleteForward => Ok(Self::KeyDelete),
774 Windows::KeyEnd => Ok(Self::KeyEnd),
775 Windows::KeyPageDown => Ok(Self::KeyPagedown),
776 Windows::KeyRight => Ok(Self::KeyRight),
777 Windows::KeyLeft => Ok(Self::KeyLeft),
778 Windows::KeyDown => Ok(Self::KeyDown),
779 Windows::KeyUp => Ok(Self::KeyUp),
780 Windows::KeypadNumLock => Ok(Self::KeyNumlock),
781 Windows::KeypadSlash => Ok(Self::KeyKpslash),
782 Windows::KeypadStar => Ok(Self::KeyKpAsterisk),
783 Windows::KeypadDash => Ok(Self::KeyKpMinus),
784 Windows::KeypadPlus => Ok(Self::KeyKpplus),
785 Windows::KeypadEnter => Ok(Self::KeyKpEnter),
786 Windows::Keypad1End => Ok(Self::KeyKp1),
787 Windows::Keypad2DownArrow => Ok(Self::KeyKp2),
788 Windows::Keypad3PageDn => Ok(Self::KeyKp3),
789 Windows::Keypad4LeftArrow => Ok(Self::KeyKp4),
790 Windows::Keypad5 => Ok(Self::KeyKp5),
791 Windows::Keypad6RightArrow => Ok(Self::KeyKp6),
792 Windows::Keypad7Home => Ok(Self::KeyKp7),
793 Windows::Keypad8UpArrow => Ok(Self::KeyKp8),
794 Windows::Keypad9PageUp => Ok(Self::KeyKp9),
795 Windows::Keypad0Insert => Ok(Self::KeyKp0),
796 Windows::KeypadDot => Ok(Self::KeyKpDot),
797 Windows::KeyNonUSSlashBar => Ok(Self::Key102nd),
798 Windows::KeyApplication => Ok(Self::KeyMenu),
799 Windows::KeypadEquals => Ok(Self::KeyKpequal),
800 Windows::KeyF13 => Ok(Self::KeyF13),
801 Windows::KeyF14 => Ok(Self::KeyF14),
802 Windows::KeyF15 => Ok(Self::KeyF15),
803 Windows::KeyF16 => Ok(Self::KeyF16),
804 Windows::KeyF17 => Ok(Self::KeyF17),
805 Windows::KeyF18 => Ok(Self::KeyF18),
806 Windows::KeyF19 => Ok(Self::KeyF19),
807 Windows::KeyF20 => Ok(Self::KeyF20),
808 Windows::KeyF21 => Ok(Self::KeyF21),
809 Windows::KeyF22 => Ok(Self::KeyF22),
810 Windows::KeyF23 => Ok(Self::KeyF23),
811 Windows::KeyF24 => Ok(Self::KeyF24),
812 Windows::KeypadComma => Ok(Self::KeyKpcomma),
813 Windows::KeyInternational1 => Ok(Self::KeyRo),
814 Windows::KeyInternational2 => Ok(Self::KeyKatakanahiragana),
815 Windows::KeyInternational3 => Ok(Self::KeyYen),
816 Windows::KeyInternational4 => Ok(Self::KeyHenkan),
817 Windows::KeyInternational5 => Ok(Self::KeyMuhenkan),
818 Windows::KeyLANG1 => Ok(Self::KeyHanguel),
819 Windows::KeyLANG2 => Ok(Self::KeyHanja),
820 Windows::KeyLANG3 => Ok(Self::KeyKatakana),
821 Windows::KeyLANG4 => Ok(Self::KeyHiragana),
822 Windows::KeyLeftCtrl => Ok(Self::KeyLeftCtrl),
823 Windows::KeyLeftShift => Ok(Self::KeyLeftShift),
824 Windows::KeyLeftAlt => Ok(Self::KeyLeftAlt),
825 Windows::KeyLeftGUI => Ok(Self::KeyLeftMeta),
826 Windows::KeyRightCtrl => Ok(Self::KeyRightCtrl),
827 Windows::KeyRightShift => Ok(Self::KeyRightShift),
828 Windows::KeyFakeRightShift => Ok(Self::KeyRightShift),
829 Windows::KeyRightAlt => Ok(Self::KeyRightalt),
830 Windows::KeyRightGUI => Ok(Self::KeyRightmeta),
831 Windows::KeyScanNextTrack => Ok(Self::KeyNextsong),
832 Windows::KeyScanPreviousTrack => Ok(Self::KeyPrevioussong),
833 Windows::KeyStop => Ok(Self::KeyStopcd),
834 Windows::KeyPlayPause => Ok(Self::KeyPlaypause),
835 Windows::KeyMute => Ok(Self::KeyMute),
836 Windows::KeyVolumeUp => Ok(Self::KeyVolumeUp),
837 Windows::KeyVolumeDown => Ok(Self::KeyVolumeDown),
838 Windows::ALConsumerControlConfiguration => Err(()),
839 Windows::ALEmailReader => Ok(Self::KeyMail),
840 Windows::ALCalculator => Ok(Self::KeyCalc),
841 Windows::ALLocalMachineBrowser => Ok(Self::KeyFile),
842 Windows::ACSearch => Ok(Self::KeyWww),
843 Windows::ACHome => Ok(Self::KeyHomepage),
844 Windows::ACBack => Ok(Self::KeyBack),
845 Windows::ACForward => Ok(Self::KeyForward),
846 Windows::ACStop => Ok(Self::KeyStop),
847 Windows::ACRefresh => Ok(Self::KeyRefresh),
848 Windows::ACBookmarks => Ok(Self::KeyBookmarks),
849 }
850 }
851}