chromiumoxide/
keys.rs

1//! Code based on [rust-headless-chrome](https://github.com/atroche/rust-headless-chrome/blob/master/src/browser/tab/keys.rs)
2
3/// Represents a key on a keyboard
4#[derive(Debug)]
5pub struct KeyDefinition {
6    pub key: &'static str,
7    pub key_code: i64,
8    pub code: &'static str,
9    pub text: Option<&'static str>,
10}
11
12//  Generated the following in node using Puppeteer:
13//  keys = require("./lib/USKeyboardLayout.js")
14//  toStruct = (kD) => `KeyDefinition { key: "${kD.key}", key_code:
15// "${kD.keyCode}", code: "${kD.code}", text: kD.text }`  output = Object.
16// values(keys).map(toStruct).join(",\n")  const fs = require('fs');
17//  fs.writeFile("/tmp/blah1", output)
18
19pub const USKEYBOARD_LAYOUT: [KeyDefinition; 244] = [
20    KeyDefinition {
21        key: "0",
22        key_code: 48,
23        code: "Digit0",
24        text: None,
25    },
26    KeyDefinition {
27        key: "1",
28        key_code: 49,
29        code: "Digit1",
30        text: None,
31    },
32    KeyDefinition {
33        key: "2",
34        key_code: 50,
35        code: "Digit2",
36        text: None,
37    },
38    KeyDefinition {
39        key: "3",
40        key_code: 51,
41        code: "Digit3",
42        text: None,
43    },
44    KeyDefinition {
45        key: "4",
46        key_code: 52,
47        code: "Digit4",
48        text: None,
49    },
50    KeyDefinition {
51        key: "5",
52        key_code: 53,
53        code: "Digit5",
54        text: None,
55    },
56    KeyDefinition {
57        key: "6",
58        key_code: 54,
59        code: "Digit6",
60        text: None,
61    },
62    KeyDefinition {
63        key: "7",
64        key_code: 55,
65        code: "Digit7",
66        text: None,
67    },
68    KeyDefinition {
69        key: "8",
70        key_code: 56,
71        code: "Digit8",
72        text: None,
73    },
74    KeyDefinition {
75        key: "9",
76        key_code: 57,
77        code: "Digit9",
78        text: None,
79    },
80    KeyDefinition {
81        key: "Power",
82        key_code: 0,
83        code: "Power",
84        text: None,
85    },
86    KeyDefinition {
87        key: "Eject",
88        key_code: 0,
89        code: "Eject",
90        text: None,
91    },
92    KeyDefinition {
93        key: "Cancel",
94        key_code: 3,
95        code: "Abort",
96        text: None,
97    },
98    KeyDefinition {
99        key: "Help",
100        key_code: 6,
101        code: "Help",
102        text: None,
103    },
104    KeyDefinition {
105        key: "Backspace",
106        key_code: 8,
107        code: "Backspace",
108        text: None,
109    },
110    KeyDefinition {
111        key: "Tab",
112        key_code: 9,
113        code: "Tab",
114        text: None,
115    },
116    KeyDefinition {
117        key: "Clear",
118        key_code: 12,
119        code: "Numpad5",
120        text: None,
121    },
122    KeyDefinition {
123        key: "Enter",
124        key_code: 13,
125        code: "Enter",
126        text: Some("\r"),
127    },
128    KeyDefinition {
129        key: "Shift",
130        key_code: 16,
131        code: "ShiftLeft",
132        text: None,
133    },
134    KeyDefinition {
135        key: "Shift",
136        key_code: 16,
137        code: "ShiftRight",
138        text: None,
139    },
140    KeyDefinition {
141        key: "Control",
142        key_code: 17,
143        code: "ControlLeft",
144        text: None,
145    },
146    KeyDefinition {
147        key: "Control",
148        key_code: 17,
149        code: "ControlRight",
150        text: None,
151    },
152    KeyDefinition {
153        key: "Alt",
154        key_code: 18,
155        code: "AltLeft",
156        text: None,
157    },
158    KeyDefinition {
159        key: "Alt",
160        key_code: 18,
161        code: "AltRight",
162        text: None,
163    },
164    KeyDefinition {
165        key: "Pause",
166        key_code: 19,
167        code: "Pause",
168        text: None,
169    },
170    KeyDefinition {
171        key: "CapsLock",
172        key_code: 20,
173        code: "CapsLock",
174        text: None,
175    },
176    KeyDefinition {
177        key: "Escape",
178        key_code: 27,
179        code: "Escape",
180        text: None,
181    },
182    KeyDefinition {
183        key: "Convert",
184        key_code: 28,
185        code: "Convert",
186        text: None,
187    },
188    KeyDefinition {
189        key: "NonConvert",
190        key_code: 29,
191        code: "NonConvert",
192        text: None,
193    },
194    KeyDefinition {
195        key: " ",
196        key_code: 32,
197        code: "Space",
198        text: None,
199    },
200    KeyDefinition {
201        key: "PageUp",
202        key_code: 33,
203        code: "Numpad9",
204        text: None,
205    },
206    KeyDefinition {
207        key: "PageUp",
208        key_code: 33,
209        code: "PageUp",
210        text: None,
211    },
212    KeyDefinition {
213        key: "PageDown",
214        key_code: 34,
215        code: "Numpad3",
216        text: None,
217    },
218    KeyDefinition {
219        key: "PageDown",
220        key_code: 34,
221        code: "PageDown",
222        text: None,
223    },
224    KeyDefinition {
225        key: "End",
226        key_code: 35,
227        code: "End",
228        text: None,
229    },
230    KeyDefinition {
231        key: "End",
232        key_code: 35,
233        code: "Numpad1",
234        text: None,
235    },
236    KeyDefinition {
237        key: "Home",
238        key_code: 36,
239        code: "Home",
240        text: None,
241    },
242    KeyDefinition {
243        key: "Home",
244        key_code: 36,
245        code: "Numpad7",
246        text: None,
247    },
248    KeyDefinition {
249        key: "ArrowLeft",
250        key_code: 37,
251        code: "ArrowLeft",
252        text: None,
253    },
254    KeyDefinition {
255        key: "ArrowLeft",
256        key_code: 37,
257        code: "Numpad4",
258        text: None,
259    },
260    KeyDefinition {
261        key: "ArrowUp",
262        key_code: 38,
263        code: "Numpad8",
264        text: None,
265    },
266    KeyDefinition {
267        key: "ArrowUp",
268        key_code: 38,
269        code: "ArrowUp",
270        text: None,
271    },
272    KeyDefinition {
273        key: "ArrowRight",
274        key_code: 39,
275        code: "ArrowRight",
276        text: None,
277    },
278    KeyDefinition {
279        key: "ArrowRight",
280        key_code: 39,
281        code: "Numpad6",
282        text: None,
283    },
284    KeyDefinition {
285        key: "ArrowDown",
286        key_code: 40,
287        code: "Numpad2",
288        text: None,
289    },
290    KeyDefinition {
291        key: "ArrowDown",
292        key_code: 40,
293        code: "ArrowDown",
294        text: None,
295    },
296    KeyDefinition {
297        key: "Select",
298        key_code: 41,
299        code: "Select",
300        text: None,
301    },
302    KeyDefinition {
303        key: "Execute",
304        key_code: 43,
305        code: "Open",
306        text: None,
307    },
308    KeyDefinition {
309        key: "PrintScreen",
310        key_code: 44,
311        code: "PrintScreen",
312        text: None,
313    },
314    KeyDefinition {
315        key: "Insert",
316        key_code: 45,
317        code: "Insert",
318        text: None,
319    },
320    KeyDefinition {
321        key: "Insert",
322        key_code: 45,
323        code: "Numpad0",
324        text: None,
325    },
326    KeyDefinition {
327        key: "Delete",
328        key_code: 46,
329        code: "Delete",
330        text: None,
331    },
332    KeyDefinition {
333        key: "",
334        key_code: 46,
335        code: "NumpadDecimal",
336        text: None,
337    },
338    KeyDefinition {
339        key: "0",
340        key_code: 48,
341        code: "Digit0",
342        text: None,
343    },
344    KeyDefinition {
345        key: "1",
346        key_code: 49,
347        code: "Digit1",
348        text: None,
349    },
350    KeyDefinition {
351        key: "2",
352        key_code: 50,
353        code: "Digit2",
354        text: None,
355    },
356    KeyDefinition {
357        key: "3",
358        key_code: 51,
359        code: "Digit3",
360        text: None,
361    },
362    KeyDefinition {
363        key: "4",
364        key_code: 52,
365        code: "Digit4",
366        text: None,
367    },
368    KeyDefinition {
369        key: "5",
370        key_code: 53,
371        code: "Digit5",
372        text: None,
373    },
374    KeyDefinition {
375        key: "6",
376        key_code: 54,
377        code: "Digit6",
378        text: None,
379    },
380    KeyDefinition {
381        key: "7",
382        key_code: 55,
383        code: "Digit7",
384        text: None,
385    },
386    KeyDefinition {
387        key: "8",
388        key_code: 56,
389        code: "Digit8",
390        text: None,
391    },
392    KeyDefinition {
393        key: "9",
394        key_code: 57,
395        code: "Digit9",
396        text: None,
397    },
398    KeyDefinition {
399        key: "a",
400        key_code: 65,
401        code: "KeyA",
402        text: None,
403    },
404    KeyDefinition {
405        key: "b",
406        key_code: 66,
407        code: "KeyB",
408        text: None,
409    },
410    KeyDefinition {
411        key: "c",
412        key_code: 67,
413        code: "KeyC",
414        text: None,
415    },
416    KeyDefinition {
417        key: "d",
418        key_code: 68,
419        code: "KeyD",
420        text: None,
421    },
422    KeyDefinition {
423        key: "e",
424        key_code: 69,
425        code: "KeyE",
426        text: None,
427    },
428    KeyDefinition {
429        key: "f",
430        key_code: 70,
431        code: "KeyF",
432        text: None,
433    },
434    KeyDefinition {
435        key: "g",
436        key_code: 71,
437        code: "KeyG",
438        text: None,
439    },
440    KeyDefinition {
441        key: "h",
442        key_code: 72,
443        code: "KeyH",
444        text: None,
445    },
446    KeyDefinition {
447        key: "i",
448        key_code: 73,
449        code: "KeyI",
450        text: None,
451    },
452    KeyDefinition {
453        key: "j",
454        key_code: 74,
455        code: "KeyJ",
456        text: None,
457    },
458    KeyDefinition {
459        key: "k",
460        key_code: 75,
461        code: "KeyK",
462        text: None,
463    },
464    KeyDefinition {
465        key: "l",
466        key_code: 76,
467        code: "KeyL",
468        text: None,
469    },
470    KeyDefinition {
471        key: "m",
472        key_code: 77,
473        code: "KeyM",
474        text: None,
475    },
476    KeyDefinition {
477        key: "n",
478        key_code: 78,
479        code: "KeyN",
480        text: None,
481    },
482    KeyDefinition {
483        key: "o",
484        key_code: 79,
485        code: "KeyO",
486        text: None,
487    },
488    KeyDefinition {
489        key: "p",
490        key_code: 80,
491        code: "KeyP",
492        text: None,
493    },
494    KeyDefinition {
495        key: "q",
496        key_code: 81,
497        code: "KeyQ",
498        text: None,
499    },
500    KeyDefinition {
501        key: "r",
502        key_code: 82,
503        code: "KeyR",
504        text: None,
505    },
506    KeyDefinition {
507        key: "s",
508        key_code: 83,
509        code: "KeyS",
510        text: None,
511    },
512    KeyDefinition {
513        key: "t",
514        key_code: 84,
515        code: "KeyT",
516        text: None,
517    },
518    KeyDefinition {
519        key: "u",
520        key_code: 85,
521        code: "KeyU",
522        text: None,
523    },
524    KeyDefinition {
525        key: "v",
526        key_code: 86,
527        code: "KeyV",
528        text: None,
529    },
530    KeyDefinition {
531        key: "w",
532        key_code: 87,
533        code: "KeyW",
534        text: None,
535    },
536    KeyDefinition {
537        key: "x",
538        key_code: 88,
539        code: "KeyX",
540        text: None,
541    },
542    KeyDefinition {
543        key: "y",
544        key_code: 89,
545        code: "KeyY",
546        text: None,
547    },
548    KeyDefinition {
549        key: "z",
550        key_code: 90,
551        code: "KeyZ",
552        text: None,
553    },
554    KeyDefinition {
555        key: "Meta",
556        key_code: 91,
557        code: "MetaLeft",
558        text: None,
559    },
560    KeyDefinition {
561        key: "Meta",
562        key_code: 92,
563        code: "MetaRight",
564        text: None,
565    },
566    KeyDefinition {
567        key: "ContextMenu",
568        key_code: 93,
569        code: "ContextMenu",
570        text: None,
571    },
572    KeyDefinition {
573        key: "*",
574        key_code: 106,
575        code: "NumpadMultiply",
576        text: None,
577    },
578    KeyDefinition {
579        key: "+",
580        key_code: 107,
581        code: "NumpadAdd",
582        text: None,
583    },
584    KeyDefinition {
585        key: "-",
586        key_code: 109,
587        code: "NumpadSubtract",
588        text: None,
589    },
590    KeyDefinition {
591        key: "/",
592        key_code: 111,
593        code: "NumpadDivide",
594        text: None,
595    },
596    KeyDefinition {
597        key: "F1",
598        key_code: 112,
599        code: "F1",
600        text: None,
601    },
602    KeyDefinition {
603        key: "F2",
604        key_code: 113,
605        code: "F2",
606        text: None,
607    },
608    KeyDefinition {
609        key: "F3",
610        key_code: 114,
611        code: "F3",
612        text: None,
613    },
614    KeyDefinition {
615        key: "F4",
616        key_code: 115,
617        code: "F4",
618        text: None,
619    },
620    KeyDefinition {
621        key: "F5",
622        key_code: 116,
623        code: "F5",
624        text: None,
625    },
626    KeyDefinition {
627        key: "F6",
628        key_code: 117,
629        code: "F6",
630        text: None,
631    },
632    KeyDefinition {
633        key: "F7",
634        key_code: 118,
635        code: "F7",
636        text: None,
637    },
638    KeyDefinition {
639        key: "F8",
640        key_code: 119,
641        code: "F8",
642        text: None,
643    },
644    KeyDefinition {
645        key: "F9",
646        key_code: 120,
647        code: "F9",
648        text: None,
649    },
650    KeyDefinition {
651        key: "F10",
652        key_code: 121,
653        code: "F10",
654        text: None,
655    },
656    KeyDefinition {
657        key: "F11",
658        key_code: 122,
659        code: "F11",
660        text: None,
661    },
662    KeyDefinition {
663        key: "F12",
664        key_code: 123,
665        code: "F12",
666        text: None,
667    },
668    KeyDefinition {
669        key: "F13",
670        key_code: 124,
671        code: "F13",
672        text: None,
673    },
674    KeyDefinition {
675        key: "F14",
676        key_code: 125,
677        code: "F14",
678        text: None,
679    },
680    KeyDefinition {
681        key: "F15",
682        key_code: 126,
683        code: "F15",
684        text: None,
685    },
686    KeyDefinition {
687        key: "F16",
688        key_code: 127,
689        code: "F16",
690        text: None,
691    },
692    KeyDefinition {
693        key: "F17",
694        key_code: 128,
695        code: "F17",
696        text: None,
697    },
698    KeyDefinition {
699        key: "F18",
700        key_code: 129,
701        code: "F18",
702        text: None,
703    },
704    KeyDefinition {
705        key: "F19",
706        key_code: 130,
707        code: "F19",
708        text: None,
709    },
710    KeyDefinition {
711        key: "F20",
712        key_code: 131,
713        code: "F20",
714        text: None,
715    },
716    KeyDefinition {
717        key: "F21",
718        key_code: 132,
719        code: "F21",
720        text: None,
721    },
722    KeyDefinition {
723        key: "F22",
724        key_code: 133,
725        code: "F22",
726        text: None,
727    },
728    KeyDefinition {
729        key: "F23",
730        key_code: 134,
731        code: "F23",
732        text: None,
733    },
734    KeyDefinition {
735        key: "F24",
736        key_code: 135,
737        code: "F24",
738        text: None,
739    },
740    KeyDefinition {
741        key: "NumLock",
742        key_code: 144,
743        code: "NumLock",
744        text: None,
745    },
746    KeyDefinition {
747        key: "ScrollLock",
748        key_code: 145,
749        code: "ScrollLock",
750        text: None,
751    },
752    KeyDefinition {
753        key: "AudioVolumeMute",
754        key_code: 173,
755        code: "AudioVolumeMute",
756        text: None,
757    },
758    KeyDefinition {
759        key: "AudioVolumeDown",
760        key_code: 174,
761        code: "AudioVolumeDown",
762        text: None,
763    },
764    KeyDefinition {
765        key: "AudioVolumeUp",
766        key_code: 175,
767        code: "AudioVolumeUp",
768        text: None,
769    },
770    KeyDefinition {
771        key: "MediaTrackNext",
772        key_code: 176,
773        code: "MediaTrackNext",
774        text: None,
775    },
776    KeyDefinition {
777        key: "MediaTrackPrevious",
778        key_code: 177,
779        code: "MediaTrackPrevious",
780        text: None,
781    },
782    KeyDefinition {
783        key: "MediaStop",
784        key_code: 178,
785        code: "MediaStop",
786        text: None,
787    },
788    KeyDefinition {
789        key: "MediaPlayPause",
790        key_code: 179,
791        code: "MediaPlayPause",
792        text: None,
793    },
794    KeyDefinition {
795        key: ";",
796        key_code: 186,
797        code: "Semicolon",
798        text: None,
799    },
800    KeyDefinition {
801        key: "=",
802        key_code: 187,
803        code: "Equal",
804        text: None,
805    },
806    KeyDefinition {
807        key: "=",
808        key_code: 187,
809        code: "NumpadEqual",
810        text: None,
811    },
812    KeyDefinition {
813        key: ",",
814        key_code: 188,
815        code: "Comma",
816        text: None,
817    },
818    KeyDefinition {
819        key: "-",
820        key_code: 189,
821        code: "Minus",
822        text: None,
823    },
824    KeyDefinition {
825        key: ".",
826        key_code: 190,
827        code: "Period",
828        text: None,
829    },
830    KeyDefinition {
831        key: "/",
832        key_code: 191,
833        code: "Slash",
834        text: None,
835    },
836    KeyDefinition {
837        key: "`",
838        key_code: 192,
839        code: "Backquote",
840        text: None,
841    },
842    KeyDefinition {
843        key: "[",
844        key_code: 219,
845        code: "BracketLeft",
846        text: None,
847    },
848    KeyDefinition {
849        key: "\\",
850        key_code: 220,
851        code: "Backslash",
852        text: None,
853    },
854    KeyDefinition {
855        key: "]",
856        key_code: 221,
857        code: "BracketRight",
858        text: None,
859    },
860    KeyDefinition {
861        key: "'",
862        key_code: 222,
863        code: "Quote",
864        text: None,
865    },
866    KeyDefinition {
867        key: "AltGraph",
868        key_code: 225,
869        code: "AltGraph",
870        text: None,
871    },
872    KeyDefinition {
873        key: "CrSel",
874        key_code: 247,
875        code: "Props",
876        text: None,
877    },
878    KeyDefinition {
879        key: "Cancel",
880        key_code: 3,
881        code: "Abort",
882        text: None,
883    },
884    KeyDefinition {
885        key: "Clear",
886        key_code: 12,
887        code: "Numpad5",
888        text: None,
889    },
890    KeyDefinition {
891        key: "Shift",
892        key_code: 16,
893        code: "ShiftLeft",
894        text: None,
895    },
896    KeyDefinition {
897        key: "Control",
898        key_code: 17,
899        code: "ControlLeft",
900        text: None,
901    },
902    KeyDefinition {
903        key: "Alt",
904        key_code: 18,
905        code: "AltLeft",
906        text: None,
907    },
908    KeyDefinition {
909        key: "Accept",
910        key_code: 30,
911        code: "undefined",
912        text: None,
913    },
914    KeyDefinition {
915        key: "ModeChange",
916        key_code: 31,
917        code: "undefined",
918        text: None,
919    },
920    KeyDefinition {
921        key: " ",
922        key_code: 32,
923        code: "Space",
924        text: None,
925    },
926    KeyDefinition {
927        key: "Print",
928        key_code: 42,
929        code: "undefined",
930        text: None,
931    },
932    KeyDefinition {
933        key: "Execute",
934        key_code: 43,
935        code: "Open",
936        text: None,
937    },
938    KeyDefinition {
939        key: "",
940        key_code: 46,
941        code: "NumpadDecimal",
942        text: None,
943    },
944    KeyDefinition {
945        key: "a",
946        key_code: 65,
947        code: "KeyA",
948        text: None,
949    },
950    KeyDefinition {
951        key: "b",
952        key_code: 66,
953        code: "KeyB",
954        text: None,
955    },
956    KeyDefinition {
957        key: "c",
958        key_code: 67,
959        code: "KeyC",
960        text: None,
961    },
962    KeyDefinition {
963        key: "d",
964        key_code: 68,
965        code: "KeyD",
966        text: None,
967    },
968    KeyDefinition {
969        key: "e",
970        key_code: 69,
971        code: "KeyE",
972        text: None,
973    },
974    KeyDefinition {
975        key: "f",
976        key_code: 70,
977        code: "KeyF",
978        text: None,
979    },
980    KeyDefinition {
981        key: "g",
982        key_code: 71,
983        code: "KeyG",
984        text: None,
985    },
986    KeyDefinition {
987        key: "h",
988        key_code: 72,
989        code: "KeyH",
990        text: None,
991    },
992    KeyDefinition {
993        key: "i",
994        key_code: 73,
995        code: "KeyI",
996        text: None,
997    },
998    KeyDefinition {
999        key: "j",
1000        key_code: 74,
1001        code: "KeyJ",
1002        text: None,
1003    },
1004    KeyDefinition {
1005        key: "k",
1006        key_code: 75,
1007        code: "KeyK",
1008        text: None,
1009    },
1010    KeyDefinition {
1011        key: "l",
1012        key_code: 76,
1013        code: "KeyL",
1014        text: None,
1015    },
1016    KeyDefinition {
1017        key: "m",
1018        key_code: 77,
1019        code: "KeyM",
1020        text: None,
1021    },
1022    KeyDefinition {
1023        key: "n",
1024        key_code: 78,
1025        code: "KeyN",
1026        text: None,
1027    },
1028    KeyDefinition {
1029        key: "o",
1030        key_code: 79,
1031        code: "KeyO",
1032        text: None,
1033    },
1034    KeyDefinition {
1035        key: "p",
1036        key_code: 80,
1037        code: "KeyP",
1038        text: None,
1039    },
1040    KeyDefinition {
1041        key: "q",
1042        key_code: 81,
1043        code: "KeyQ",
1044        text: None,
1045    },
1046    KeyDefinition {
1047        key: "r",
1048        key_code: 82,
1049        code: "KeyR",
1050        text: None,
1051    },
1052    KeyDefinition {
1053        key: "s",
1054        key_code: 83,
1055        code: "KeyS",
1056        text: None,
1057    },
1058    KeyDefinition {
1059        key: "t",
1060        key_code: 84,
1061        code: "KeyT",
1062        text: None,
1063    },
1064    KeyDefinition {
1065        key: "u",
1066        key_code: 85,
1067        code: "KeyU",
1068        text: None,
1069    },
1070    KeyDefinition {
1071        key: "v",
1072        key_code: 86,
1073        code: "KeyV",
1074        text: None,
1075    },
1076    KeyDefinition {
1077        key: "w",
1078        key_code: 87,
1079        code: "KeyW",
1080        text: None,
1081    },
1082    KeyDefinition {
1083        key: "x",
1084        key_code: 88,
1085        code: "KeyX",
1086        text: None,
1087    },
1088    KeyDefinition {
1089        key: "y",
1090        key_code: 89,
1091        code: "KeyY",
1092        text: None,
1093    },
1094    KeyDefinition {
1095        key: "z",
1096        key_code: 90,
1097        code: "KeyZ",
1098        text: None,
1099    },
1100    KeyDefinition {
1101        key: "Meta",
1102        key_code: 91,
1103        code: "MetaLeft",
1104        text: None,
1105    },
1106    KeyDefinition {
1107        key: "*",
1108        key_code: 106,
1109        code: "NumpadMultiply",
1110        text: None,
1111    },
1112    KeyDefinition {
1113        key: "+",
1114        key_code: 107,
1115        code: "NumpadAdd",
1116        text: None,
1117    },
1118    KeyDefinition {
1119        key: "-",
1120        key_code: 109,
1121        code: "NumpadSubtract",
1122        text: None,
1123    },
1124    KeyDefinition {
1125        key: "/",
1126        key_code: 111,
1127        code: "NumpadDivide",
1128        text: None,
1129    },
1130    KeyDefinition {
1131        key: ";",
1132        key_code: 186,
1133        code: "Semicolon",
1134        text: None,
1135    },
1136    KeyDefinition {
1137        key: "=",
1138        key_code: 187,
1139        code: "Equal",
1140        text: None,
1141    },
1142    KeyDefinition {
1143        key: ",",
1144        key_code: 188,
1145        code: "Comma",
1146        text: None,
1147    },
1148    KeyDefinition {
1149        key: ".",
1150        key_code: 190,
1151        code: "Period",
1152        text: None,
1153    },
1154    KeyDefinition {
1155        key: "`",
1156        key_code: 192,
1157        code: "Backquote",
1158        text: None,
1159    },
1160    KeyDefinition {
1161        key: "[",
1162        key_code: 219,
1163        code: "BracketLeft",
1164        text: None,
1165    },
1166    KeyDefinition {
1167        key: "]",
1168        key_code: 221,
1169        code: "BracketRight",
1170        text: None,
1171    },
1172    KeyDefinition {
1173        key: "'",
1174        key_code: 222,
1175        code: "Quote",
1176        text: None,
1177    },
1178    KeyDefinition {
1179        key: "Attn",
1180        key_code: 246,
1181        code: "undefined",
1182        text: None,
1183    },
1184    KeyDefinition {
1185        key: "CrSel",
1186        key_code: 247,
1187        code: "Props",
1188        text: None,
1189    },
1190    KeyDefinition {
1191        key: "ExSel",
1192        key_code: 248,
1193        code: "undefined",
1194        text: None,
1195    },
1196    KeyDefinition {
1197        key: "EraseEof",
1198        key_code: 249,
1199        code: "undefined",
1200        text: None,
1201    },
1202    KeyDefinition {
1203        key: "Play",
1204        key_code: 250,
1205        code: "undefined",
1206        text: None,
1207    },
1208    KeyDefinition {
1209        key: "ZoomOut",
1210        key_code: 251,
1211        code: "undefined",
1212        text: None,
1213    },
1214    KeyDefinition {
1215        key: ")",
1216        key_code: 48,
1217        code: "Digit0",
1218        text: None,
1219    },
1220    KeyDefinition {
1221        key: "!",
1222        key_code: 49,
1223        code: "Digit1",
1224        text: None,
1225    },
1226    KeyDefinition {
1227        key: "@",
1228        key_code: 50,
1229        code: "Digit2",
1230        text: None,
1231    },
1232    KeyDefinition {
1233        key: "#",
1234        key_code: 51,
1235        code: "Digit3",
1236        text: None,
1237    },
1238    KeyDefinition {
1239        key: "$",
1240        key_code: 52,
1241        code: "Digit4",
1242        text: None,
1243    },
1244    KeyDefinition {
1245        key: "%",
1246        key_code: 53,
1247        code: "Digit5",
1248        text: None,
1249    },
1250    KeyDefinition {
1251        key: "^",
1252        key_code: 54,
1253        code: "Digit6",
1254        text: None,
1255    },
1256    KeyDefinition {
1257        key: "&",
1258        key_code: 55,
1259        code: "Digit7",
1260        text: None,
1261    },
1262    KeyDefinition {
1263        key: "(",
1264        key_code: 57,
1265        code: "Digit9",
1266        text: None,
1267    },
1268    KeyDefinition {
1269        key: "A",
1270        key_code: 65,
1271        code: "KeyA",
1272        text: None,
1273    },
1274    KeyDefinition {
1275        key: "B",
1276        key_code: 66,
1277        code: "KeyB",
1278        text: None,
1279    },
1280    KeyDefinition {
1281        key: "C",
1282        key_code: 67,
1283        code: "KeyC",
1284        text: None,
1285    },
1286    KeyDefinition {
1287        key: "D",
1288        key_code: 68,
1289        code: "KeyD",
1290        text: None,
1291    },
1292    KeyDefinition {
1293        key: "E",
1294        key_code: 69,
1295        code: "KeyE",
1296        text: None,
1297    },
1298    KeyDefinition {
1299        key: "F",
1300        key_code: 70,
1301        code: "KeyF",
1302        text: None,
1303    },
1304    KeyDefinition {
1305        key: "G",
1306        key_code: 71,
1307        code: "KeyG",
1308        text: None,
1309    },
1310    KeyDefinition {
1311        key: "H",
1312        key_code: 72,
1313        code: "KeyH",
1314        text: None,
1315    },
1316    KeyDefinition {
1317        key: "I",
1318        key_code: 73,
1319        code: "KeyI",
1320        text: None,
1321    },
1322    KeyDefinition {
1323        key: "J",
1324        key_code: 74,
1325        code: "KeyJ",
1326        text: None,
1327    },
1328    KeyDefinition {
1329        key: "K",
1330        key_code: 75,
1331        code: "KeyK",
1332        text: None,
1333    },
1334    KeyDefinition {
1335        key: "L",
1336        key_code: 76,
1337        code: "KeyL",
1338        text: None,
1339    },
1340    KeyDefinition {
1341        key: "M",
1342        key_code: 77,
1343        code: "KeyM",
1344        text: None,
1345    },
1346    KeyDefinition {
1347        key: "N",
1348        key_code: 78,
1349        code: "KeyN",
1350        text: None,
1351    },
1352    KeyDefinition {
1353        key: "O",
1354        key_code: 79,
1355        code: "KeyO",
1356        text: None,
1357    },
1358    KeyDefinition {
1359        key: "P",
1360        key_code: 80,
1361        code: "KeyP",
1362        text: None,
1363    },
1364    KeyDefinition {
1365        key: "Q",
1366        key_code: 81,
1367        code: "KeyQ",
1368        text: None,
1369    },
1370    KeyDefinition {
1371        key: "R",
1372        key_code: 82,
1373        code: "KeyR",
1374        text: None,
1375    },
1376    KeyDefinition {
1377        key: "S",
1378        key_code: 83,
1379        code: "KeyS",
1380        text: None,
1381    },
1382    KeyDefinition {
1383        key: "T",
1384        key_code: 84,
1385        code: "KeyT",
1386        text: None,
1387    },
1388    KeyDefinition {
1389        key: "U",
1390        key_code: 85,
1391        code: "KeyU",
1392        text: None,
1393    },
1394    KeyDefinition {
1395        key: "V",
1396        key_code: 86,
1397        code: "KeyV",
1398        text: None,
1399    },
1400    KeyDefinition {
1401        key: "W",
1402        key_code: 87,
1403        code: "KeyW",
1404        text: None,
1405    },
1406    KeyDefinition {
1407        key: "X",
1408        key_code: 88,
1409        code: "KeyX",
1410        text: None,
1411    },
1412    KeyDefinition {
1413        key: "Y",
1414        key_code: 89,
1415        code: "KeyY",
1416        text: None,
1417    },
1418    KeyDefinition {
1419        key: "Z",
1420        key_code: 90,
1421        code: "KeyZ",
1422        text: None,
1423    },
1424    KeyDefinition {
1425        key: ":",
1426        key_code: 186,
1427        code: "Semicolon",
1428        text: None,
1429    },
1430    KeyDefinition {
1431        key: "<",
1432        key_code: 188,
1433        code: "Comma",
1434        text: None,
1435    },
1436    KeyDefinition {
1437        key: "_",
1438        key_code: 189,
1439        code: "Minus",
1440        text: None,
1441    },
1442    KeyDefinition {
1443        key: ">",
1444        key_code: 190,
1445        code: "Period",
1446        text: None,
1447    },
1448    KeyDefinition {
1449        key: "?",
1450        key_code: 191,
1451        code: "Slash",
1452        text: None,
1453    },
1454    KeyDefinition {
1455        key: "~",
1456        key_code: 192,
1457        code: "Backquote",
1458        text: None,
1459    },
1460    KeyDefinition {
1461        key: "{",
1462        key_code: 219,
1463        code: "BracketLeft",
1464        text: None,
1465    },
1466    KeyDefinition {
1467        key: "|",
1468        key_code: 220,
1469        code: "Backslash",
1470        text: None,
1471    },
1472    KeyDefinition {
1473        key: "}",
1474        key_code: 221,
1475        code: "BracketRight",
1476        text: None,
1477    },
1478    KeyDefinition {
1479        key: "\"",
1480        key_code: 222,
1481        code: "Quote",
1482        text: None,
1483    },
1484];
1485
1486/// Returns the `KeyDefinition` by key name
1487/// # Example return the `Enter` key: `get_key_definition("Enter").unwrap()`
1488pub fn get_key_definition(key: impl AsRef<str>) -> Option<&'static KeyDefinition> {
1489    let key = key.as_ref();
1490    USKEYBOARD_LAYOUT
1491        .iter()
1492        .find(|key_definition| key_definition.key == key)
1493}