1use super::KeyCode;
2use super::OsCode;
3
4impl From<KeyCode> for OsCode {
5 fn from(item: KeyCode) -> Self {
6 unsafe { std::mem::transmute(item) }
7 }
8}
9
10impl From<OsCode> for KeyCode {
11 fn from(item: OsCode) -> KeyCode {
12 unsafe { std::mem::transmute(item) }
13 }
14}
15
16#[test]
17fn roundtrip_oscode_keycode() {
18 use super::OsCode::*;
19 let oscs = &[
20 KEY_RESERVED,
21 KEY_ESC,
22 KEY_1,
23 KEY_2,
24 KEY_3,
25 KEY_4,
26 KEY_5,
27 KEY_6,
28 KEY_7,
29 KEY_8,
30 KEY_9,
31 KEY_0,
32 KEY_MINUS,
33 KEY_EQUAL,
34 KEY_BACKSPACE,
35 KEY_TAB,
36 KEY_Q,
37 KEY_W,
38 KEY_E,
39 KEY_R,
40 KEY_T,
41 KEY_Y,
42 KEY_U,
43 KEY_I,
44 KEY_O,
45 KEY_P,
46 KEY_LEFTBRACE,
47 KEY_RIGHTBRACE,
48 KEY_ENTER,
49 KEY_LEFTCTRL,
50 KEY_A,
51 KEY_S,
52 KEY_D,
53 KEY_F,
54 KEY_G,
55 KEY_H,
56 KEY_J,
57 KEY_K,
58 KEY_L,
59 KEY_SEMICOLON,
60 KEY_APOSTROPHE,
61 KEY_GRAVE,
62 KEY_LEFTSHIFT,
63 KEY_BACKSLASH,
64 KEY_Z,
65 KEY_X,
66 KEY_C,
67 KEY_V,
68 KEY_B,
69 KEY_N,
70 KEY_M,
71 KEY_COMMA,
72 KEY_DOT,
73 KEY_SLASH,
74 KEY_RIGHTSHIFT,
75 KEY_KPASTERISK,
76 KEY_LEFTALT,
77 KEY_SPACE,
78 KEY_CAPSLOCK,
79 KEY_F1,
80 KEY_F2,
81 KEY_F3,
82 KEY_F4,
83 KEY_F5,
84 KEY_F6,
85 KEY_F7,
86 KEY_F8,
87 KEY_F9,
88 KEY_F10,
89 KEY_NUMLOCK,
90 KEY_SCROLLLOCK,
91 KEY_KP7,
92 KEY_KP8,
93 KEY_KP9,
94 KEY_KPMINUS,
95 KEY_KP4,
96 KEY_KP5,
97 KEY_KP6,
98 KEY_KPPLUS,
99 KEY_KP1,
100 KEY_KP2,
101 KEY_KP3,
102 KEY_KP0,
103 KEY_KPDOT,
104 KEY_84,
105 KEY_ZENKAKUHANKAKU,
106 KEY_102ND,
107 KEY_F11,
108 KEY_F12,
109 KEY_RO,
110 KEY_KATAKANA,
111 KEY_HIRAGANA,
112 KEY_HENKAN,
113 KEY_KATAKANAHIRAGANA,
114 KEY_MUHENKAN,
115 KEY_KPJPCOMMA,
116 KEY_KPENTER,
117 KEY_RIGHTCTRL,
118 KEY_KPSLASH,
119 KEY_SYSRQ,
120 KEY_RIGHTALT,
121 KEY_LINEFEED,
122 KEY_HOME,
123 KEY_UP,
124 KEY_PAGEUP,
125 KEY_LEFT,
126 KEY_RIGHT,
127 KEY_END,
128 KEY_DOWN,
129 KEY_PAGEDOWN,
130 KEY_INSERT,
131 KEY_DELETE,
132 KEY_MACRO,
133 KEY_MUTE,
134 KEY_VOLUMEDOWN,
135 KEY_VOLUMEUP,
136 KEY_POWER,
137 KEY_KPEQUAL,
138 KEY_KPPLUSMINUS,
139 KEY_PAUSE,
140 KEY_SCALE,
141 KEY_KPCOMMA,
142 KEY_HANGEUL,
143 KEY_HANJA,
144 KEY_YEN,
145 KEY_LEFTMETA,
146 KEY_RIGHTMETA,
147 KEY_COMPOSE,
148 KEY_STOP,
149 KEY_AGAIN,
150 KEY_PROPS,
151 KEY_UNDO,
152 KEY_FRONT,
153 KEY_COPY,
154 KEY_OPEN,
155 KEY_PASTE,
156 KEY_FIND,
157 KEY_CUT,
158 KEY_HELP,
159 KEY_MENU,
160 KEY_CALC,
161 KEY_SETUP,
162 KEY_SLEEP,
163 KEY_WAKEUP,
164 KEY_FILE,
165 KEY_SENDFILE,
166 KEY_DELETEFILE,
167 KEY_XFER,
168 KEY_PROG1,
169 KEY_PROG2,
170 KEY_WWW,
171 KEY_MSDOS,
172 KEY_COFFEE,
173 KEY_ROTATE_DISPLAY,
174 KEY_CYCLEWINDOWS,
175 KEY_MAIL,
176 KEY_BOOKMARKS,
177 KEY_COMPUTER,
178 KEY_BACK,
179 KEY_FORWARD,
180 KEY_CLOSECD,
181 KEY_EJECTCD,
182 KEY_EJECTCLOSECD,
183 KEY_NEXTSONG,
184 KEY_PLAYPAUSE,
185 KEY_PREVIOUSSONG,
186 KEY_STOPCD,
187 KEY_RECORD,
188 KEY_REWIND,
189 KEY_PHONE,
190 KEY_ISO,
191 KEY_CONFIG,
192 KEY_HOMEPAGE,
193 KEY_REFRESH,
194 KEY_EXIT,
195 KEY_MOVE,
196 KEY_EDIT,
197 KEY_SCROLLUP,
198 KEY_SCROLLDOWN,
199 KEY_KPLEFTPAREN,
200 KEY_KPRIGHTPAREN,
201 KEY_NEW,
202 KEY_REDO,
203 KEY_F13,
204 KEY_F14,
205 KEY_F15,
206 KEY_F16,
207 KEY_F17,
208 KEY_F18,
209 KEY_F19,
210 KEY_F20,
211 KEY_F21,
212 KEY_F22,
213 KEY_F23,
214 KEY_F24,
215 KEY_195,
216 KEY_196,
217 KEY_197,
218 KEY_198,
219 KEY_199,
220 KEY_PLAYCD,
221 KEY_PAUSECD,
222 KEY_PROG3,
223 KEY_PROG4,
224 KEY_DASHBOARD,
225 KEY_SUSPEND,
226 KEY_CLOSE,
227 KEY_PLAY,
228 KEY_FASTFORWARD,
229 KEY_BASSBOOST,
230 KEY_PRINT,
231 KEY_HP,
232 KEY_CAMERA,
233 KEY_SOUND,
234 KEY_QUESTION,
235 KEY_EMAIL,
236 KEY_CHAT,
237 KEY_SEARCH,
238 KEY_CONNECT,
239 KEY_FINANCE,
240 KEY_SPORT,
241 KEY_SHOP,
242 KEY_ALTERASE,
243 KEY_CANCEL,
244 KEY_BRIGHTNESSDOWN,
245 KEY_BRIGHTNESSUP,
246 KEY_MEDIA,
247 KEY_SWITCHVIDEOMODE,
248 KEY_KBDILLUMTOGGLE,
249 KEY_KBDILLUMDOWN,
250 KEY_KBDILLUMUP,
251 KEY_SEND,
252 KEY_REPLY,
253 KEY_FORWARDMAIL,
254 KEY_SAVE,
255 KEY_DOCUMENTS,
256 KEY_BATTERY,
257 KEY_BLUETOOTH,
258 KEY_WLAN,
259 KEY_UWB,
260 KEY_UNKNOWN,
261 KEY_VIDEO_NEXT,
262 KEY_VIDEO_PREV,
263 KEY_BRIGHTNESS_CYCLE,
264 KEY_BRIGHTNESS_AUTO,
265 KEY_DISPLAY_OFF,
266 KEY_WWAN,
267 KEY_RFKILL,
268 KEY_MICMUTE,
269 KEY_249,
270 KEY_250,
271 KEY_251,
272 KEY_252,
273 KEY_253,
274 KEY_254,
275 KEY_255,
276 BTN_0,
277 BTN_1,
278 BTN_2,
279 BTN_3,
280 BTN_4,
281 BTN_5,
282 BTN_6,
283 BTN_7,
284 BTN_8,
285 BTN_9,
286 KEY_266,
287 KEY_267,
288 KEY_268,
289 KEY_269,
290 KEY_270,
291 KEY_271,
292 BTN_LEFT,
293 BTN_RIGHT,
294 BTN_MIDDLE,
295 BTN_SIDE,
296 BTN_EXTRA,
297 BTN_FORWARD,
298 BTN_BACK,
299 BTN_TASK,
300 KEY_280,
301 KEY_281,
302 KEY_282,
303 KEY_283,
304 KEY_284,
305 KEY_285,
306 KEY_286,
307 KEY_287,
308 BTN_TRIGGER,
309 BTN_THUMB,
310 BTN_THUMB2,
311 BTN_TOP,
312 BTN_TOP2,
313 BTN_PINKIE,
314 BTN_BASE,
315 BTN_BASE2,
316 BTN_BASE3,
317 BTN_BASE4,
318 BTN_BASE5,
319 BTN_BASE6,
320 KEY_300,
321 KEY_301,
322 KEY_302,
323 BTN_DEAD,
324 BTN_SOUTH,
325 BTN_EAST,
326 BTN_C,
327 BTN_NORTH,
328 BTN_WEST,
329 BTN_Z,
330 BTN_TL,
331 BTN_TR,
332 BTN_TL2,
333 BTN_TR2,
334 BTN_SELECT,
335 BTN_START,
336 BTN_MODE,
337 BTN_THUMBL,
338 BTN_THUMBR,
339 KEY_319,
340 BTN_TOOL_PEN,
341 BTN_TOOL_RUBBER,
342 BTN_TOOL_BRUSH,
343 BTN_TOOL_PENCIL,
344 BTN_TOOL_AIRBRUSH,
345 BTN_TOOL_FINGER,
346 BTN_TOOL_MOUSE,
347 BTN_TOOL_LENS,
348 BTN_TOOL_QUINTTAP,
349 BTN_STYLUS3,
350 BTN_TOUCH,
351 BTN_STYLUS,
352 BTN_STYLUS2,
353 BTN_TOOL_DOUBLETAP,
354 BTN_TOOL_TRIPLETAP,
355 BTN_TOOL_QUADTAP,
356 BTN_GEAR_DOWN,
357 BTN_GEAR_UP,
358 KEY_338,
359 KEY_339,
360 KEY_340,
361 KEY_341,
362 KEY_342,
363 KEY_343,
364 KEY_344,
365 KEY_345,
366 KEY_346,
367 KEY_347,
368 KEY_348,
369 KEY_349,
370 KEY_350,
371 KEY_351,
372 KEY_OK,
373 KEY_SELECT,
374 KEY_GOTO,
375 KEY_CLEAR,
376 KEY_POWER2,
377 KEY_OPTION,
378 KEY_INFO,
379 KEY_TIME,
380 KEY_VENDOR,
381 KEY_ARCHIVE,
382 KEY_PROGRAM,
383 KEY_CHANNEL,
384 KEY_FAVORITES,
385 KEY_EPG,
386 KEY_PVR,
387 KEY_MHP,
388 KEY_LANGUAGE,
389 KEY_TITLE,
390 KEY_SUBTITLE,
391 KEY_ANGLE,
392 KEY_FULL_SCREEN,
393 KEY_MODE,
394 KEY_KEYBOARD,
395 KEY_ASPECT_RATIO,
396 KEY_PC,
397 KEY_TV,
398 KEY_TV2,
399 KEY_VCR,
400 KEY_VCR2,
401 KEY_SAT,
402 KEY_SAT2,
403 KEY_CD,
404 KEY_TAPE,
405 KEY_RADIO,
406 KEY_TUNER,
407 KEY_PLAYER,
408 KEY_TEXT,
409 KEY_DVD,
410 KEY_AUX,
411 KEY_MP3,
412 KEY_AUDIO,
413 KEY_VIDEO,
414 KEY_DIRECTORY,
415 KEY_LIST,
416 KEY_MEMO,
417 KEY_CALENDAR,
418 KEY_RED,
419 KEY_GREEN,
420 KEY_YELLOW,
421 KEY_BLUE,
422 KEY_CHANNELUP,
423 KEY_CHANNELDOWN,
424 KEY_FIRST,
425 KEY_LAST,
426 KEY_AB,
427 KEY_NEXT,
428 KEY_RESTART,
429 KEY_SLOW,
430 KEY_SHUFFLE,
431 KEY_BREAK,
432 KEY_PREVIOUS,
433 KEY_DIGITS,
434 KEY_TEEN,
435 KEY_TWEN,
436 KEY_VIDEOPHONE,
437 KEY_GAMES,
438 KEY_ZOOMIN,
439 KEY_ZOOMOUT,
440 KEY_ZOOMRESET,
441 KEY_WORDPROCESSOR,
442 KEY_EDITOR,
443 KEY_SPREADSHEET,
444 KEY_GRAPHICSEDITOR,
445 KEY_PRESENTATION,
446 KEY_DATABASE,
447 KEY_NEWS,
448 KEY_VOICEMAIL,
449 KEY_ADDRESSBOOK,
450 KEY_MESSENGER,
451 KEY_DISPLAYTOGGLE,
452 KEY_SPELLCHECK,
453 KEY_LOGOFF,
454 KEY_DOLLAR,
455 KEY_EURO,
456 KEY_FRAMEBACK,
457 KEY_FRAMEFORWARD,
458 KEY_CONTEXT_MENU,
459 KEY_MEDIA_REPEAT,
460 KEY_10CHANNELSUP,
461 KEY_10CHANNELSDOWN,
462 KEY_IMAGES,
463 KEY_443,
464 KEY_444,
465 KEY_445,
466 KEY_446,
467 KEY_447,
468 KEY_DEL_EOL,
469 KEY_DEL_EOS,
470 KEY_INS_LINE,
471 KEY_DEL_LINE,
472 KEY_452,
473 KEY_453,
474 KEY_454,
475 KEY_455,
476 KEY_456,
477 KEY_457,
478 KEY_458,
479 KEY_459,
480 KEY_460,
481 KEY_461,
482 KEY_462,
483 KEY_463,
484 KEY_FN,
485 KEY_FN_ESC,
486 KEY_FN_F1,
487 KEY_FN_F2,
488 KEY_FN_F3,
489 KEY_FN_F4,
490 KEY_FN_F5,
491 KEY_FN_F6,
492 KEY_FN_F7,
493 KEY_FN_F8,
494 KEY_FN_F9,
495 KEY_FN_F10,
496 KEY_FN_F11,
497 KEY_FN_F12,
498 KEY_FN_1,
499 KEY_FN_2,
500 KEY_FN_D,
501 KEY_FN_E,
502 KEY_FN_F,
503 KEY_FN_S,
504 KEY_FN_B,
505 KEY_485,
506 KEY_486,
507 KEY_487,
508 KEY_488,
509 KEY_489,
510 KEY_490,
511 KEY_491,
512 KEY_492,
513 KEY_493,
514 KEY_494,
515 KEY_495,
516 KEY_496,
517 KEY_BRL_DOT1,
518 KEY_BRL_DOT2,
519 KEY_BRL_DOT3,
520 KEY_BRL_DOT4,
521 KEY_BRL_DOT5,
522 KEY_BRL_DOT6,
523 KEY_BRL_DOT7,
524 KEY_BRL_DOT8,
525 KEY_BRL_DOT9,
526 KEY_BRL_DOT10,
527 KEY_507,
528 KEY_508,
529 KEY_509,
530 KEY_510,
531 KEY_511,
532 KEY_NUMERIC_0,
533 KEY_NUMERIC_1,
534 KEY_NUMERIC_2,
535 KEY_NUMERIC_3,
536 KEY_NUMERIC_4,
537 KEY_NUMERIC_5,
538 KEY_NUMERIC_6,
539 KEY_NUMERIC_7,
540 KEY_NUMERIC_8,
541 KEY_NUMERIC_9,
542 KEY_NUMERIC_STAR,
543 KEY_NUMERIC_POUND,
544 KEY_NUMERIC_A,
545 KEY_NUMERIC_B,
546 KEY_NUMERIC_C,
547 KEY_NUMERIC_D,
548 KEY_CAMERA_FOCUS,
549 KEY_WPS_BUTTON,
550 KEY_TOUCHPAD_TOGGLE,
551 KEY_TOUCHPAD_ON,
552 KEY_TOUCHPAD_OFF,
553 KEY_CAMERA_ZOOMIN,
554 KEY_CAMERA_ZOOMOUT,
555 KEY_CAMERA_UP,
556 KEY_CAMERA_DOWN,
557 KEY_CAMERA_LEFT,
558 KEY_CAMERA_RIGHT,
559 KEY_ATTENDANT_ON,
560 KEY_ATTENDANT_OFF,
561 KEY_ATTENDANT_TOGGLE,
562 KEY_LIGHTS_TOGGLE,
563 KEY_543,
564 BTN_DPAD_UP,
565 BTN_DPAD_DOWN,
566 BTN_DPAD_LEFT,
567 BTN_DPAD_RIGHT,
568 KEY_548,
569 KEY_549,
570 KEY_550,
571 KEY_551,
572 KEY_552,
573 KEY_553,
574 KEY_554,
575 KEY_555,
576 KEY_556,
577 KEY_557,
578 KEY_558,
579 KEY_559,
580 KEY_ALS_TOGGLE,
581 KEY_ROTATE_LOCK_TOGGLE,
582 KEY_562,
583 KEY_563,
584 KEY_564,
585 KEY_565,
586 KEY_566,
587 KEY_567,
588 KEY_568,
589 KEY_569,
590 KEY_570,
591 KEY_571,
592 KEY_572,
593 KEY_573,
594 KEY_574,
595 KEY_575,
596 KEY_BUTTONCONFIG,
597 KEY_TASKMANAGER,
598 KEY_JOURNAL,
599 KEY_CONTROLPANEL,
600 KEY_APPSELECT,
601 KEY_SCREENSAVER,
602 KEY_VOICECOMMAND,
603 KEY_ASSISTANT,
604 KEY_KBD_LAYOUT_NEXT,
605 KEY_585,
606 KEY_586,
607 KEY_587,
608 KEY_588,
609 KEY_589,
610 KEY_590,
611 KEY_591,
612 KEY_BRIGHTNESS_MIN,
613 KEY_BRIGHTNESS_MAX,
614 KEY_594,
615 KEY_595,
616 KEY_596,
617 KEY_597,
618 KEY_598,
619 KEY_599,
620 KEY_600,
621 KEY_601,
622 KEY_602,
623 KEY_603,
624 KEY_604,
625 KEY_605,
626 KEY_606,
627 KEY_607,
628 KEY_KBDINPUTASSIST_PREV,
629 KEY_KBDINPUTASSIST_NEXT,
630 KEY_KBDINPUTASSIST_PREVGROUP,
631 KEY_KBDINPUTASSIST_NEXTGROUP,
632 KEY_KBDINPUTASSIST_ACCEPT,
633 KEY_KBDINPUTASSIST_CANCEL,
634 KEY_RIGHT_UP,
635 KEY_RIGHT_DOWN,
636 KEY_LEFT_UP,
637 KEY_LEFT_DOWN,
638 KEY_ROOT_MENU,
639 KEY_MEDIA_TOP_MENU,
640 KEY_NUMERIC_11,
641 KEY_NUMERIC_12,
642 KEY_AUDIO_DESC,
643 KEY_3D_MODE,
644 KEY_NEXT_FAVORITE,
645 KEY_STOP_RECORD,
646 KEY_PAUSE_RECORD,
647 KEY_VOD,
648 KEY_UNMUTE,
649 KEY_FASTREVERSE,
650 KEY_SLOWREVERSE,
651 KEY_DATA,
652 KEY_ONSCREEN_KEYBOARD,
653 KEY_633,
654 KEY_634,
655 KEY_635,
656 KEY_636,
657 KEY_637,
658 KEY_638,
659 KEY_639,
660 KEY_640,
661 KEY_641,
662 KEY_642,
663 KEY_643,
664 KEY_644,
665 KEY_645,
666 KEY_646,
667 KEY_647,
668 KEY_648,
669 KEY_649,
670 KEY_650,
671 KEY_651,
672 KEY_652,
673 KEY_653,
674 KEY_654,
675 KEY_655,
676 KEY_656,
677 KEY_657,
678 KEY_658,
679 KEY_659,
680 KEY_660,
681 KEY_661,
682 KEY_662,
683 KEY_663,
684 KEY_664,
685 KEY_665,
686 KEY_666,
687 KEY_667,
688 KEY_668,
689 KEY_669,
690 KEY_670,
691 KEY_671,
692 KEY_672,
693 KEY_673,
694 KEY_674,
695 KEY_675,
696 KEY_676,
697 KEY_677,
698 KEY_678,
699 KEY_679,
700 KEY_680,
701 KEY_681,
702 KEY_682,
703 KEY_683,
704 KEY_684,
705 KEY_685,
706 KEY_686,
707 KEY_687,
708 KEY_688,
709 KEY_689,
710 KEY_690,
711 KEY_691,
712 KEY_692,
713 KEY_693,
714 KEY_694,
715 KEY_695,
716 KEY_696,
717 KEY_697,
718 KEY_698,
719 KEY_699,
720 KEY_700,
721 KEY_701,
722 KEY_702,
723 KEY_703,
724 BTN_TRIGGER_HAPPY1,
725 BTN_TRIGGER_HAPPY2,
726 BTN_TRIGGER_HAPPY3,
727 BTN_TRIGGER_HAPPY4,
728 BTN_TRIGGER_HAPPY5,
729 BTN_TRIGGER_HAPPY6,
730 BTN_TRIGGER_HAPPY7,
731 BTN_TRIGGER_HAPPY8,
732 BTN_TRIGGER_HAPPY9,
733 BTN_TRIGGER_HAPPY10,
734 BTN_TRIGGER_HAPPY11,
735 BTN_TRIGGER_HAPPY12,
736 BTN_TRIGGER_HAPPY13,
737 BTN_TRIGGER_HAPPY14,
738 BTN_TRIGGER_HAPPY15,
739 BTN_TRIGGER_HAPPY16,
740 BTN_TRIGGER_HAPPY17,
741 BTN_TRIGGER_HAPPY18,
742 BTN_TRIGGER_HAPPY19,
743 BTN_TRIGGER_HAPPY20,
744 BTN_TRIGGER_HAPPY21,
745 BTN_TRIGGER_HAPPY22,
746 BTN_TRIGGER_HAPPY23,
747 BTN_TRIGGER_HAPPY24,
748 BTN_TRIGGER_HAPPY25,
749 BTN_TRIGGER_HAPPY26,
750 BTN_TRIGGER_HAPPY27,
751 BTN_TRIGGER_HAPPY28,
752 BTN_TRIGGER_HAPPY29,
753 BTN_TRIGGER_HAPPY30,
754 BTN_TRIGGER_HAPPY31,
755 BTN_TRIGGER_HAPPY32,
756 BTN_TRIGGER_HAPPY33,
757 BTN_TRIGGER_HAPPY34,
758 BTN_TRIGGER_HAPPY35,
759 BTN_TRIGGER_HAPPY36,
760 BTN_TRIGGER_HAPPY37,
761 BTN_TRIGGER_HAPPY38,
762 BTN_TRIGGER_HAPPY39,
763 BTN_TRIGGER_HAPPY40,
764 BTN_MAX,
765 MouseWheelUp,
766 MouseWheelDown,
767 MouseWheelLeft,
768 MouseWheelRight,
769 KEY_749,
770 KEY_750,
771 KEY_751,
772 KEY_752,
773 KEY_753,
774 KEY_754,
775 KEY_755,
776 KEY_756,
777 KEY_757,
778 KEY_758,
779 KEY_759,
780 KEY_760,
781 KEY_761,
782 KEY_762,
783 KEY_763,
784 KEY_764,
785 KEY_765,
786 KEY_766,
787 KEY_MAX,
788 ];
789
790 for osc in oscs.iter().copied() {
791 let roundtrip = OsCode::from(KeyCode::from(osc));
792 assert_eq!(osc, roundtrip);
793 }
794}