vitaly 0.1.32

VIA/Vial API client and cli tool for guiless keyboard configuration.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
use std::collections::HashMap;
use std::sync::LazyLock;

pub static SHORTNAMES: LazyLock<HashMap<u16, &str>> = LazyLock::new(|| {
    let mut m = HashMap::new();
    m.insert(0x0000, "");
    m.insert(0x0001, "");
    m.insert(0x0004, "A");
    m.insert(0x0005, "B");
    m.insert(0x0006, "C");
    m.insert(0x0007, "D");
    m.insert(0x0008, "E");
    m.insert(0x0009, "F");
    m.insert(0x000A, "G");
    m.insert(0x000B, "H");
    m.insert(0x000C, "I");
    m.insert(0x000D, "J");
    m.insert(0x000E, "K");
    m.insert(0x000F, "L");
    m.insert(0x0010, "M");
    m.insert(0x0011, "N");
    m.insert(0x0012, "O");
    m.insert(0x0013, "P");
    m.insert(0x0014, "Q");
    m.insert(0x0015, "R");
    m.insert(0x0016, "S");
    m.insert(0x0017, "T");
    m.insert(0x0018, "U");
    m.insert(0x0019, "V");
    m.insert(0x001A, "W");
    m.insert(0x001B, "X");
    m.insert(0x001C, "Y");
    m.insert(0x001D, "Z");
    m.insert(0x001E, "1");
    m.insert(0x001F, "2");
    m.insert(0x0020, "3");
    m.insert(0x0021, "4");
    m.insert(0x0022, "5");
    m.insert(0x0023, "6");
    m.insert(0x0024, "7");
    m.insert(0x0025, "8");
    m.insert(0x0026, "9");
    m.insert(0x0027, "0");
    m.insert(0x0028, "");
    m.insert(0x0029, "");
    m.insert(0x002A, "");
    m.insert(0x002B, "");
    m.insert(0x002C, "");
    m.insert(0x002D, "-");
    m.insert(0x002E, "=");
    m.insert(0x002F, "(");
    m.insert(0x0030, ")");
    m.insert(0x0031, "\\");
    m.insert(0x0032, "#");
    m.insert(0x0033, ";");
    m.insert(0x0034, "'");
    m.insert(0x0035, "~");
    m.insert(0x0036, ",");
    m.insert(0x0037, ".");
    m.insert(0x0038, "/");
    m.insert(0x0039, "");
    m.insert(0x003A, "F1");
    m.insert(0x003B, "F2");
    m.insert(0x003C, "F3");
    m.insert(0x003D, "F4");
    m.insert(0x003E, "F5");
    m.insert(0x003F, "F6");
    m.insert(0x0040, "F7");
    m.insert(0x0041, "F8");
    m.insert(0x0042, "F9");
    m.insert(0x0043, "F,10");
    m.insert(0x0044, "F,11");
    m.insert(0x0045, "F,12");
    m.insert(0x0048, "");
    m.insert(0x0049, "INS");
    m.insert(0x004A, "");
    m.insert(0x004B, "");
    m.insert(0x004C, "");
    m.insert(0x004D, "");
    m.insert(0x004E, "");
    m.insert(0x004F, "");
    m.insert(0x0050, "");
    m.insert(0x0051, "");
    m.insert(0x0052, "");
    m.insert(0x0053, "");
    m.insert(0x0054, "/");
    m.insert(0x0055, "K*");
    m.insert(0x0056, "K-");
    m.insert(0x0057, "K+");
    m.insert(0x0058, "K⏎");
    m.insert(0x0059, "K1");
    m.insert(0x005A, "K2");
    m.insert(0x005B, "K3");
    m.insert(0x005C, "K4");
    m.insert(0x005D, "K5");
    m.insert(0x005E, "K6");
    m.insert(0x005F, "K7");
    m.insert(0x0060, "K8");
    m.insert(0x0061, "K9");
    m.insert(0x0062, "K0");
    m.insert(0x0063, "K.");
    m.insert(0x0064, "\\");
    m.insert(0x0065, "APP");
    m.insert(0x0066, "");
    m.insert(0x0067, "K=");
    m.insert(0x0068, "F,13");
    m.insert(0x0069, "F,14");
    m.insert(0x006A, "F,15");
    m.insert(0x006B, "F,16");
    m.insert(0x006C, "F,17");
    m.insert(0x006D, "F,18");
    m.insert(0x006E, "F,19");
    m.insert(0x006F, "F,20");
    m.insert(0x0070, "F,21");
    m.insert(0x0071, "F,22");
    m.insert(0x0072, "F,23");
    m.insert(0x0073, "F,24");
    m.insert(0x0074, "EXE");
    m.insert(0x0075, "HLP");
    m.insert(0x0076, "🍔");
    m.insert(0x0078, "");
    m.insert(0x0079, "🔁");
    m.insert(0x007A, "");
    m.insert(0x007B, "");
    m.insert(0x007C, "CPY");
    m.insert(0x007D, "PST");
    m.insert(0x007E, "🔎");
    m.insert(0x007F, "Mut");
    m.insert(0x0080, "V+");
    m.insert(0x0081, "V-");
    m.insert(0x0085, "K,");
    m.insert(0x00A8, "Mut");
    m.insert(0x00A9, "V+");
    m.insert(0x00AA, "V-");
    m.insert(0x00AB, ">>");
    m.insert(0x00AC, "<<");
    m.insert(0x00AD, "KC_MEDIA_STOP");
    m.insert(0x00AE, "");
    m.insert(0x00AF, "KC_MEDIA_SELECT");
    m.insert(0x00B0, "KC_MEDIA_EJECT");
    m.insert(0x00BB, "FW");
    m.insert(0x00BC, "RW");
    m.insert(0x00BD, "B+");
    m.insert(0x00BE, "B-");
    m.insert(0x00C1, "⌘");
    m.insert(0x00C2, "LP");
    m.insert(0x00CD, "Mo,↑");
    m.insert(0x00CE, "Mo,↓");
    m.insert(0x00CF, "Mo,←");
    m.insert(0x00D0, "Mo,→");
    m.insert(0x00D1, "Mo,1");
    m.insert(0x00D2, "Mo,2");
    m.insert(0x00D3, "Mo,3");
    m.insert(0x00D4, "Mo,4");
    m.insert(0x00D5, "Mo,5");
    m.insert(0x00D6, "Mo,6");
    m.insert(0x00D7, "Mo,7");
    m.insert(0x00D8, "Mo,8");
    m.insert(0x00D9, "⚙↑");
    m.insert(0x00DA, "⚙↓");
    m.insert(0x00DB, "⚙←");
    m.insert(0x00DC, "⚙→");
    m.insert(0x00E0, "L⌃");
    m.insert(0x00E1, "L⇧");
    m.insert(0x00E2, "L⌥");
    m.insert(0x00E3, "L⌘");
    m.insert(0x00E4, "R⌃");
    m.insert(0x00E5, "R⇧");
    m.insert(0x00E6, "R⌥");
    m.insert(0x00E7, "R⌘");
    m.insert(0x5700, "TD,0");
    m.insert(0x5701, "TD,1");
    m.insert(0x5702, "TD,2");
    m.insert(0x5703, "TD,3");
    m.insert(0x5704, "TD,4");
    m.insert(0x5705, "TD,5");
    m.insert(0x5706, "TD,6");
    m.insert(0x5707, "TD,7");
    m.insert(0x5708, "TD,8");
    m.insert(0x5709, "TD,9");
    m.insert(0x570A, "TD,10");
    m.insert(0x570B, "TD,11");
    m.insert(0x570C, "TD,12");
    m.insert(0x570D, "TD,13");
    m.insert(0x570E, "TD,14");
    m.insert(0x570F, "TD,15");
    m.insert(0x7700, "M,0");
    m.insert(0x7701, "M,1");
    m.insert(0x7702, "M,2");
    m.insert(0x7703, "M,3");
    m.insert(0x7704, "M,4");
    m.insert(0x7705, "M,5");
    m.insert(0x7706, "M,6");
    m.insert(0x7707, "M,7");
    m.insert(0x7708, "M,8");
    m.insert(0x7709, "M,9");
    m.insert(0x770A, "M,10");
    m.insert(0x770B, "M,11");
    m.insert(0x770C, "M,12");
    m.insert(0x770D, "M,13");
    m.insert(0x770E, "M,14");
    m.insert(0x770F, "M,15");
    m.insert(0x7710, "M,16");
    m.insert(0x7711, "M,17");
    m.insert(0x7712, "M,18");
    m.insert(0x7713, "M,19");
    m.insert(0x7714, "M,20");
    m.insert(0x7715, "M,21");
    m.insert(0x7716, "M,22");
    m.insert(0x7717, "M,23");
    m.insert(0x7718, "M,24");
    m.insert(0x7719, "M,25");
    m.insert(0x771A, "M,26");
    m.insert(0x771B, "M,27");
    m.insert(0x771C, "M,28");
    m.insert(0x771D, "M,29");
    m.insert(0x771E, "M,30");
    m.insert(0x771F, "M,31");
    m.insert(0x7E00, "⌨,0");
    m.insert(0x7E01, "⌨,1");
    m.insert(0x7E02, "⌨,2");
    m.insert(0x7E03, "⌨,3");
    m.insert(0x7E04, "⌨,4");
    m.insert(0x7E05, "⌨,5");
    m.insert(0x7E06, "⌨,6");
    m.insert(0x7E07, "⌨,7");
    m.insert(0x7E08, "⌨,8");
    m.insert(0x7E09, "⌨,9");
    m.insert(0x7E0A, "⌨,10");
    m.insert(0x7E0B, "⌨,11");
    m.insert(0x7E0C, "⌨,12");
    m.insert(0x7E0D, "⌨,13");
    m.insert(0x7E0E, "⌨,14");
    m.insert(0x7E0F, "⌨,15");
    m.insert(0x7E10, "⌨,16");
    m.insert(0x7E11, "⌨,17");
    m.insert(0x7E12, "⌨,18");
    m.insert(0x7E13, "⌨,19");
    m.insert(0x7E14, "⌨,20");
    m.insert(0x7E15, "⌨,21");
    m.insert(0x7E16, "⌨,22");
    m.insert(0x7E17, "⌨,23");
    m.insert(0x7E18, "⌨,24");
    m.insert(0x7E19, "⌨,25");
    m.insert(0x7E1A, "⌨,26");
    m.insert(0x7E1B, "⌨,27");
    m.insert(0x7E1C, "⌨,28");
    m.insert(0x7E1D, "⌨,29");
    m.insert(0x7E1E, "⌨,30");
    m.insert(0x7E1F, "⌨,31");
    m.insert(0x7E40, "QK_USER_0");
    m.insert(0x7E41, "QK_USER_1");
    m.insert(0x7E42, "QK_USER_2");
    m.insert(0x7E43, "QK_USER_3");
    m.insert(0x7E44, "QK_USER_4");
    m.insert(0x7E45, "QK_USER_5");
    m.insert(0x7E46, "QK_USER_6");
    m.insert(0x7E47, "QK_USER_7");
    m.insert(0x7E48, "QK_USER_8");
    m.insert(0x7E49, "QK_USER_9");
    m.insert(0x7E4A, "QK_USER_10");
    m.insert(0x7E4B, "QK_USER_11");
    m.insert(0x7E4C, "QK_USER_12");
    m.insert(0x7E4D, "QK_USER_13");
    m.insert(0x7E4E, "QK_USER_14");
    m.insert(0x7E4F, "QK_USER_15");
    m.insert(0x7E50, "QK_USER_16");
    m.insert(0x7E51, "QK_USER_17");
    m.insert(0x7E52, "QK_USER_18");
    m.insert(0x7E53, "QK_USER_19");
    m.insert(0x7E54, "QK_USER_20");
    m.insert(0x7E55, "QK_USER_21");
    m.insert(0x7E56, "QK_USER_22");
    m.insert(0x7E57, "QK_USER_23");
    m.insert(0x7E58, "QK_USER_24");
    m.insert(0x7E59, "QK_USER_25");
    m.insert(0x7E5A, "QK_USER_26");
    m.insert(0x7E5B, "QK_USER_27");
    m.insert(0x7E5C, "QK_USER_28");
    m.insert(0x7E5D, "QK_USER_29");
    m.insert(0x7E5E, "QK_USER_30");
    m.insert(0x7E5F, "QK_USER_31");
    m.insert(0x7C77, "Fn1,Fn3");
    m.insert(0x7C78, "Fn2,Fn3");
    m
});

/*
pub static MODNAMES: LazyLock<HashMap<u8, &str>> = LazyLock::new(|| {
    let mut m = HashMap::new();
    m.insert(0x01, "MOD_LCTL");
    m.insert(0x02, "MOD_LSFT");
    m.insert(0x04, "MOD_LALT");
    m.insert(0x08, "MOD_LGUI");
    m.insert(0x11, "MOD_RCTL");
    m.insert(0x12, "MOD_RSFT");
    m.insert(0x14, "MOD_RALT");
    m.insert(0x18, "MOD_RGUI");
    m
});
*/

pub static FULLNAMES: LazyLock<HashMap<u16, &str>> = LazyLock::new(|| {
    let mut m = HashMap::new();
    m.insert(0x0000, "KC_NO");
    m.insert(0x0001, "KC_TRANSPARENT");
    m.insert(0x0004, "KC_A");
    m.insert(0x0005, "KC_B");
    m.insert(0x0006, "KC_C");
    m.insert(0x0007, "KC_D");
    m.insert(0x0008, "KC_E");
    m.insert(0x0009, "KC_F");
    m.insert(0x000A, "KC_G");
    m.insert(0x000B, "KC_H");
    m.insert(0x000C, "KC_I");
    m.insert(0x000D, "KC_J");
    m.insert(0x000E, "KC_K");
    m.insert(0x000F, "KC_L");
    m.insert(0x0010, "KC_M");
    m.insert(0x0011, "KC_N");
    m.insert(0x0012, "KC_O");
    m.insert(0x0013, "KC_P");
    m.insert(0x0014, "KC_Q");
    m.insert(0x0015, "KC_R");
    m.insert(0x0016, "KC_S");
    m.insert(0x0017, "KC_T");
    m.insert(0x0018, "KC_U");
    m.insert(0x0019, "KC_V");
    m.insert(0x001A, "KC_W");
    m.insert(0x001B, "KC_X");
    m.insert(0x001C, "KC_Y");
    m.insert(0x001D, "KC_Z");
    m.insert(0x001E, "KC_1");
    m.insert(0x001F, "KC_2");
    m.insert(0x0020, "KC_3");
    m.insert(0x0021, "KC_4");
    m.insert(0x0022, "KC_5");
    m.insert(0x0023, "KC_6");
    m.insert(0x0024, "KC_7");
    m.insert(0x0025, "KC_8");
    m.insert(0x0026, "KC_9");
    m.insert(0x0027, "KC_0");
    m.insert(0x0028, "KC_ENTER");
    m.insert(0x0029, "KC_ESCAPE");
    m.insert(0x002A, "KC_BACKSPACE");
    m.insert(0x002B, "KC_TAB");
    m.insert(0x002C, "KC_SPACE");
    m.insert(0x002D, "KC_MINUS");
    m.insert(0x002E, "KC_EQUAL");
    m.insert(0x002F, "KC_LEFT_BRACKET");
    m.insert(0x0030, "KC_RIGHT_BRACKET");
    m.insert(0x0031, "KC_BACKSLASH");
    m.insert(0x0032, "KC_NONUS_HASH");
    m.insert(0x0033, "KC_SEMICOLON");
    m.insert(0x0034, "KC_QUOTE");
    m.insert(0x0035, "KC_GRAVE");
    m.insert(0x0036, "KC_COMMA");
    m.insert(0x0037, "KC_DOT");
    m.insert(0x0038, "KC_SLASH");
    m.insert(0x0039, "KC_CAPS_LOCK");
    m.insert(0x003A, "KC_F1");
    m.insert(0x003B, "KC_F2");
    m.insert(0x003C, "KC_F3");
    m.insert(0x003D, "KC_F4");
    m.insert(0x003E, "KC_F5");
    m.insert(0x003F, "KC_F6");
    m.insert(0x0040, "KC_F7");
    m.insert(0x0041, "KC_F8");
    m.insert(0x0042, "KC_F9");
    m.insert(0x0043, "KC_F10");
    m.insert(0x0044, "KC_F11");
    m.insert(0x0045, "KC_F12");
    m.insert(0x0046, "KC_PRINT_SCREEN");
    m.insert(0x0047, "KC_SCROLL_LOCK");
    m.insert(0x0048, "KC_PAUSE");
    m.insert(0x0049, "KC_INSERT");
    m.insert(0x004A, "KC_HOME");
    m.insert(0x004B, "KC_PAGE_UP");
    m.insert(0x004C, "KC_DELETE");
    m.insert(0x004D, "KC_END");
    m.insert(0x004E, "KC_PAGE_DOWN");
    m.insert(0x004F, "KC_RIGHT");
    m.insert(0x0050, "KC_LEFT");
    m.insert(0x0051, "KC_DOWN");
    m.insert(0x0052, "KC_UP");
    m.insert(0x0053, "KC_NUM_LOCK");
    m.insert(0x0054, "KC_KP_SLASH");
    m.insert(0x0055, "KC_KP_ASTERISK");
    m.insert(0x0056, "KC_KP_MINUS");
    m.insert(0x0057, "KC_KP_PLUS");
    m.insert(0x0058, "KC_KP_ENTER");
    m.insert(0x0059, "KC_KP_1");
    m.insert(0x005A, "KC_KP_2");
    m.insert(0x005B, "KC_KP_3");
    m.insert(0x005C, "KC_KP_4");
    m.insert(0x005D, "KC_KP_5");
    m.insert(0x005E, "KC_KP_6");
    m.insert(0x005F, "KC_KP_7");
    m.insert(0x0060, "KC_KP_8");
    m.insert(0x0061, "KC_KP_9");
    m.insert(0x0062, "KC_KP_0");
    m.insert(0x0063, "KC_KP_DOT");
    m.insert(0x0064, "KC_NONUS_BACKSLASH");
    m.insert(0x0065, "KC_APPLICATION");
    m.insert(0x0066, "KC_KB_POWER");
    m.insert(0x0067, "KC_KP_EQUAL");
    m.insert(0x0068, "KC_F13");
    m.insert(0x0069, "KC_F14");
    m.insert(0x006A, "KC_F15");
    m.insert(0x006B, "KC_F16");
    m.insert(0x006C, "KC_F17");
    m.insert(0x006D, "KC_F18");
    m.insert(0x006E, "KC_F19");
    m.insert(0x006F, "KC_F20");
    m.insert(0x0070, "KC_F21");
    m.insert(0x0071, "KC_F22");
    m.insert(0x0072, "KC_F23");
    m.insert(0x0073, "KC_F24");
    m.insert(0x0074, "KC_EXECUTE");
    m.insert(0x0075, "KC_HELP");
    m.insert(0x0076, "KC_MENU");
    m.insert(0x0077, "KC_SELECT");
    m.insert(0x0078, "KC_STOP");
    m.insert(0x0079, "KC_AGAIN");
    m.insert(0x007A, "KC_UNDO");
    m.insert(0x007B, "KC_CUT");
    m.insert(0x007C, "KC_COPY");
    m.insert(0x007D, "KC_PASTE");
    m.insert(0x007E, "KC_FIND");
    m.insert(0x007F, "KC_KB_MUTE");
    m.insert(0x0080, "KC_KB_VOLUME_UP");
    m.insert(0x0081, "KC_KB_VOLUME_DOWN");
    m.insert(0x0082, "KC_LOCKING_CAPS_LOCK");
    m.insert(0x0083, "KC_LOCKING_NUM_LOCK");
    m.insert(0x0084, "KC_LOCKING_SCROLL_LOCK");
    m.insert(0x0085, "KC_KP_COMMA");
    m.insert(0x0086, "KC_KP_EQUAL_AS400");
    m.insert(0x0087, "KC_INTERNATIONAL_1");
    m.insert(0x0088, "KC_INTERNATIONAL_2");
    m.insert(0x0089, "KC_INTERNATIONAL_3");
    m.insert(0x008A, "KC_INTERNATIONAL_4");
    m.insert(0x008B, "KC_INTERNATIONAL_5");
    m.insert(0x008C, "KC_INTERNATIONAL_6");
    m.insert(0x008D, "KC_INTERNATIONAL_7");
    m.insert(0x008E, "KC_INTERNATIONAL_8");
    m.insert(0x008F, "KC_INTERNATIONAL_9");
    m.insert(0x0090, "KC_LANGUAGE_1");
    m.insert(0x0091, "KC_LANGUAGE_2");
    m.insert(0x0092, "KC_LANGUAGE_3");
    m.insert(0x0093, "KC_LANGUAGE_4");
    m.insert(0x0094, "KC_LANGUAGE_5");
    m.insert(0x0095, "KC_LANGUAGE_6");
    m.insert(0x0096, "KC_LANGUAGE_7");
    m.insert(0x0097, "KC_LANGUAGE_8");
    m.insert(0x0098, "KC_LANGUAGE_9");
    m.insert(0x0099, "KC_ALTERNATE_ERASE");
    m.insert(0x009A, "KC_SYSTEM_REQUEST");
    m.insert(0x009B, "KC_CANCEL");
    m.insert(0x009C, "KC_CLEAR");
    m.insert(0x009D, "KC_PRIOR");
    m.insert(0x009E, "KC_RETURN");
    m.insert(0x009F, "KC_SEPARATOR");
    m.insert(0x00A0, "KC_OUT");
    m.insert(0x00A1, "KC_OPER");
    m.insert(0x00A2, "KC_CLEAR_AGAIN");
    m.insert(0x00A3, "KC_CRSEL");
    m.insert(0x00A4, "KC_EXSEL");
    m.insert(0x00A5, "KC_SYSTEM_POWER");
    m.insert(0x00A6, "KC_SYSTEM_SLEEP");
    m.insert(0x00A7, "KC_SYSTEM_WAKE");
    m.insert(0x00A8, "KC_AUDIO_MUTE");
    m.insert(0x00A9, "KC_AUDIO_VOL_UP");
    m.insert(0x00AA, "KC_AUDIO_VOL_DOWN");
    m.insert(0x00AB, "KC_MEDIA_NEXT_TRACK");
    m.insert(0x00AC, "KC_MEDIA_PREV_TRACK");
    m.insert(0x00AD, "KC_MEDIA_STOP");
    m.insert(0x00AE, "KC_MEDIA_PLAY_PAUSE");
    m.insert(0x00AF, "KC_MEDIA_SELECT");
    m.insert(0x00B0, "KC_MEDIA_EJECT");
    m.insert(0x00B1, "KC_MAIL");
    m.insert(0x00B2, "KC_CALCULATOR");
    m.insert(0x00B3, "KC_MY_COMPUTER");
    m.insert(0x00B4, "KC_WWW_SEARCH");
    m.insert(0x00B5, "KC_WWW_HOME");
    m.insert(0x00B6, "KC_WWW_BACK");
    m.insert(0x00B7, "KC_WWW_FORWARD");
    m.insert(0x00B8, "KC_WWW_STOP");
    m.insert(0x00B9, "KC_WWW_REFRESH");
    m.insert(0x00BA, "KC_WWW_FAVORITES");
    m.insert(0x00BB, "KC_MEDIA_FAST_FORWARD");
    m.insert(0x00BC, "KC_MEDIA_REWIND");
    m.insert(0x00BD, "KC_BRIGHTNESS_UP");
    m.insert(0x00BE, "KC_BRIGHTNESS_DOWN");
    m.insert(0x00BF, "KC_CONTROL_PANEL");
    m.insert(0x00C0, "KC_ASSISTANT");
    m.insert(0x00C1, "KC_MISSION_CONTROL");
    m.insert(0x00C2, "KC_LAUNCHPAD");
    m.insert(0x00CD, "QK_MOUSE_CURSOR_UP");
    m.insert(0x00CE, "QK_MOUSE_CURSOR_DOWN");
    m.insert(0x00CF, "QK_MOUSE_CURSOR_LEFT");
    m.insert(0x00D0, "QK_MOUSE_CURSOR_RIGHT");
    m.insert(0x00D1, "QK_MOUSE_BUTTON_1");
    m.insert(0x00D2, "QK_MOUSE_BUTTON_2");
    m.insert(0x00D3, "QK_MOUSE_BUTTON_3");
    m.insert(0x00D4, "QK_MOUSE_BUTTON_4");
    m.insert(0x00D5, "QK_MOUSE_BUTTON_5");
    m.insert(0x00D6, "QK_MOUSE_BUTTON_6");
    m.insert(0x00D7, "QK_MOUSE_BUTTON_7");
    m.insert(0x00D8, "QK_MOUSE_BUTTON_8");
    m.insert(0x00D9, "QK_MOUSE_WHEEL_UP");
    m.insert(0x00DA, "QK_MOUSE_WHEEL_DOWN");
    m.insert(0x00DB, "QK_MOUSE_WHEEL_LEFT");
    m.insert(0x00DC, "QK_MOUSE_WHEEL_RIGHT");
    m.insert(0x00DD, "QK_MOUSE_ACCELERATION_0");
    m.insert(0x00DE, "QK_MOUSE_ACCELERATION_1");
    m.insert(0x00DF, "QK_MOUSE_ACCELERATION_2");
    m.insert(0x00E0, "KC_LEFT_CTRL");
    m.insert(0x00E1, "KC_LEFT_SHIFT");
    m.insert(0x00E2, "KC_LEFT_ALT");
    m.insert(0x00E3, "KC_LEFT_GUI");
    m.insert(0x00E4, "KC_RIGHT_CTRL");
    m.insert(0x00E5, "KC_RIGHT_SHIFT");
    m.insert(0x00E6, "KC_RIGHT_ALT");
    m.insert(0x00E7, "KC_RIGHT_GUI");
    m.insert(0x56F0, "QK_SWAP_HANDS_TOGGLE");
    m.insert(0x56F1, "QK_SWAP_HANDS_TAP_TOGGLE");
    m.insert(0x56F2, "QK_SWAP_HANDS_MOMENTARY_ON");
    m.insert(0x56F3, "QK_SWAP_HANDS_MOMENTARY_OFF");
    m.insert(0x56F4, "QK_SWAP_HANDS_OFF");
    m.insert(0x56F5, "QK_SWAP_HANDS_ON");
    m.insert(0x56F6, "QK_SWAP_HANDS_ONE_SHOT");
    m.insert(0x7000, "QK_MAGIC_SWAP_CONTROL_CAPS_LOCK");
    m.insert(0x7001, "QK_MAGIC_UNSWAP_CONTROL_CAPS_LOCK");
    m.insert(0x7002, "QK_MAGIC_TOGGLE_CONTROL_CAPS_LOCK");
    m.insert(0x7003, "QK_MAGIC_CAPS_LOCK_AS_CONTROL_OFF");
    m.insert(0x7004, "QK_MAGIC_CAPS_LOCK_AS_CONTROL_ON");
    m.insert(0x7005, "QK_MAGIC_SWAP_LALT_LGUI");
    m.insert(0x7006, "QK_MAGIC_UNSWAP_LALT_LGUI");
    m.insert(0x7007, "QK_MAGIC_SWAP_RALT_RGUI");
    m.insert(0x7008, "QK_MAGIC_UNSWAP_RALT_RGUI");
    m.insert(0x7009, "QK_MAGIC_GUI_ON");
    m.insert(0x700A, "QK_MAGIC_GUI_OFF");
    m.insert(0x700B, "QK_MAGIC_TOGGLE_GUI");
    m.insert(0x700C, "QK_MAGIC_SWAP_GRAVE_ESC");
    m.insert(0x700D, "QK_MAGIC_UNSWAP_GRAVE_ESC");
    m.insert(0x700E, "QK_MAGIC_SWAP_BACKSLASH_BACKSPACE");
    m.insert(0x700F, "QK_MAGIC_UNSWAP_BACKSLASH_BACKSPACE");
    m.insert(0x7010, "QK_MAGIC_TOGGLE_BACKSLASH_BACKSPACE");
    m.insert(0x7011, "QK_MAGIC_NKRO_ON");
    m.insert(0x7012, "QK_MAGIC_NKRO_OFF");
    m.insert(0x7013, "QK_MAGIC_TOGGLE_NKRO");
    m.insert(0x7014, "QK_MAGIC_SWAP_ALT_GUI");
    m.insert(0x7015, "QK_MAGIC_UNSWAP_ALT_GUI");
    m.insert(0x7016, "QK_MAGIC_TOGGLE_ALT_GUI");
    m.insert(0x7017, "QK_MAGIC_SWAP_LCTL_LGUI");
    m.insert(0x7018, "QK_MAGIC_UNSWAP_LCTL_LGUI");
    m.insert(0x7019, "QK_MAGIC_SWAP_RCTL_RGUI");
    m.insert(0x701A, "QK_MAGIC_UNSWAP_RCTL_RGUI");
    m.insert(0x701B, "QK_MAGIC_SWAP_CTL_GUI");
    m.insert(0x701C, "QK_MAGIC_UNSWAP_CTL_GUI");
    m.insert(0x701D, "QK_MAGIC_TOGGLE_CTL_GUI");
    m.insert(0x701E, "QK_MAGIC_EE_HANDS_LEFT");
    m.insert(0x701F, "QK_MAGIC_EE_HANDS_RIGHT");
    m.insert(0x7020, "QK_MAGIC_SWAP_ESCAPE_CAPS_LOCK");
    m.insert(0x7021, "QK_MAGIC_UNSWAP_ESCAPE_CAPS_LOCK");
    m.insert(0x7022, "QK_MAGIC_TOGGLE_ESCAPE_CAPS_LOCK");
    m.insert(0x7100, "QK_MIDI_ON");
    m.insert(0x7101, "QK_MIDI_OFF");
    m.insert(0x7102, "QK_MIDI_TOGGLE");
    m.insert(0x7103, "QK_MIDI_NOTE_C_0");
    m.insert(0x7104, "QK_MIDI_NOTE_C_SHARP_0");
    m.insert(0x7105, "QK_MIDI_NOTE_D_0");
    m.insert(0x7106, "QK_MIDI_NOTE_D_SHARP_0");
    m.insert(0x7107, "QK_MIDI_NOTE_E_0");
    m.insert(0x7108, "QK_MIDI_NOTE_F_0");
    m.insert(0x7109, "QK_MIDI_NOTE_F_SHARP_0");
    m.insert(0x710A, "QK_MIDI_NOTE_G_0");
    m.insert(0x710B, "QK_MIDI_NOTE_G_SHARP_0");
    m.insert(0x710C, "QK_MIDI_NOTE_A_0");
    m.insert(0x710D, "QK_MIDI_NOTE_A_SHARP_0");
    m.insert(0x710E, "QK_MIDI_NOTE_B_0");
    m.insert(0x710F, "QK_MIDI_NOTE_C_1");
    m.insert(0x7110, "QK_MIDI_NOTE_C_SHARP_1");
    m.insert(0x7111, "QK_MIDI_NOTE_D_1");
    m.insert(0x7112, "QK_MIDI_NOTE_D_SHARP_1");
    m.insert(0x7113, "QK_MIDI_NOTE_E_1");
    m.insert(0x7114, "QK_MIDI_NOTE_F_1");
    m.insert(0x7115, "QK_MIDI_NOTE_F_SHARP_1");
    m.insert(0x7116, "QK_MIDI_NOTE_G_1");
    m.insert(0x7117, "QK_MIDI_NOTE_G_SHARP_1");
    m.insert(0x7118, "QK_MIDI_NOTE_A_1");
    m.insert(0x7119, "QK_MIDI_NOTE_A_SHARP_1");
    m.insert(0x711A, "QK_MIDI_NOTE_B_1");
    m.insert(0x711B, "QK_MIDI_NOTE_C_2");
    m.insert(0x711C, "QK_MIDI_NOTE_C_SHARP_2");
    m.insert(0x711D, "QK_MIDI_NOTE_D_2");
    m.insert(0x711E, "QK_MIDI_NOTE_D_SHARP_2");
    m.insert(0x711F, "QK_MIDI_NOTE_E_2");
    m.insert(0x7120, "QK_MIDI_NOTE_F_2");
    m.insert(0x7121, "QK_MIDI_NOTE_F_SHARP_2");
    m.insert(0x7122, "QK_MIDI_NOTE_G_2");
    m.insert(0x7123, "QK_MIDI_NOTE_G_SHARP_2");
    m.insert(0x7124, "QK_MIDI_NOTE_A_2");
    m.insert(0x7125, "QK_MIDI_NOTE_A_SHARP_2");
    m.insert(0x7126, "QK_MIDI_NOTE_B_2");
    m.insert(0x7127, "QK_MIDI_NOTE_C_3");
    m.insert(0x7128, "QK_MIDI_NOTE_C_SHARP_3");
    m.insert(0x7129, "QK_MIDI_NOTE_D_3");
    m.insert(0x712A, "QK_MIDI_NOTE_D_SHARP_3");
    m.insert(0x712B, "QK_MIDI_NOTE_E_3");
    m.insert(0x712C, "QK_MIDI_NOTE_F_3");
    m.insert(0x712D, "QK_MIDI_NOTE_F_SHARP_3");
    m.insert(0x712E, "QK_MIDI_NOTE_G_3");
    m.insert(0x712F, "QK_MIDI_NOTE_G_SHARP_3");
    m.insert(0x7130, "QK_MIDI_NOTE_A_3");
    m.insert(0x7131, "QK_MIDI_NOTE_A_SHARP_3");
    m.insert(0x7132, "QK_MIDI_NOTE_B_3");
    m.insert(0x7133, "QK_MIDI_NOTE_C_4");
    m.insert(0x7134, "QK_MIDI_NOTE_C_SHARP_4");
    m.insert(0x7135, "QK_MIDI_NOTE_D_4");
    m.insert(0x7136, "QK_MIDI_NOTE_D_SHARP_4");
    m.insert(0x7137, "QK_MIDI_NOTE_E_4");
    m.insert(0x7138, "QK_MIDI_NOTE_F_4");
    m.insert(0x7139, "QK_MIDI_NOTE_F_SHARP_4");
    m.insert(0x713A, "QK_MIDI_NOTE_G_4");
    m.insert(0x713B, "QK_MIDI_NOTE_G_SHARP_4");
    m.insert(0x713C, "QK_MIDI_NOTE_A_4");
    m.insert(0x713D, "QK_MIDI_NOTE_A_SHARP_4");
    m.insert(0x713E, "QK_MIDI_NOTE_B_4");
    m.insert(0x713F, "QK_MIDI_NOTE_C_5");
    m.insert(0x7140, "QK_MIDI_NOTE_C_SHARP_5");
    m.insert(0x7141, "QK_MIDI_NOTE_D_5");
    m.insert(0x7142, "QK_MIDI_NOTE_D_SHARP_5");
    m.insert(0x7143, "QK_MIDI_NOTE_E_5");
    m.insert(0x7144, "QK_MIDI_NOTE_F_5");
    m.insert(0x7145, "QK_MIDI_NOTE_F_SHARP_5");
    m.insert(0x7146, "QK_MIDI_NOTE_G_5");
    m.insert(0x7147, "QK_MIDI_NOTE_G_SHARP_5");
    m.insert(0x7148, "QK_MIDI_NOTE_A_5");
    m.insert(0x7149, "QK_MIDI_NOTE_A_SHARP_5");
    m.insert(0x714A, "QK_MIDI_NOTE_B_5");
    m.insert(0x714B, "QK_MIDI_OCTAVE_N2");
    m.insert(0x714C, "QK_MIDI_OCTAVE_N1");
    m.insert(0x714D, "QK_MIDI_OCTAVE_0");
    m.insert(0x714E, "QK_MIDI_OCTAVE_1");
    m.insert(0x714F, "QK_MIDI_OCTAVE_2");
    m.insert(0x7150, "QK_MIDI_OCTAVE_3");
    m.insert(0x7151, "QK_MIDI_OCTAVE_4");
    m.insert(0x7152, "QK_MIDI_OCTAVE_5");
    m.insert(0x7153, "QK_MIDI_OCTAVE_6");
    m.insert(0x7154, "QK_MIDI_OCTAVE_7");
    m.insert(0x7155, "QK_MIDI_OCTAVE_DOWN");
    m.insert(0x7156, "QK_MIDI_OCTAVE_UP");
    m.insert(0x7157, "QK_MIDI_TRANSPOSE_N6");
    m.insert(0x7158, "QK_MIDI_TRANSPOSE_N5");
    m.insert(0x7159, "QK_MIDI_TRANSPOSE_N4");
    m.insert(0x715A, "QK_MIDI_TRANSPOSE_N3");
    m.insert(0x715B, "QK_MIDI_TRANSPOSE_N2");
    m.insert(0x715C, "QK_MIDI_TRANSPOSE_N1");
    m.insert(0x715D, "QK_MIDI_TRANSPOSE_0");
    m.insert(0x715E, "QK_MIDI_TRANSPOSE_1");
    m.insert(0x715F, "QK_MIDI_TRANSPOSE_2");
    m.insert(0x7160, "QK_MIDI_TRANSPOSE_3");
    m.insert(0x7161, "QK_MIDI_TRANSPOSE_4");
    m.insert(0x7162, "QK_MIDI_TRANSPOSE_5");
    m.insert(0x7163, "QK_MIDI_TRANSPOSE_6");
    m.insert(0x7164, "QK_MIDI_TRANSPOSE_DOWN");
    m.insert(0x7165, "QK_MIDI_TRANSPOSE_UP");
    m.insert(0x7166, "QK_MIDI_VELOCITY_0");
    m.insert(0x7167, "QK_MIDI_VELOCITY_1");
    m.insert(0x7168, "QK_MIDI_VELOCITY_2");
    m.insert(0x7169, "QK_MIDI_VELOCITY_3");
    m.insert(0x716A, "QK_MIDI_VELOCITY_4");
    m.insert(0x716B, "QK_MIDI_VELOCITY_5");
    m.insert(0x716C, "QK_MIDI_VELOCITY_6");
    m.insert(0x716D, "QK_MIDI_VELOCITY_7");
    m.insert(0x716E, "QK_MIDI_VELOCITY_8");
    m.insert(0x716F, "QK_MIDI_VELOCITY_9");
    m.insert(0x7170, "QK_MIDI_VELOCITY_10");
    m.insert(0x7171, "QK_MIDI_VELOCITY_DOWN");
    m.insert(0x7172, "QK_MIDI_VELOCITY_UP");
    m.insert(0x7173, "QK_MIDI_CHANNEL_1");
    m.insert(0x7174, "QK_MIDI_CHANNEL_2");
    m.insert(0x7175, "QK_MIDI_CHANNEL_3");
    m.insert(0x7176, "QK_MIDI_CHANNEL_4");
    m.insert(0x7177, "QK_MIDI_CHANNEL_5");
    m.insert(0x7178, "QK_MIDI_CHANNEL_6");
    m.insert(0x7179, "QK_MIDI_CHANNEL_7");
    m.insert(0x717A, "QK_MIDI_CHANNEL_8");
    m.insert(0x717B, "QK_MIDI_CHANNEL_9");
    m.insert(0x717C, "QK_MIDI_CHANNEL_10");
    m.insert(0x717D, "QK_MIDI_CHANNEL_11");
    m.insert(0x717E, "QK_MIDI_CHANNEL_12");
    m.insert(0x717F, "QK_MIDI_CHANNEL_13");
    m.insert(0x7180, "QK_MIDI_CHANNEL_14");
    m.insert(0x7181, "QK_MIDI_CHANNEL_15");
    m.insert(0x7182, "QK_MIDI_CHANNEL_16");
    m.insert(0x7183, "QK_MIDI_CHANNEL_DOWN");
    m.insert(0x7184, "QK_MIDI_CHANNEL_UP");
    m.insert(0x7185, "QK_MIDI_ALL_NOTES_OFF");
    m.insert(0x7186, "QK_MIDI_SUSTAIN");
    m.insert(0x7187, "QK_MIDI_PORTAMENTO");
    m.insert(0x7188, "QK_MIDI_SOSTENUTO");
    m.insert(0x7189, "QK_MIDI_SOFT");
    m.insert(0x718A, "QK_MIDI_LEGATO");
    m.insert(0x718B, "QK_MIDI_MODULATION");
    m.insert(0x718C, "QK_MIDI_MODULATION_SPEED_DOWN");
    m.insert(0x718D, "QK_MIDI_MODULATION_SPEED_UP");
    m.insert(0x718E, "QK_MIDI_PITCH_BEND_DOWN");
    m.insert(0x718F, "QK_MIDI_PITCH_BEND_UP");
    m.insert(0x7200, "QK_SEQUENCER_ON");
    m.insert(0x7201, "QK_SEQUENCER_OFF");
    m.insert(0x7202, "QK_SEQUENCER_TOGGLE");
    m.insert(0x7203, "QK_SEQUENCER_TEMPO_DOWN");
    m.insert(0x7204, "QK_SEQUENCER_TEMPO_UP");
    m.insert(0x7205, "QK_SEQUENCER_RESOLUTION_DOWN");
    m.insert(0x7206, "QK_SEQUENCER_RESOLUTION_UP");
    m.insert(0x7207, "QK_SEQUENCER_STEPS_ALL");
    m.insert(0x7208, "QK_SEQUENCER_STEPS_CLEAR");
    m.insert(0x7400, "QK_JOYSTICK_BUTTON_0");
    m.insert(0x7401, "QK_JOYSTICK_BUTTON_1");
    m.insert(0x7402, "QK_JOYSTICK_BUTTON_2");
    m.insert(0x7403, "QK_JOYSTICK_BUTTON_3");
    m.insert(0x7404, "QK_JOYSTICK_BUTTON_4");
    m.insert(0x7405, "QK_JOYSTICK_BUTTON_5");
    m.insert(0x7406, "QK_JOYSTICK_BUTTON_6");
    m.insert(0x7407, "QK_JOYSTICK_BUTTON_7");
    m.insert(0x7408, "QK_JOYSTICK_BUTTON_8");
    m.insert(0x7409, "QK_JOYSTICK_BUTTON_9");
    m.insert(0x740A, "QK_JOYSTICK_BUTTON_10");
    m.insert(0x740B, "QK_JOYSTICK_BUTTON_11");
    m.insert(0x740C, "QK_JOYSTICK_BUTTON_12");
    m.insert(0x740D, "QK_JOYSTICK_BUTTON_13");
    m.insert(0x740E, "QK_JOYSTICK_BUTTON_14");
    m.insert(0x740F, "QK_JOYSTICK_BUTTON_15");
    m.insert(0x7410, "QK_JOYSTICK_BUTTON_16");
    m.insert(0x7411, "QK_JOYSTICK_BUTTON_17");
    m.insert(0x7412, "QK_JOYSTICK_BUTTON_18");
    m.insert(0x7413, "QK_JOYSTICK_BUTTON_19");
    m.insert(0x7414, "QK_JOYSTICK_BUTTON_20");
    m.insert(0x7415, "QK_JOYSTICK_BUTTON_21");
    m.insert(0x7416, "QK_JOYSTICK_BUTTON_22");
    m.insert(0x7417, "QK_JOYSTICK_BUTTON_23");
    m.insert(0x7418, "QK_JOYSTICK_BUTTON_24");
    m.insert(0x7419, "QK_JOYSTICK_BUTTON_25");
    m.insert(0x741A, "QK_JOYSTICK_BUTTON_26");
    m.insert(0x741B, "QK_JOYSTICK_BUTTON_27");
    m.insert(0x741C, "QK_JOYSTICK_BUTTON_28");
    m.insert(0x741D, "QK_JOYSTICK_BUTTON_29");
    m.insert(0x741E, "QK_JOYSTICK_BUTTON_30");
    m.insert(0x741F, "QK_JOYSTICK_BUTTON_31");
    m.insert(0x7440, "QK_PROGRAMMABLE_BUTTON_1");
    m.insert(0x7441, "QK_PROGRAMMABLE_BUTTON_2");
    m.insert(0x7442, "QK_PROGRAMMABLE_BUTTON_3");
    m.insert(0x7443, "QK_PROGRAMMABLE_BUTTON_4");
    m.insert(0x7444, "QK_PROGRAMMABLE_BUTTON_5");
    m.insert(0x7445, "QK_PROGRAMMABLE_BUTTON_6");
    m.insert(0x7446, "QK_PROGRAMMABLE_BUTTON_7");
    m.insert(0x7447, "QK_PROGRAMMABLE_BUTTON_8");
    m.insert(0x7448, "QK_PROGRAMMABLE_BUTTON_9");
    m.insert(0x7449, "QK_PROGRAMMABLE_BUTTON_10");
    m.insert(0x744A, "QK_PROGRAMMABLE_BUTTON_11");
    m.insert(0x744B, "QK_PROGRAMMABLE_BUTTON_12");
    m.insert(0x744C, "QK_PROGRAMMABLE_BUTTON_13");
    m.insert(0x744D, "QK_PROGRAMMABLE_BUTTON_14");
    m.insert(0x744E, "QK_PROGRAMMABLE_BUTTON_15");
    m.insert(0x744F, "QK_PROGRAMMABLE_BUTTON_16");
    m.insert(0x7450, "QK_PROGRAMMABLE_BUTTON_17");
    m.insert(0x7451, "QK_PROGRAMMABLE_BUTTON_18");
    m.insert(0x7452, "QK_PROGRAMMABLE_BUTTON_19");
    m.insert(0x7453, "QK_PROGRAMMABLE_BUTTON_20");
    m.insert(0x7454, "QK_PROGRAMMABLE_BUTTON_21");
    m.insert(0x7455, "QK_PROGRAMMABLE_BUTTON_22");
    m.insert(0x7456, "QK_PROGRAMMABLE_BUTTON_23");
    m.insert(0x7457, "QK_PROGRAMMABLE_BUTTON_24");
    m.insert(0x7458, "QK_PROGRAMMABLE_BUTTON_25");
    m.insert(0x7459, "QK_PROGRAMMABLE_BUTTON_26");
    m.insert(0x745A, "QK_PROGRAMMABLE_BUTTON_27");
    m.insert(0x745B, "QK_PROGRAMMABLE_BUTTON_28");
    m.insert(0x745C, "QK_PROGRAMMABLE_BUTTON_29");
    m.insert(0x745D, "QK_PROGRAMMABLE_BUTTON_30");
    m.insert(0x745E, "QK_PROGRAMMABLE_BUTTON_31");
    m.insert(0x745F, "QK_PROGRAMMABLE_BUTTON_32");
    m.insert(0x7480, "QK_AUDIO_ON");
    m.insert(0x7481, "QK_AUDIO_OFF");
    m.insert(0x7482, "QK_AUDIO_TOGGLE");
    m.insert(0x748A, "QK_AUDIO_CLICKY_TOGGLE");
    m.insert(0x748B, "QK_AUDIO_CLICKY_ON");
    m.insert(0x748C, "QK_AUDIO_CLICKY_OFF");
    m.insert(0x748D, "QK_AUDIO_CLICKY_UP");
    m.insert(0x748E, "QK_AUDIO_CLICKY_DOWN");
    m.insert(0x748F, "QK_AUDIO_CLICKY_RESET");
    m.insert(0x7490, "QK_MUSIC_ON");
    m.insert(0x7491, "QK_MUSIC_OFF");
    m.insert(0x7492, "QK_MUSIC_TOGGLE");
    m.insert(0x7493, "QK_MUSIC_MODE_NEXT");
    m.insert(0x7494, "QK_AUDIO_VOICE_NEXT");
    m.insert(0x7495, "QK_AUDIO_VOICE_PREVIOUS");
    m.insert(0x74F0, "QK_STENO_BOLT");
    m.insert(0x74F1, "QK_STENO_GEMINI");
    m.insert(0x74F2, "QK_STENO_COMB");
    m.insert(0x74FC, "QK_STENO_COMB_MAX");
    m.insert(0x7700, "QK_MACRO_0");
    m.insert(0x7701, "QK_MACRO_1");
    m.insert(0x7702, "QK_MACRO_2");
    m.insert(0x7703, "QK_MACRO_3");
    m.insert(0x7704, "QK_MACRO_4");
    m.insert(0x7705, "QK_MACRO_5");
    m.insert(0x7706, "QK_MACRO_6");
    m.insert(0x7707, "QK_MACRO_7");
    m.insert(0x7708, "QK_MACRO_8");
    m.insert(0x7709, "QK_MACRO_9");
    m.insert(0x770A, "QK_MACRO_10");
    m.insert(0x770B, "QK_MACRO_11");
    m.insert(0x770C, "QK_MACRO_12");
    m.insert(0x770D, "QK_MACRO_13");
    m.insert(0x770E, "QK_MACRO_14");
    m.insert(0x770F, "QK_MACRO_15");
    m.insert(0x7710, "QK_MACRO_16");
    m.insert(0x7711, "QK_MACRO_17");
    m.insert(0x7712, "QK_MACRO_18");
    m.insert(0x7713, "QK_MACRO_19");
    m.insert(0x7714, "QK_MACRO_20");
    m.insert(0x7715, "QK_MACRO_21");
    m.insert(0x7716, "QK_MACRO_22");
    m.insert(0x7717, "QK_MACRO_23");
    m.insert(0x7718, "QK_MACRO_24");
    m.insert(0x7719, "QK_MACRO_25");
    m.insert(0x771A, "QK_MACRO_26");
    m.insert(0x771B, "QK_MACRO_27");
    m.insert(0x771C, "QK_MACRO_28");
    m.insert(0x771D, "QK_MACRO_29");
    m.insert(0x771E, "QK_MACRO_30");
    m.insert(0x771F, "QK_MACRO_31");
    m.insert(0x7800, "QK_BACKLIGHT_ON");
    m.insert(0x7801, "QK_BACKLIGHT_OFF");
    m.insert(0x7802, "QK_BACKLIGHT_TOGGLE");
    m.insert(0x7803, "QK_BACKLIGHT_DOWN");
    m.insert(0x7804, "QK_BACKLIGHT_UP");
    m.insert(0x7805, "QK_BACKLIGHT_STEP");
    m.insert(0x7806, "QK_BACKLIGHT_TOGGLE_BREATHING");
    m.insert(0x7810, "QK_LED_MATRIX_ON");
    m.insert(0x7811, "QK_LED_MATRIX_OFF");
    m.insert(0x7812, "QK_LED_MATRIX_TOGGLE");
    m.insert(0x7813, "QK_LED_MATRIX_MODE_NEXT");
    m.insert(0x7814, "QK_LED_MATRIX_MODE_PREVIOUS");
    m.insert(0x7815, "QK_LED_MATRIX_BRIGHTNESS_UP");
    m.insert(0x7816, "QK_LED_MATRIX_BRIGHTNESS_DOWN");
    m.insert(0x7817, "QK_LED_MATRIX_SPEED_UP");
    m.insert(0x7818, "QK_LED_MATRIX_SPEED_DOWN");
    m.insert(0x7820, "QK_UNDERGLOW_TOGGLE");
    m.insert(0x7821, "QK_UNDERGLOW_MODE_NEXT");
    m.insert(0x7822, "QK_UNDERGLOW_MODE_PREVIOUS");
    m.insert(0x7823, "QK_UNDERGLOW_HUE_UP");
    m.insert(0x7824, "QK_UNDERGLOW_HUE_DOWN");
    m.insert(0x7825, "QK_UNDERGLOW_SATURATION_UP");
    m.insert(0x7826, "QK_UNDERGLOW_SATURATION_DOWN");
    m.insert(0x7827, "QK_UNDERGLOW_VALUE_UP");
    m.insert(0x7828, "QK_UNDERGLOW_VALUE_DOWN");
    m.insert(0x7829, "QK_UNDERGLOW_SPEED_UP");
    m.insert(0x782A, "QK_UNDERGLOW_SPEED_DOWN");
    m.insert(0x782B, "RGB_MODE_PLAIN");
    m.insert(0x782C, "RGB_MODE_BREATHE");
    m.insert(0x782D, "RGB_MODE_RAINBOW");
    m.insert(0x782E, "RGB_MODE_SWIRL");
    m.insert(0x782F, "RGB_MODE_SNAKE");
    m.insert(0x7830, "RGB_MODE_KNIGHT");
    m.insert(0x7831, "RGB_MODE_XMAS");
    m.insert(0x7832, "RGB_MODE_GRADIENT");
    m.insert(0x7833, "RGB_MODE_RGBTEST");
    m.insert(0x7834, "RGB_MODE_TWINKLE");
    m.insert(0x7840, "QK_RGB_MATRIX_ON");
    m.insert(0x7841, "QK_RGB_MATRIX_OFF");
    m.insert(0x7842, "QK_RGB_MATRIX_TOGGLE");
    m.insert(0x7843, "QK_RGB_MATRIX_MODE_NEXT");
    m.insert(0x7844, "QK_RGB_MATRIX_MODE_PREVIOUS");
    m.insert(0x7845, "QK_RGB_MATRIX_HUE_UP");
    m.insert(0x7846, "QK_RGB_MATRIX_HUE_DOWN");
    m.insert(0x7847, "QK_RGB_MATRIX_SATURATION_UP");
    m.insert(0x7848, "QK_RGB_MATRIX_SATURATION_DOWN");
    m.insert(0x7849, "QK_RGB_MATRIX_VALUE_UP");
    m.insert(0x784A, "QK_RGB_MATRIX_VALUE_DOWN");
    m.insert(0x784B, "QK_RGB_MATRIX_SPEED_UP");
    m.insert(0x784C, "QK_RGB_MATRIX_SPEED_DOWN");
    m.insert(0x7C00, "QK_BOOTLOADER");
    m.insert(0x7C01, "QK_REBOOT");
    m.insert(0x7C02, "QK_DEBUG_TOGGLE");
    m.insert(0x7C03, "QK_CLEAR_EEPROM");
    m.insert(0x7C04, "QK_MAKE");
    m.insert(0x7C10, "QK_AUTO_SHIFT_DOWN");
    m.insert(0x7C11, "QK_AUTO_SHIFT_UP");
    m.insert(0x7C12, "QK_AUTO_SHIFT_REPORT");
    m.insert(0x7C13, "QK_AUTO_SHIFT_ON");
    m.insert(0x7C14, "QK_AUTO_SHIFT_OFF");
    m.insert(0x7C15, "QK_AUTO_SHIFT_TOGGLE");
    m.insert(0x7C16, "QK_GRAVE_ESCAPE");
    m.insert(0x7C17, "QK_VELOCIKEY_TOGGLE");
    m.insert(0x7C18, "QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPEN");
    m.insert(0x7C19, "QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSE");
    m.insert(0x7C1A, "QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN");
    m.insert(0x7C1B, "QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSE");
    m.insert(0x7C1C, "QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN");
    m.insert(0x7C1D, "QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE");
    m.insert(0x7C1E, "QK_SPACE_CADET_RIGHT_SHIFT_ENTER");
    m.insert(0x7C20, "QK_OUTPUT_AUTO");
    m.insert(0x7C21, "QK_OUTPUT_USB");
    m.insert(0x7C22, "QK_OUTPUT_BLUETOOTH");
    m.insert(0x7C30, "QK_UNICODE_MODE_NEXT");
    m.insert(0x7C31, "QK_UNICODE_MODE_PREVIOUS");
    m.insert(0x7C32, "QK_UNICODE_MODE_MACOS");
    m.insert(0x7C33, "QK_UNICODE_MODE_LINUX");
    m.insert(0x7C34, "QK_UNICODE_MODE_WINDOWS");
    m.insert(0x7C35, "QK_UNICODE_MODE_BSD");
    m.insert(0x7C36, "QK_UNICODE_MODE_WINCOMPOSE");
    m.insert(0x7C37, "QK_UNICODE_MODE_EMACS");
    m.insert(0x7C40, "QK_HAPTIC_ON");
    m.insert(0x7C41, "QK_HAPTIC_OFF");
    m.insert(0x7C42, "QK_HAPTIC_TOGGLE");
    m.insert(0x7C43, "QK_HAPTIC_RESET");
    m.insert(0x7C44, "QK_HAPTIC_FEEDBACK_TOGGLE");
    m.insert(0x7C45, "QK_HAPTIC_BUZZ_TOGGLE");
    m.insert(0x7C46, "QK_HAPTIC_MODE_NEXT");
    m.insert(0x7C47, "QK_HAPTIC_MODE_PREVIOUS");
    m.insert(0x7C48, "QK_HAPTIC_CONTINUOUS_TOGGLE");
    m.insert(0x7C49, "QK_HAPTIC_CONTINUOUS_UP");
    m.insert(0x7C4A, "QK_HAPTIC_CONTINUOUS_DOWN");
    m.insert(0x7C4B, "QK_HAPTIC_DWELL_UP");
    m.insert(0x7C4C, "QK_HAPTIC_DWELL_DOWN");
    m.insert(0x7C50, "QK_COMBO_ON");
    m.insert(0x7C51, "QK_COMBO_OFF");
    m.insert(0x7C52, "QK_COMBO_TOGGLE");
    m.insert(0x7C53, "QK_DYNAMIC_MACRO_RECORD_START_1");
    m.insert(0x7C54, "QK_DYNAMIC_MACRO_RECORD_START_2");
    m.insert(0x7C55, "QK_DYNAMIC_MACRO_RECORD_STOP");
    m.insert(0x7C56, "QK_DYNAMIC_MACRO_PLAY_1");
    m.insert(0x7C57, "QK_DYNAMIC_MACRO_PLAY_2");
    m.insert(0x7C58, "QK_LEADER");
    m.insert(0x7C59, "QK_LOCK");
    m.insert(0x7C5A, "QK_ONE_SHOT_ON");
    m.insert(0x7C5B, "QK_ONE_SHOT_OFF");
    m.insert(0x7C5C, "QK_ONE_SHOT_TOGGLE");
    m.insert(0x7C5D, "QK_KEY_OVERRIDE_TOGGLE");
    m.insert(0x7C5E, "QK_KEY_OVERRIDE_ON");
    m.insert(0x7C5F, "QK_KEY_OVERRIDE_OFF");
    m.insert(0x7C60, "QK_SECURE_LOCK");
    m.insert(0x7C61, "QK_SECURE_UNLOCK");
    m.insert(0x7C62, "QK_SECURE_TOGGLE");
    m.insert(0x7C63, "QK_SECURE_REQUEST");
    m.insert(0x7C70, "QK_DYNAMIC_TAPPING_TERM_PRINT");
    m.insert(0x7C71, "QK_DYNAMIC_TAPPING_TERM_UP");
    m.insert(0x7C72, "QK_DYNAMIC_TAPPING_TERM_DOWN");
    m.insert(0x7C73, "QK_CAPS_WORD_TOGGLE");
    m.insert(0x7C74, "QK_AUTOCORRECT_ON");
    m.insert(0x7C75, "QK_AUTOCORRECT_OFF");
    m.insert(0x7C76, "QK_AUTOCORRECT_TOGGLE");
    m.insert(0x7C77, "QK_TRI_LAYER_LOWER");
    m.insert(0x7C78, "QK_TRI_LAYER_UPPER");
    m.insert(0x7C79, "QK_REPEAT_KEY");
    m.insert(0x7C7A, "QK_ALT_REPEAT_KEY");
    m.insert(0x7C7B, "QK_LAYER_LOCK");
    m.insert(0x7E00, "QK_KB_0");
    m.insert(0x7E01, "QK_KB_1");
    m.insert(0x7E02, "QK_KB_2");
    m.insert(0x7E03, "QK_KB_3");
    m.insert(0x7E04, "QK_KB_4");
    m.insert(0x7E05, "QK_KB_5");
    m.insert(0x7E06, "QK_KB_6");
    m.insert(0x7E07, "QK_KB_7");
    m.insert(0x7E08, "QK_KB_8");
    m.insert(0x7E09, "QK_KB_9");
    m.insert(0x7E0A, "QK_KB_10");
    m.insert(0x7E0B, "QK_KB_11");
    m.insert(0x7E0C, "QK_KB_12");
    m.insert(0x7E0D, "QK_KB_13");
    m.insert(0x7E0E, "QK_KB_14");
    m.insert(0x7E0F, "QK_KB_15");
    m.insert(0x7E10, "QK_KB_16");
    m.insert(0x7E11, "QK_KB_17");
    m.insert(0x7E12, "QK_KB_18");
    m.insert(0x7E13, "QK_KB_19");
    m.insert(0x7E14, "QK_KB_20");
    m.insert(0x7E15, "QK_KB_21");
    m.insert(0x7E16, "QK_KB_22");
    m.insert(0x7E17, "QK_KB_23");
    m.insert(0x7E18, "QK_KB_24");
    m.insert(0x7E19, "QK_KB_25");
    m.insert(0x7E1A, "QK_KB_26");
    m.insert(0x7E1B, "QK_KB_27");
    m.insert(0x7E1C, "QK_KB_28");
    m.insert(0x7E1D, "QK_KB_29");
    m.insert(0x7E1E, "QK_KB_30");
    m.insert(0x7E1F, "QK_KB_31");
    m.insert(0x7E40, "QK_USER_0");
    m.insert(0x7E41, "QK_USER_1");
    m.insert(0x7E42, "QK_USER_2");
    m.insert(0x7E43, "QK_USER_3");
    m.insert(0x7E44, "QK_USER_4");
    m.insert(0x7E45, "QK_USER_5");
    m.insert(0x7E46, "QK_USER_6");
    m.insert(0x7E47, "QK_USER_7");
    m.insert(0x7E48, "QK_USER_8");
    m.insert(0x7E49, "QK_USER_9");
    m.insert(0x7E4A, "QK_USER_10");
    m.insert(0x7E4B, "QK_USER_11");
    m.insert(0x7E4C, "QK_USER_12");
    m.insert(0x7E4D, "QK_USER_13");
    m.insert(0x7E4E, "QK_USER_14");
    m.insert(0x7E4F, "QK_USER_15");
    m.insert(0x7E50, "QK_USER_16");
    m.insert(0x7E51, "QK_USER_17");
    m.insert(0x7E52, "QK_USER_18");
    m.insert(0x7E53, "QK_USER_19");
    m.insert(0x7E54, "QK_USER_20");
    m.insert(0x7E55, "QK_USER_21");
    m.insert(0x7E56, "QK_USER_22");
    m.insert(0x7E57, "QK_USER_23");
    m.insert(0x7E58, "QK_USER_24");
    m.insert(0x7E59, "QK_USER_25");
    m.insert(0x7E5A, "QK_USER_26");
    m.insert(0x7E5B, "QK_USER_27");
    m.insert(0x7E5C, "QK_USER_28");
    m.insert(0x7E5D, "QK_USER_29");
    m.insert(0x7E5E, "QK_USER_30");
    m.insert(0x7E5F, "QK_USER_31");
    m
});