summaryrefslogtreecommitdiff
path: root/linux/console/neo.map
blob: 6868a9d41688c93f1a392ab23c6a2a8491b81391 (plain)
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
#==========================================================================
# README
#==========================================================================
# Neo2 Console Keymap
#
# Notes:
# • Not using KP_-keysyms on fourth level as NumLock is not controllable 
#   (i.e. can't be forced to on whenever the keymap is loaded).
#   On console there is little need for KP_-keysyms.
# • Mod4-Lock is not implemented (technical difficulties, not enough levels)
# • Dead keys only when there exists a corresponding dead keysym on console
#   (i.e circumflex, gravis, cedille, trema, akut and tilde) otherwise the 
#   undead character is produced.
# • Using default compose as for now. Maximum number allowed compose 
#   sequences seems to be 256, not enough for the standard Neo2 sequences.
# • Wrong Caps_Lock behaviour with ssharp (not returning to lower case when
#   using Caps_Lock and Shift)
#   See: https://bugzilla.kernel.org/show_bug.cgi?id=7063

#==========================================================================
# Statements and defaults
#==========================================================================

keymaps 0-127                                  # We define these levels
compose as usual                               # Use default compose
strings as usual                               # Use default strings

include "linux-keys-bare"                      # Some standard key mappings

#==========================================================================
# Modifier
#==========================================================================

                keycode  42 = ShiftL           # Enable Shift
        shiftr  keycode  42 = Caps_Lock        # Enable Caps_Lock
                keycode  54 = ShiftR           # Enable Shift
        shiftl  keycode  54 = Caps_Lock        # Enable Caps_Lock

                keycode  58 = AltGr            # Mod3 Left
                keycode  43 = AltGr            # Mod3 Right

                keycode  86 = CtrlL            # Mod4 Left
                keycode 100 = CtrlL            # Mod4 Right

#==========================================================================
# Compose
#==========================================================================

# TODO: add most important compose definitions

        altgr   keycode  15 = Compose          # Mod3+Tab: Compose

#==========================================================================
# Characters (autogenerated)
#==========================================================================

                keycode  41 = U+02c6           # ˆ [U+02C6] MODIFIER LETTER CIRCUMFLEX ACCENT
        shiftl  keycode  41 = U+02c7           # ˇ [U+02C7] CARON
        shiftr  keycode  41 = U+02c7           # ˇ [U+02C7] CARON
        altgr   keycode  41 = U+21bb           # ↻ [U+21BB] CLOCKWISE OPEN CIRCLE ARROW
        ctrll   keycode  41 = U+02d9           # ˙ [U+02D9] DOT ABOVE
shiftl  ctrll   keycode  41 = U+02d9           # ˙ [U+02D9] DOT ABOVE
shiftr  ctrll   keycode  41 = U+02d9           # ˙ [U+02D9] DOT ABOVE
shiftl  altgr   keycode  41 = U+02de           # ˞ [U+02DE] MODIFIER LETTER RHOTIC HOOK
shiftr  altgr   keycode  41 = U+02de           # ˞ [U+02DE] MODIFIER LETTER RHOTIC HOOK
ctrll   altgr   keycode  41 = period           # . [U+002E] FULL STOP

                keycode   2 = one              # 1 [U+0031] DIGIT ONE
        shiftl  keycode   2 = degree           # ° [U+00B0] DEGREE SIGN
        shiftr  keycode   2 = degree           # ° [U+00B0] DEGREE SIGN
        altgr   keycode   2 = onesuperior      # ¹ [U+00B9] SUPERSCRIPT ONE
        ctrll   keycode   2 = ordfeminine      # ª [U+00AA] FEMININE ORDINAL INDICATOR
shiftl  ctrll   keycode   2 = ordfeminine      # ª [U+00AA] FEMININE ORDINAL INDICATOR
shiftr  ctrll   keycode   2 = ordfeminine      # ª [U+00AA] FEMININE ORDINAL INDICATOR
shiftl  altgr   keycode   2 = U+2081           # ₁ [U+2081] SUBSCRIPT ONE
shiftr  altgr   keycode   2 = U+2081           # ₁ [U+2081] SUBSCRIPT ONE
ctrll   altgr   keycode   2 = notsign          # ¬ [U+00AC] NOT SIGN

                keycode   3 = two              # 2 [U+0032] DIGIT TWO
        shiftl  keycode   3 = section          # § [U+00A7] SECTION SIGN
        shiftr  keycode   3 = section          # § [U+00A7] SECTION SIGN
        altgr   keycode   3 = twosuperior      # ² [U+00B2] SUPERSCRIPT TWO
        ctrll   keycode   3 = masculine        # º [U+00BA] MASCULINE ORDINAL INDICATOR
shiftl  ctrll   keycode   3 = masculine        # º [U+00BA] MASCULINE ORDINAL INDICATOR
shiftr  ctrll   keycode   3 = masculine        # º [U+00BA] MASCULINE ORDINAL INDICATOR
shiftl  altgr   keycode   3 = U+2082           # ₂ [U+2082] SUBSCRIPT TWO
shiftr  altgr   keycode   3 = U+2082           # ₂ [U+2082] SUBSCRIPT TWO
ctrll   altgr   keycode   3 = U+2228           # ∨ [U+2228] LOGICAL OR

                keycode   4 = three            # 3 [U+0033] DIGIT THREE
        shiftl  keycode   4 = U+2113           # ℓ [U+2113] SCRIPT SMALL L
        shiftr  keycode   4 = U+2113           # ℓ [U+2113] SCRIPT SMALL L
        altgr   keycode   4 = threesuperior    # ³ [U+00B3] SUPERSCRIPT THREE
        ctrll   keycode   4 = U+2116           # № [U+2116] NUMERO SIGN
shiftl  ctrll   keycode   4 = U+2116           # № [U+2116] NUMERO SIGN
shiftr  ctrll   keycode   4 = U+2116           # № [U+2116] NUMERO SIGN
shiftl  altgr   keycode   4 = U+2083           # ₃ [U+2083] SUBSCRIPT THREE
shiftr  altgr   keycode   4 = U+2083           # ₃ [U+2083] SUBSCRIPT THREE
ctrll   altgr   keycode   4 = U+2227           # ∧ [U+2227] LOGICAL AND

                keycode   5 = four             # 4 [U+0034] DIGIT FOUR
        shiftl  keycode   5 = guillemotright   # » [U+00BB] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
        shiftr  keycode   5 = guillemotright   # » [U+00BB] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
        altgr   keycode   5 = U+203a           # › [U+203A] SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
        ctrll   keycode   5 = space            #   [U+0020] SPACE
shiftl  ctrll   keycode   5 = space            #   [U+0020] SPACE
shiftr  ctrll   keycode   5 = space            #   [U+0020] SPACE
shiftl  altgr   keycode   5 = U+2640           # ♀ [U+2640] FEMALE SIGN
shiftr  altgr   keycode   5 = U+2640           # ♀ [U+2640] FEMALE SIGN
ctrll   altgr   keycode   5 = U+22a5           # ⊥ [U+22A5] UP TACK

                keycode   6 = five             # 5 [U+0035] DIGIT FIVE
        shiftl  keycode   6 = guillemotleft    # « [U+00AB] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
        shiftr  keycode   6 = guillemotleft    # « [U+00AB] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
        altgr   keycode   6 = U+2039           # ‹ [U+2039] SINGLE LEFT-POINTING ANGLE QUOTATION MARK
        ctrll   keycode   6 = periodcentered   # · [U+00B7] MIDDLE DOT
shiftl  ctrll   keycode   6 = periodcentered   # · [U+00B7] MIDDLE DOT
shiftr  ctrll   keycode   6 = periodcentered   # · [U+00B7] MIDDLE DOT
shiftl  altgr   keycode   6 = U+2642           # ♂ [U+2642] MALE SIGN
shiftr  altgr   keycode   6 = U+2642           # ♂ [U+2642] MALE SIGN
ctrll   altgr   keycode   6 = U+2221           # ∡ [U+2221] MEASURED ANGLE

                keycode   7 = six              # 6 [U+0036] DIGIT SIX
        shiftl  keycode   7 = dollar           # $ [U+0024] DOLLAR SIGN
        shiftr  keycode   7 = dollar           # $ [U+0024] DOLLAR SIGN
        altgr   keycode   7 = cent             # ¢ [U+00A2] CENT SIGN
        ctrll   keycode   7 = sterling         # £ [U+00A3] POUND SIGN
shiftl  ctrll   keycode   7 = sterling         # £ [U+00A3] POUND SIGN
shiftr  ctrll   keycode   7 = sterling         # £ [U+00A3] POUND SIGN
shiftl  altgr   keycode   7 = U+26a5           # ⚥ [U+26A5] MALE AND FEMALE SIGN
shiftr  altgr   keycode   7 = U+26a5           # ⚥ [U+26A5] MALE AND FEMALE SIGN
ctrll   altgr   keycode   7 = U+2225           # ∥ [U+2225] PARALLEL TO

                keycode   8 = seven            # 7 [U+0037] DIGIT SEVEN
        shiftl  keycode   8 = U+20ac           # € [U+20AC] EURO SIGN
        shiftr  keycode   8 = U+20ac           # € [U+20AC] EURO SIGN
        altgr   keycode   8 = yen              # ¥ [U+00A5] YEN SIGN
        ctrll   keycode   8 = currency         # ¤ [U+00A4] CURRENCY SIGN
shiftl  ctrll   keycode   8 = currency         # ¤ [U+00A4] CURRENCY SIGN
shiftr  ctrll   keycode   8 = currency         # ¤ [U+00A4] CURRENCY SIGN
shiftl  altgr   keycode   8 = U+03f0           # ϰ [U+03F0] GREEK KAPPA SYMBOL
shiftr  altgr   keycode   8 = U+03f0           # ϰ [U+03F0] GREEK KAPPA SYMBOL
ctrll   altgr   keycode   8 = U+2192           # → [U+2192] RIGHTWARDS ARROW

                keycode   9 = eight            # 8 [U+0038] DIGIT EIGHT
        shiftl  keycode   9 = U+201e           # „ [U+201E] DOUBLE LOW-9 QUOTATION MARK
        shiftr  keycode   9 = U+201e           # „ [U+201E] DOUBLE LOW-9 QUOTATION MARK
        altgr   keycode   9 = U+201a           # ‚ [U+201A] SINGLE LOW-9 QUOTATION MARK
        ctrll   keycode   9 = U+21e5           # ⇥ [U+21E5] RIGHTWARDS ARROW TO BAR
shiftl  ctrll   keycode   9 = U+21e5           # ⇥ [U+21E5] RIGHTWARDS ARROW TO BAR
shiftr  ctrll   keycode   9 = U+21e5           # ⇥ [U+21E5] RIGHTWARDS ARROW TO BAR
shiftl  altgr   keycode   9 = U+27e8           # ⟨ [U+27E8] MATHEMATICAL LEFT ANGLE BRACKET
shiftr  altgr   keycode   9 = U+27e8           # ⟨ [U+27E8] MATHEMATICAL LEFT ANGLE BRACKET
ctrll   altgr   keycode   9 = U+221e           # ∞ [U+221E] INFINITY

                keycode  10 = nine             # 9 [U+0039] DIGIT NINE
        shiftl  keycode  10 = U+201c           # “ [U+201C] LEFT DOUBLE QUOTATION MARK
        shiftr  keycode  10 = U+201c           # “ [U+201C] LEFT DOUBLE QUOTATION MARK
        altgr   keycode  10 = U+2018           # ‘ [U+2018] LEFT SINGLE QUOTATION MARK
        ctrll   keycode  10 = slash            # / [U+002F] SOLIDUS
shiftl  ctrll   keycode  10 = slash            # / [U+002F] SOLIDUS
shiftr  ctrll   keycode  10 = slash            # / [U+002F] SOLIDUS
shiftl  altgr   keycode  10 = U+27e9           # ⟩ [U+27E9] MATHEMATICAL RIGHT ANGLE BRACKET
shiftr  altgr   keycode  10 = U+27e9           # ⟩ [U+27E9] MATHEMATICAL RIGHT ANGLE BRACKET
ctrll   altgr   keycode  10 = U+221d           # ∝ [U+221D] PROPORTIONAL TO

                keycode  11 = zero             # 0 [U+0030] DIGIT ZERO
        shiftl  keycode  11 = U+201d           # ” [U+201D] RIGHT DOUBLE QUOTATION MARK
        shiftr  keycode  11 = U+201d           # ” [U+201D] RIGHT DOUBLE QUOTATION MARK
        altgr   keycode  11 = U+2019           # ’ [U+2019] RIGHT SINGLE QUOTATION MARK
        ctrll   keycode  11 = asterisk         # * [U+002A] ASTERISK
shiftl  ctrll   keycode  11 = asterisk         # * [U+002A] ASTERISK
shiftr  ctrll   keycode  11 = asterisk         # * [U+002A] ASTERISK
shiftl  altgr   keycode  11 = U+2080           # ₀ [U+2080] SUBSCRIPT ZERO
shiftr  altgr   keycode  11 = U+2080           # ₀ [U+2080] SUBSCRIPT ZERO
ctrll   altgr   keycode  11 = U+2205           # ∅ [U+2205] EMPTY SET

                keycode  12 = minus            # - [U+002D] HYPHEN-MINUS
        shiftl  keycode  12 = U+2014           # — [U+2014] EM DASH
        shiftr  keycode  12 = U+2014           # — [U+2014] EM DASH
        altgr   keycode  12 = space            #   [U+0020] SPACE
        ctrll   keycode  12 = minus            # - [U+002D] HYPHEN-MINUS
shiftl  ctrll   keycode  12 = minus            # - [U+002D] HYPHEN-MINUS
shiftr  ctrll   keycode  12 = minus            # - [U+002D] HYPHEN-MINUS
shiftl  altgr   keycode  12 = U+2011           # ‑ [U+2011] NON-BREAKING HYPHEN
shiftr  altgr   keycode  12 = U+2011           # ‑ [U+2011] NON-BREAKING HYPHEN
ctrll   altgr   keycode  12 = U+254c           # ╌ [U+254C] BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL

                keycode  13 = grave            # ` [U+0060] GRAVE ACCENT
        shiftl  keycode  13 = cedilla          # ¸ [U+00B8] CEDILLA
        shiftr  keycode  13 = cedilla          # ¸ [U+00B8] CEDILLA
        altgr   keycode  13 = U+02da           # ˚ [U+02DA] RING ABOVE
        ctrll   keycode  13 = diaeresis        # ¨ [U+00A8] DIAERESIS
shiftl  ctrll   keycode  13 = diaeresis        # ¨ [U+00A8] DIAERESIS
shiftr  ctrll   keycode  13 = diaeresis        # ¨ [U+00A8] DIAERESIS
shiftl  altgr   keycode  13 = U+1ffe           # ῾ [U+1FFE] GREEK DASIA
shiftr  altgr   keycode  13 = U+1ffe           # ῾ [U+1FFE] GREEK DASIA
ctrll   altgr   keycode  13 = macron           # ¯ [U+00AF] MACRON

                keycode  16 = x                # x [U+0078] LATIN SMALL LETTER X
shift   shiftl  keycode  16 = x                # x [U+0078] LATIN SMALL LETTER X
shift   shiftr  keycode  16 = x                # x [U+0078] LATIN SMALL LETTER X
        shiftl  keycode  16 = +X               # X [U+0058] LATIN CAPITAL LETTER X
        shiftr  keycode  16 = +X               # X [U+0058] LATIN CAPITAL LETTER X
        altgr   keycode  16 = U+2026           # … [U+2026] HORIZONTAL ELLIPSIS
        ctrll   keycode  16 = U+21de           # ⇞ [U+21DE] UPWARDS ARROW WITH DOUBLE STROKE
shiftl  ctrll   keycode  16 = U+21de           # ⇞ [U+21DE] UPWARDS ARROW WITH DOUBLE STROKE
shiftr  ctrll   keycode  16 = U+21de           # ⇞ [U+21DE] UPWARDS ARROW WITH DOUBLE STROKE
shiftl  altgr   keycode  16 = U+03be           # ξ [U+03BE] GREEK SMALL LETTER XI
shiftr  altgr   keycode  16 = U+03be           # ξ [U+03BE] GREEK SMALL LETTER XI
ctrll   altgr   keycode  16 = U+039e           # Ξ [U+039E] GREEK CAPITAL LETTER XI

                keycode  17 = v                # v [U+0076] LATIN SMALL LETTER V
shift   shiftl  keycode  17 = v                # v [U+0076] LATIN SMALL LETTER V
shift   shiftr  keycode  17 = v                # v [U+0076] LATIN SMALL LETTER V
        shiftl  keycode  17 = +V               # V [U+0056] LATIN CAPITAL LETTER V
        shiftr  keycode  17 = +V               # V [U+0056] LATIN CAPITAL LETTER V
        altgr   keycode  17 = underscore       # _ [U+005F] LOW LINE
        ctrll   keycode  17 = U+232b           # ⌫ [U+232B] ERASE TO THE LEFT
shiftl  ctrll   keycode  17 = U+232b           # ⌫ [U+232B] ERASE TO THE LEFT
shiftr  ctrll   keycode  17 = U+232b           # ⌫ [U+232B] ERASE TO THE LEFT
shiftl  altgr   keycode  17 = space            #   [U+0020] SPACE
shiftr  altgr   keycode  17 = space            #   [U+0020] SPACE
ctrll   altgr   keycode  17 = U+221a           # √ [U+221A] SQUARE ROOT

                keycode  18 = l                # l [U+006C] LATIN SMALL LETTER L
shift   shiftl  keycode  18 = l                # l [U+006C] LATIN SMALL LETTER L
shift   shiftr  keycode  18 = l                # l [U+006C] LATIN SMALL LETTER L
        shiftl  keycode  18 = +L               # L [U+004C] LATIN CAPITAL LETTER L
        shiftr  keycode  18 = +L               # L [U+004C] LATIN CAPITAL LETTER L
        altgr   keycode  18 = bracketleft      # [ [U+005B] LEFT SQUARE BRACKET
        ctrll   keycode  18 = U+21e1           # ⇡ [U+21E1] UPWARDS DASHED ARROW
shiftl  ctrll   keycode  18 = U+21e1           # ⇡ [U+21E1] UPWARDS DASHED ARROW
shiftr  ctrll   keycode  18 = U+21e1           # ⇡ [U+21E1] UPWARDS DASHED ARROW
shiftl  altgr   keycode  18 = U+03bb           # λ [U+03BB] GREEK SMALL LETTER LAMDA
shiftr  altgr   keycode  18 = U+03bb           # λ [U+03BB] GREEK SMALL LETTER LAMDA
ctrll   altgr   keycode  18 = U+039b           # Λ [U+039B] GREEK CAPITAL LETTER LAMDA

                keycode  19 = c                # c [U+0063] LATIN SMALL LETTER C
shift   shiftl  keycode  19 = c                # c [U+0063] LATIN SMALL LETTER C
shift   shiftr  keycode  19 = c                # c [U+0063] LATIN SMALL LETTER C
        shiftl  keycode  19 = +C               # C [U+0043] LATIN CAPITAL LETTER C
        shiftr  keycode  19 = +C               # C [U+0043] LATIN CAPITAL LETTER C
        altgr   keycode  19 = bracketright     # ] [U+005D] RIGHT SQUARE BRACKET
        ctrll   keycode  19 = U+2326           # ⌦ [U+2326] ERASE TO THE RIGHT
shiftl  ctrll   keycode  19 = U+2326           # ⌦ [U+2326] ERASE TO THE RIGHT
shiftr  ctrll   keycode  19 = U+2326           # ⌦ [U+2326] ERASE TO THE RIGHT
shiftl  altgr   keycode  19 = U+03c7           # χ [U+03C7] GREEK SMALL LETTER CHI
shiftr  altgr   keycode  19 = U+03c7           # χ [U+03C7] GREEK SMALL LETTER CHI
ctrll   altgr   keycode  19 = U+2102           # ℂ [U+2102] DOUBLE-STRUCK CAPITAL C

                keycode  20 = w                # w [U+0077] LATIN SMALL LETTER W
shift   shiftl  keycode  20 = w                # w [U+0077] LATIN SMALL LETTER W
shift   shiftr  keycode  20 = w                # w [U+0077] LATIN SMALL LETTER W
        shiftl  keycode  20 = +W               # W [U+0057] LATIN CAPITAL LETTER W
        shiftr  keycode  20 = +W               # W [U+0057] LATIN CAPITAL LETTER W
        altgr   keycode  20 = asciicircum      # ^ [U+005E] CIRCUMFLEX ACCENT
        ctrll   keycode  20 = U+21df           # ⇟ [U+21DF] DOWNWARDS ARROW WITH DOUBLE STROKE
shiftl  ctrll   keycode  20 = U+21df           # ⇟ [U+21DF] DOWNWARDS ARROW WITH DOUBLE STROKE
shiftr  ctrll   keycode  20 = U+21df           # ⇟ [U+21DF] DOWNWARDS ARROW WITH DOUBLE STROKE
shiftl  altgr   keycode  20 = U+03c9           # ω [U+03C9] GREEK SMALL LETTER OMEGA
shiftr  altgr   keycode  20 = U+03c9           # ω [U+03C9] GREEK SMALL LETTER OMEGA
ctrll   altgr   keycode  20 = U+03a9           # Ω [U+03A9] GREEK CAPITAL LETTER OMEGA

                keycode  21 = k                # k [U+006B] LATIN SMALL LETTER K
shift   shiftl  keycode  21 = k                # k [U+006B] LATIN SMALL LETTER K
shift   shiftr  keycode  21 = k                # k [U+006B] LATIN SMALL LETTER K
        shiftl  keycode  21 = +K               # K [U+004B] LATIN CAPITAL LETTER K
        shiftr  keycode  21 = +K               # K [U+004B] LATIN CAPITAL LETTER K
        altgr   keycode  21 = exclam           # ! [U+0021] EXCLAMATION MARK
        ctrll   keycode  21 = exclamdown       # ¡ [U+00A1] INVERTED EXCLAMATION MARK
shiftl  ctrll   keycode  21 = exclamdown       # ¡ [U+00A1] INVERTED EXCLAMATION MARK
shiftr  ctrll   keycode  21 = exclamdown       # ¡ [U+00A1] INVERTED EXCLAMATION MARK
shiftl  altgr   keycode  21 = U+03ba           # κ [U+03BA] GREEK SMALL LETTER KAPPA
shiftr  altgr   keycode  21 = U+03ba           # κ [U+03BA] GREEK SMALL LETTER KAPPA
ctrll   altgr   keycode  21 = multiply         # × [U+00D7] MULTIPLICATION SIGN

                keycode  22 = h                # h [U+0068] LATIN SMALL LETTER H
shift   shiftl  keycode  22 = h                # h [U+0068] LATIN SMALL LETTER H
shift   shiftr  keycode  22 = h                # h [U+0068] LATIN SMALL LETTER H
        shiftl  keycode  22 = +H               # H [U+0048] LATIN CAPITAL LETTER H
        shiftr  keycode  22 = +H               # H [U+0048] LATIN CAPITAL LETTER H
        altgr   keycode  22 = less             # < [U+003C] LESS-THAN SIGN
        ctrll   keycode  22 = seven            # 7 [U+0037] DIGIT SEVEN
shiftl  ctrll   keycode  22 = seven            # 7 [U+0037] DIGIT SEVEN
shiftr  ctrll   keycode  22 = seven            # 7 [U+0037] DIGIT SEVEN
shiftl  altgr   keycode  22 = U+03c8           # ψ [U+03C8] GREEK SMALL LETTER PSI
shiftr  altgr   keycode  22 = U+03c8           # ψ [U+03C8] GREEK SMALL LETTER PSI
ctrll   altgr   keycode  22 = U+03a8           # Ψ [U+03A8] GREEK CAPITAL LETTER PSI

                keycode  23 = g                # g [U+0067] LATIN SMALL LETTER G
shift   shiftl  keycode  23 = g                # g [U+0067] LATIN SMALL LETTER G
shift   shiftr  keycode  23 = g                # g [U+0067] LATIN SMALL LETTER G
        shiftl  keycode  23 = +G               # G [U+0047] LATIN CAPITAL LETTER G
        shiftr  keycode  23 = +G               # G [U+0047] LATIN CAPITAL LETTER G
        altgr   keycode  23 = greater          # > [U+003E] GREATER-THAN SIGN
        ctrll   keycode  23 = eight            # 8 [U+0038] DIGIT EIGHT
shiftl  ctrll   keycode  23 = eight            # 8 [U+0038] DIGIT EIGHT
shiftr  ctrll   keycode  23 = eight            # 8 [U+0038] DIGIT EIGHT
shiftl  altgr   keycode  23 = U+03b3           # γ [U+03B3] GREEK SMALL LETTER GAMMA
shiftr  altgr   keycode  23 = U+03b3           # γ [U+03B3] GREEK SMALL LETTER GAMMA
ctrll   altgr   keycode  23 = U+0393           # Γ [U+0393] GREEK CAPITAL LETTER GAMMA

                keycode  24 = f                # f [U+0066] LATIN SMALL LETTER F
shift   shiftl  keycode  24 = f                # f [U+0066] LATIN SMALL LETTER F
shift   shiftr  keycode  24 = f                # f [U+0066] LATIN SMALL LETTER F
        shiftl  keycode  24 = +F               # F [U+0046] LATIN CAPITAL LETTER F
        shiftr  keycode  24 = +F               # F [U+0046] LATIN CAPITAL LETTER F
        altgr   keycode  24 = equal            # = [U+003D] EQUALS SIGN
        ctrll   keycode  24 = nine             # 9 [U+0039] DIGIT NINE
shiftl  ctrll   keycode  24 = nine             # 9 [U+0039] DIGIT NINE
shiftr  ctrll   keycode  24 = nine             # 9 [U+0039] DIGIT NINE
shiftl  altgr   keycode  24 = U+03c6           # φ [U+03C6] GREEK SMALL LETTER PHI
shiftr  altgr   keycode  24 = U+03c6           # φ [U+03C6] GREEK SMALL LETTER PHI
ctrll   altgr   keycode  24 = U+03a6           # Φ [U+03A6] GREEK CAPITAL LETTER PHI

                keycode  25 = q                # q [U+0071] LATIN SMALL LETTER Q
shift   shiftl  keycode  25 = q                # q [U+0071] LATIN SMALL LETTER Q
shift   shiftr  keycode  25 = q                # q [U+0071] LATIN SMALL LETTER Q
        shiftl  keycode  25 = +Q               # Q [U+0051] LATIN CAPITAL LETTER Q
        shiftr  keycode  25 = +Q               # Q [U+0051] LATIN CAPITAL LETTER Q
        altgr   keycode  25 = ampersand        # & [U+0026] AMPERSAND
        ctrll   keycode  25 = plus             # + [U+002B] PLUS SIGN
shiftl  ctrll   keycode  25 = plus             # + [U+002B] PLUS SIGN
shiftr  ctrll   keycode  25 = plus             # + [U+002B] PLUS SIGN
shiftl  altgr   keycode  25 = U+03d5           # ϕ [U+03D5] GREEK PHI SYMBOL
shiftr  altgr   keycode  25 = U+03d5           # ϕ [U+03D5] GREEK PHI SYMBOL
ctrll   altgr   keycode  25 = U+211a           # ℚ [U+211A] DOUBLE-STRUCK CAPITAL Q

                keycode  26 = ssharp           # ß [U+00DF] LATIN SMALL LETTER SHARP S
shift   shiftl  keycode  26 = ssharp           # ß [U+00DF] LATIN SMALL LETTER SHARP S
shift   shiftr  keycode  26 = ssharp           # ß [U+00DF] LATIN SMALL LETTER SHARP S
        shiftl  keycode  26 = +U+1e9e          # ẞ [U+1E9E] LATIN CAPITAL LETTER SHARP S
        shiftr  keycode  26 = +U+1e9e          # ẞ [U+1E9E] LATIN CAPITAL LETTER SHARP S
        altgr   keycode  26 = U+017f           # ſ [U+017F] LATIN SMALL LETTER LONG S
        ctrll   keycode  26 = U+2212           # − [U+2212] MINUS SIGN
shiftl  ctrll   keycode  26 = U+2212           # − [U+2212] MINUS SIGN
shiftr  ctrll   keycode  26 = U+2212           # − [U+2212] MINUS SIGN
shiftl  altgr   keycode  26 = U+03c2           # ς [U+03C2] GREEK SMALL LETTER FINAL SIGMA
shiftr  altgr   keycode  26 = U+03c2           # ς [U+03C2] GREEK SMALL LETTER FINAL SIGMA
ctrll   altgr   keycode  26 = U+2218           # ∘ [U+2218] RING OPERATOR

                keycode  27 = acute            # ´ [U+00B4] ACUTE ACCENT
        shiftl  keycode  27 = U+02dc           # ˜ [U+02DC] SMALL TILDE
        shiftr  keycode  27 = U+02dc           # ˜ [U+02DC] SMALL TILDE
        altgr   keycode  27 = slash            # / [U+002F] SOLIDUS
        ctrll   keycode  27 = U+02dd           # ˝ [U+02DD] DOUBLE ACUTE ACCENT
shiftl  ctrll   keycode  27 = U+02dd           # ˝ [U+02DD] DOUBLE ACUTE ACCENT
shiftr  ctrll   keycode  27 = U+02dd           # ˝ [U+02DD] DOUBLE ACUTE ACCENT
shiftl  altgr   keycode  27 = U+1fbf           # ᾿ [U+1FBF] GREEK PSILI
shiftr  altgr   keycode  27 = U+1fbf           # ᾿ [U+1FBF] GREEK PSILI
ctrll   altgr   keycode  27 = U+02d8           # ˘ [U+02D8] BREVE

                keycode  30 = u                # u [U+0075] LATIN SMALL LETTER U
shift   shiftl  keycode  30 = u                # u [U+0075] LATIN SMALL LETTER U
shift   shiftr  keycode  30 = u                # u [U+0075] LATIN SMALL LETTER U
        shiftl  keycode  30 = +U               # U [U+0055] LATIN CAPITAL LETTER U
        shiftr  keycode  30 = +U               # U [U+0055] LATIN CAPITAL LETTER U
        altgr   keycode  30 = backslash        # \ [U+005C] REVERSE SOLIDUS
        ctrll   keycode  30 = U+21f1           # ⇱ [U+21F1] NORTH WEST ARROW TO CORNER
shiftl  ctrll   keycode  30 = U+21f1           # ⇱ [U+21F1] NORTH WEST ARROW TO CORNER
shiftr  ctrll   keycode  30 = U+21f1           # ⇱ [U+21F1] NORTH WEST ARROW TO CORNER
shiftl  altgr   keycode  30 = space            #   [U+0020] SPACE
shiftr  altgr   keycode  30 = space            #   [U+0020] SPACE
ctrll   altgr   keycode  30 = U+2282           # ⊂ [U+2282] SUBSET OF

                keycode  31 = i                # i [U+0069] LATIN SMALL LETTER I
shift   shiftl  keycode  31 = i                # i [U+0069] LATIN SMALL LETTER I
shift   shiftr  keycode  31 = i                # i [U+0069] LATIN SMALL LETTER I
        shiftl  keycode  31 = +I               # I [U+0049] LATIN CAPITAL LETTER I
        shiftr  keycode  31 = +I               # I [U+0049] LATIN CAPITAL LETTER I
        altgr   keycode  31 = slash            # / [U+002F] SOLIDUS
        ctrll   keycode  31 = U+21e0           # ⇠ [U+21E0] LEFTWARDS DASHED ARROW
shiftl  ctrll   keycode  31 = U+21e0           # ⇠ [U+21E0] LEFTWARDS DASHED ARROW
shiftr  ctrll   keycode  31 = U+21e0           # ⇠ [U+21E0] LEFTWARDS DASHED ARROW
shiftl  altgr   keycode  31 = U+03b9           # ι [U+03B9] GREEK SMALL LETTER IOTA
shiftr  altgr   keycode  31 = U+03b9           # ι [U+03B9] GREEK SMALL LETTER IOTA
ctrll   altgr   keycode  31 = U+222b           # ∫ [U+222B] INTEGRAL

                keycode  32 = a                # a [U+0061] LATIN SMALL LETTER A
shift   shiftl  keycode  32 = a                # a [U+0061] LATIN SMALL LETTER A
shift   shiftr  keycode  32 = a                # a [U+0061] LATIN SMALL LETTER A
        shiftl  keycode  32 = +A               # A [U+0041] LATIN CAPITAL LETTER A
        shiftr  keycode  32 = +A               # A [U+0041] LATIN CAPITAL LETTER A
        altgr   keycode  32 = braceleft        # { [U+007B] LEFT CURLY BRACKET
        ctrll   keycode  32 = U+21e3           # ⇣ [U+21E3] DOWNWARDS DASHED ARROW
shiftl  ctrll   keycode  32 = U+21e3           # ⇣ [U+21E3] DOWNWARDS DASHED ARROW
shiftr  ctrll   keycode  32 = U+21e3           # ⇣ [U+21E3] DOWNWARDS DASHED ARROW
shiftl  altgr   keycode  32 = U+03b1           # α [U+03B1] GREEK SMALL LETTER ALPHA
shiftr  altgr   keycode  32 = U+03b1           # α [U+03B1] GREEK SMALL LETTER ALPHA
ctrll   altgr   keycode  32 = U+2200           # ∀ [U+2200] FOR ALL

                keycode  33 = e                # e [U+0065] LATIN SMALL LETTER E
shift   shiftl  keycode  33 = e                # e [U+0065] LATIN SMALL LETTER E
shift   shiftr  keycode  33 = e                # e [U+0065] LATIN SMALL LETTER E
        shiftl  keycode  33 = +E               # E [U+0045] LATIN CAPITAL LETTER E
        shiftr  keycode  33 = +E               # E [U+0045] LATIN CAPITAL LETTER E
        altgr   keycode  33 = braceright       # } [U+007D] RIGHT CURLY BRACKET
        ctrll   keycode  33 = U+21e2           # ⇢ [U+21E2] RIGHTWARDS DASHED ARROW
shiftl  ctrll   keycode  33 = U+21e2           # ⇢ [U+21E2] RIGHTWARDS DASHED ARROW
shiftr  ctrll   keycode  33 = U+21e2           # ⇢ [U+21E2] RIGHTWARDS DASHED ARROW
shiftl  altgr   keycode  33 = U+03b5           # ε [U+03B5] GREEK SMALL LETTER EPSILON
shiftr  altgr   keycode  33 = U+03b5           # ε [U+03B5] GREEK SMALL LETTER EPSILON
ctrll   altgr   keycode  33 = U+2203           # ∃ [U+2203] THERE EXISTS

                keycode  34 = o                # o [U+006F] LATIN SMALL LETTER O
shift   shiftl  keycode  34 = o                # o [U+006F] LATIN SMALL LETTER O
shift   shiftr  keycode  34 = o                # o [U+006F] LATIN SMALL LETTER O
        shiftl  keycode  34 = +O               # O [U+004F] LATIN CAPITAL LETTER O
        shiftr  keycode  34 = +O               # O [U+004F] LATIN CAPITAL LETTER O
        altgr   keycode  34 = asterisk         # * [U+002A] ASTERISK
        ctrll   keycode  34 = U+21f2           # ⇲ [U+21F2] SOUTH EAST ARROW TO CORNER
shiftl  ctrll   keycode  34 = U+21f2           # ⇲ [U+21F2] SOUTH EAST ARROW TO CORNER
shiftr  ctrll   keycode  34 = U+21f2           # ⇲ [U+21F2] SOUTH EAST ARROW TO CORNER
shiftl  altgr   keycode  34 = U+03bf           # ο [U+03BF] GREEK SMALL LETTER OMICRON
shiftr  altgr   keycode  34 = U+03bf           # ο [U+03BF] GREEK SMALL LETTER OMICRON
ctrll   altgr   keycode  34 = U+2208           # ∈ [U+2208] ELEMENT OF

                keycode  35 = s                # s [U+0073] LATIN SMALL LETTER S
shift   shiftl  keycode  35 = s                # s [U+0073] LATIN SMALL LETTER S
shift   shiftr  keycode  35 = s                # s [U+0073] LATIN SMALL LETTER S
        shiftl  keycode  35 = +S               # S [U+0053] LATIN CAPITAL LETTER S
        shiftr  keycode  35 = +S               # S [U+0053] LATIN CAPITAL LETTER S
        altgr   keycode  35 = question         # ? [U+003F] QUESTION MARK
        ctrll   keycode  35 = questiondown     # ¿ [U+00BF] INVERTED QUESTION MARK
shiftl  ctrll   keycode  35 = questiondown     # ¿ [U+00BF] INVERTED QUESTION MARK
shiftr  ctrll   keycode  35 = questiondown     # ¿ [U+00BF] INVERTED QUESTION MARK
shiftl  altgr   keycode  35 = U+03c3           # σ [U+03C3] GREEK SMALL LETTER SIGMA
shiftr  altgr   keycode  35 = U+03c3           # σ [U+03C3] GREEK SMALL LETTER SIGMA
ctrll   altgr   keycode  35 = U+03a3           # Σ [U+03A3] GREEK CAPITAL LETTER SIGMA

                keycode  36 = n                # n [U+006E] LATIN SMALL LETTER N
shift   shiftl  keycode  36 = n                # n [U+006E] LATIN SMALL LETTER N
shift   shiftr  keycode  36 = n                # n [U+006E] LATIN SMALL LETTER N
        shiftl  keycode  36 = +N               # N [U+004E] LATIN CAPITAL LETTER N
        shiftr  keycode  36 = +N               # N [U+004E] LATIN CAPITAL LETTER N
        altgr   keycode  36 = parenleft        # ( [U+0028] LEFT PARENTHESIS
        ctrll   keycode  36 = four             # 4 [U+0034] DIGIT FOUR
shiftl  ctrll   keycode  36 = four             # 4 [U+0034] DIGIT FOUR
shiftr  ctrll   keycode  36 = four             # 4 [U+0034] DIGIT FOUR
shiftl  altgr   keycode  36 = U+03bd           # ν [U+03BD] GREEK SMALL LETTER NU
shiftr  altgr   keycode  36 = U+03bd           # ν [U+03BD] GREEK SMALL LETTER NU
ctrll   altgr   keycode  36 = U+2115           # ℕ [U+2115] DOUBLE-STRUCK CAPITAL N

                keycode  37 = r                # r [U+0072] LATIN SMALL LETTER R
shift   shiftl  keycode  37 = r                # r [U+0072] LATIN SMALL LETTER R
shift   shiftr  keycode  37 = r                # r [U+0072] LATIN SMALL LETTER R
        shiftl  keycode  37 = +R               # R [U+0052] LATIN CAPITAL LETTER R
        shiftr  keycode  37 = +R               # R [U+0052] LATIN CAPITAL LETTER R
        altgr   keycode  37 = parenright       # ) [U+0029] RIGHT PARENTHESIS
        ctrll   keycode  37 = five             # 5 [U+0035] DIGIT FIVE
shiftl  ctrll   keycode  37 = five             # 5 [U+0035] DIGIT FIVE
shiftr  ctrll   keycode  37 = five             # 5 [U+0035] DIGIT FIVE
shiftl  altgr   keycode  37 = U+03c1           # ρ [U+03C1] GREEK SMALL LETTER RHO
shiftr  altgr   keycode  37 = U+03c1           # ρ [U+03C1] GREEK SMALL LETTER RHO
ctrll   altgr   keycode  37 = U+211d           # ℝ [U+211D] DOUBLE-STRUCK CAPITAL R

                keycode  38 = t                # t [U+0074] LATIN SMALL LETTER T
shift   shiftl  keycode  38 = t                # t [U+0074] LATIN SMALL LETTER T
shift   shiftr  keycode  38 = t                # t [U+0074] LATIN SMALL LETTER T
        shiftl  keycode  38 = +T               # T [U+0054] LATIN CAPITAL LETTER T
        shiftr  keycode  38 = +T               # T [U+0054] LATIN CAPITAL LETTER T
        altgr   keycode  38 = minus            # - [U+002D] HYPHEN-MINUS
        ctrll   keycode  38 = six              # 6 [U+0036] DIGIT SIX
shiftl  ctrll   keycode  38 = six              # 6 [U+0036] DIGIT SIX
shiftr  ctrll   keycode  38 = six              # 6 [U+0036] DIGIT SIX
shiftl  altgr   keycode  38 = U+03c4           # τ [U+03C4] GREEK SMALL LETTER TAU
shiftr  altgr   keycode  38 = U+03c4           # τ [U+03C4] GREEK SMALL LETTER TAU
ctrll   altgr   keycode  38 = U+2202           # ∂ [U+2202] PARTIAL DIFFERENTIAL

                keycode  39 = d                # d [U+0064] LATIN SMALL LETTER D
shift   shiftl  keycode  39 = d                # d [U+0064] LATIN SMALL LETTER D
shift   shiftr  keycode  39 = d                # d [U+0064] LATIN SMALL LETTER D
        shiftl  keycode  39 = +D               # D [U+0044] LATIN CAPITAL LETTER D
        shiftr  keycode  39 = +D               # D [U+0044] LATIN CAPITAL LETTER D
        altgr   keycode  39 = colon            # : [U+003A] COLON
        ctrll   keycode  39 = comma            # , [U+002C] COMMA
shiftl  ctrll   keycode  39 = comma            # , [U+002C] COMMA
shiftr  ctrll   keycode  39 = comma            # , [U+002C] COMMA
shiftl  altgr   keycode  39 = U+03b4           # δ [U+03B4] GREEK SMALL LETTER DELTA
shiftr  altgr   keycode  39 = U+03b4           # δ [U+03B4] GREEK SMALL LETTER DELTA
ctrll   altgr   keycode  39 = U+0394           # Δ [U+0394] GREEK CAPITAL LETTER DELTA

                keycode  40 = y                # y [U+0079] LATIN SMALL LETTER Y
shift   shiftl  keycode  40 = y                # y [U+0079] LATIN SMALL LETTER Y
shift   shiftr  keycode  40 = y                # y [U+0079] LATIN SMALL LETTER Y
        shiftl  keycode  40 = +Y               # Y [U+0059] LATIN CAPITAL LETTER Y
        shiftr  keycode  40 = +Y               # Y [U+0059] LATIN CAPITAL LETTER Y
        altgr   keycode  40 = at               # @ [U+0040] COMMERCIAL AT
        ctrll   keycode  40 = period           # . [U+002E] FULL STOP
shiftl  ctrll   keycode  40 = period           # . [U+002E] FULL STOP
shiftr  ctrll   keycode  40 = period           # . [U+002E] FULL STOP
shiftl  altgr   keycode  40 = U+03c5           # υ [U+03C5] GREEK SMALL LETTER UPSILON
shiftr  altgr   keycode  40 = U+03c5           # υ [U+03C5] GREEK SMALL LETTER UPSILON
ctrll   altgr   keycode  40 = U+2207           # ∇ [U+2207] NABLA

                keycode  44 = udiaeresis       # ü [U+00FC] LATIN SMALL LETTER U WITH DIAERESIS
shift   shiftl  keycode  44 = udiaeresis       # ü [U+00FC] LATIN SMALL LETTER U WITH DIAERESIS
shift   shiftr  keycode  44 = udiaeresis       # ü [U+00FC] LATIN SMALL LETTER U WITH DIAERESIS
        shiftl  keycode  44 = +Udiaeresis      # Ü [U+00DC] LATIN CAPITAL LETTER U WITH DIAERESIS
        shiftr  keycode  44 = +Udiaeresis      # Ü [U+00DC] LATIN CAPITAL LETTER U WITH DIAERESIS
        altgr   keycode  44 = numbersign       # # [U+0023] NUMBER SIGN
        ctrll   keycode  44 = U+2327           # ⌧ [U+2327] X IN A RECTANGLE BOX
shiftl  ctrll   keycode  44 = U+2327           # ⌧ [U+2327] X IN A RECTANGLE BOX
shiftr  ctrll   keycode  44 = U+2327           # ⌧ [U+2327] X IN A RECTANGLE BOX
shiftl  altgr   keycode  44 = space            #   [U+0020] SPACE
shiftr  altgr   keycode  44 = space            #   [U+0020] SPACE
ctrll   altgr   keycode  44 = U+222a           # ∪ [U+222A] UNION

                keycode  45 = odiaeresis       # ö [U+00F6] LATIN SMALL LETTER O WITH DIAERESIS
shift   shiftl  keycode  45 = odiaeresis       # ö [U+00F6] LATIN SMALL LETTER O WITH DIAERESIS
shift   shiftr  keycode  45 = odiaeresis       # ö [U+00F6] LATIN SMALL LETTER O WITH DIAERESIS
        shiftl  keycode  45 = +Odiaeresis      # Ö [U+00D6] LATIN CAPITAL LETTER O WITH DIAERESIS
        shiftr  keycode  45 = +Odiaeresis      # Ö [U+00D6] LATIN CAPITAL LETTER O WITH DIAERESIS
        altgr   keycode  45 = dollar           # $ [U+0024] DOLLAR SIGN
        ctrll   keycode  45 = U+21e5           # ⇥ [U+21E5] RIGHTWARDS ARROW TO BAR
shiftl  ctrll   keycode  45 = U+21e5           # ⇥ [U+21E5] RIGHTWARDS ARROW TO BAR
shiftr  ctrll   keycode  45 = U+21e5           # ⇥ [U+21E5] RIGHTWARDS ARROW TO BAR
shiftl  altgr   keycode  45 = U+03f5           # ϵ [U+03F5] GREEK LUNATE EPSILON SYMBOL
shiftr  altgr   keycode  45 = U+03f5           # ϵ [U+03F5] GREEK LUNATE EPSILON SYMBOL
ctrll   altgr   keycode  45 = U+2229           # ∩ [U+2229] INTERSECTION

                keycode  46 = adiaeresis       # ä [U+00E4] LATIN SMALL LETTER A WITH DIAERESIS
shift   shiftl  keycode  46 = adiaeresis       # ä [U+00E4] LATIN SMALL LETTER A WITH DIAERESIS
shift   shiftr  keycode  46 = adiaeresis       # ä [U+00E4] LATIN SMALL LETTER A WITH DIAERESIS
        shiftl  keycode  46 = +Adiaeresis      # Ä [U+00C4] LATIN CAPITAL LETTER A WITH DIAERESIS
        shiftr  keycode  46 = +Adiaeresis      # Ä [U+00C4] LATIN CAPITAL LETTER A WITH DIAERESIS
        altgr   keycode  46 = bar              # | [U+007C] VERTICAL LINE
        ctrll   keycode  46 = U+2380           # ⎀ [U+2380] INSERTION SYMBOL
shiftl  ctrll   keycode  46 = U+2380           # ⎀ [U+2380] INSERTION SYMBOL
shiftr  ctrll   keycode  46 = U+2380           # ⎀ [U+2380] INSERTION SYMBOL
shiftl  altgr   keycode  46 = U+03b7           # η [U+03B7] GREEK SMALL LETTER ETA
shiftr  altgr   keycode  46 = U+03b7           # η [U+03B7] GREEK SMALL LETTER ETA
ctrll   altgr   keycode  46 = U+2135           # ℵ [U+2135] ALEF SYMBOL

                keycode  47 = p                # p [U+0070] LATIN SMALL LETTER P
shift   shiftl  keycode  47 = p                # p [U+0070] LATIN SMALL LETTER P
shift   shiftr  keycode  47 = p                # p [U+0070] LATIN SMALL LETTER P
        shiftl  keycode  47 = +P               # P [U+0050] LATIN CAPITAL LETTER P
        shiftr  keycode  47 = +P               # P [U+0050] LATIN CAPITAL LETTER P
        altgr   keycode  47 = asciitilde       # ~ [U+007E] TILDE
        ctrll   keycode  47 = U+21b2           # ↲ [U+21B2] DOWNWARDS ARROW WITH TIP LEFTWARDS
shiftl  ctrll   keycode  47 = U+21b2           # ↲ [U+21B2] DOWNWARDS ARROW WITH TIP LEFTWARDS
shiftr  ctrll   keycode  47 = U+21b2           # ↲ [U+21B2] DOWNWARDS ARROW WITH TIP LEFTWARDS
shiftl  altgr   keycode  47 = U+03c0           # π [U+03C0] GREEK SMALL LETTER PI
shiftr  altgr   keycode  47 = U+03c0           # π [U+03C0] GREEK SMALL LETTER PI
ctrll   altgr   keycode  47 = U+03a0           # Π [U+03A0] GREEK CAPITAL LETTER PI

                keycode  48 = z                # z [U+007A] LATIN SMALL LETTER Z
shift   shiftl  keycode  48 = z                # z [U+007A] LATIN SMALL LETTER Z
shift   shiftr  keycode  48 = z                # z [U+007A] LATIN SMALL LETTER Z
        shiftl  keycode  48 = +Z               # Z [U+005A] LATIN CAPITAL LETTER Z
        shiftr  keycode  48 = +Z               # Z [U+005A] LATIN CAPITAL LETTER Z
        altgr   keycode  48 = grave            # ` [U+0060] GRAVE ACCENT
        ctrll   keycode  48 = U+21b6           # ↶ [U+21B6] ANTICLOCKWISE TOP SEMICIRCLE ARROW
shiftl  ctrll   keycode  48 = U+21b6           # ↶ [U+21B6] ANTICLOCKWISE TOP SEMICIRCLE ARROW
shiftr  ctrll   keycode  48 = U+21b6           # ↶ [U+21B6] ANTICLOCKWISE TOP SEMICIRCLE ARROW
shiftl  altgr   keycode  48 = U+03b6           # ζ [U+03B6] GREEK SMALL LETTER ZETA
shiftr  altgr   keycode  48 = U+03b6           # ζ [U+03B6] GREEK SMALL LETTER ZETA
ctrll   altgr   keycode  48 = U+2124           # ℤ [U+2124] DOUBLE-STRUCK CAPITAL Z

                keycode  49 = b                # b [U+0062] LATIN SMALL LETTER B
shift   shiftl  keycode  49 = b                # b [U+0062] LATIN SMALL LETTER B
shift   shiftr  keycode  49 = b                # b [U+0062] LATIN SMALL LETTER B
        shiftl  keycode  49 = +B               # B [U+0042] LATIN CAPITAL LETTER B
        shiftr  keycode  49 = +B               # B [U+0042] LATIN CAPITAL LETTER B
        altgr   keycode  49 = plus             # + [U+002B] PLUS SIGN
        ctrll   keycode  49 = colon            # : [U+003A] COLON
shiftl  ctrll   keycode  49 = colon            # : [U+003A] COLON
shiftr  ctrll   keycode  49 = colon            # : [U+003A] COLON
shiftl  altgr   keycode  49 = U+03b2           # β [U+03B2] GREEK SMALL LETTER BETA
shiftr  altgr   keycode  49 = U+03b2           # β [U+03B2] GREEK SMALL LETTER BETA
ctrll   altgr   keycode  49 = U+21d0           # ⇐ [U+21D0] LEFTWARDS DOUBLE ARROW

                keycode  50 = m                # m [U+006D] LATIN SMALL LETTER M
shift   shiftl  keycode  50 = m                # m [U+006D] LATIN SMALL LETTER M
shift   shiftr  keycode  50 = m                # m [U+006D] LATIN SMALL LETTER M
        shiftl  keycode  50 = +M               # M [U+004D] LATIN CAPITAL LETTER M
        shiftr  keycode  50 = +M               # M [U+004D] LATIN CAPITAL LETTER M
        altgr   keycode  50 = percent          # % [U+0025] PERCENT SIGN
        ctrll   keycode  50 = one              # 1 [U+0031] DIGIT ONE
shiftl  ctrll   keycode  50 = one              # 1 [U+0031] DIGIT ONE
shiftr  ctrll   keycode  50 = one              # 1 [U+0031] DIGIT ONE
shiftl  altgr   keycode  50 = U+03bc           # μ [U+03BC] GREEK SMALL LETTER MU
shiftr  altgr   keycode  50 = U+03bc           # μ [U+03BC] GREEK SMALL LETTER MU
ctrll   altgr   keycode  50 = U+21d4           # ⇔ [U+21D4] LEFT RIGHT DOUBLE ARROW

                keycode  51 = comma            # , [U+002C] COMMA
        shiftl  keycode  51 = U+2013           # – [U+2013] EN DASH
        shiftr  keycode  51 = U+2013           # – [U+2013] EN DASH
        altgr   keycode  51 = quotedbl         # " [U+0022] QUOTATION MARK
        ctrll   keycode  51 = two              # 2 [U+0032] DIGIT TWO
shiftl  ctrll   keycode  51 = two              # 2 [U+0032] DIGIT TWO
shiftr  ctrll   keycode  51 = two              # 2 [U+0032] DIGIT TWO
shiftl  altgr   keycode  51 = U+03f1           # ϱ [U+03F1] GREEK RHO SYMBOL
shiftr  altgr   keycode  51 = U+03f1           # ϱ [U+03F1] GREEK RHO SYMBOL
ctrll   altgr   keycode  51 = U+21d2           # ⇒ [U+21D2] RIGHTWARDS DOUBLE ARROW

                keycode  52 = period           # . [U+002E] FULL STOP
        shiftl  keycode  52 = U+2022           # • [U+2022] BULLET
        shiftr  keycode  52 = U+2022           # • [U+2022] BULLET
        altgr   keycode  52 = apostrophe       # ' [U+0027] APOSTROPHE
        ctrll   keycode  52 = three            # 3 [U+0033] DIGIT THREE
shiftl  ctrll   keycode  52 = three            # 3 [U+0033] DIGIT THREE
shiftr  ctrll   keycode  52 = three            # 3 [U+0033] DIGIT THREE
shiftl  altgr   keycode  52 = U+03d1           # ϑ [U+03D1] GREEK THETA SYMBOL
shiftr  altgr   keycode  52 = U+03d1           # ϑ [U+03D1] GREEK THETA SYMBOL
ctrll   altgr   keycode  52 = U+21a6           # ↦ [U+21A6] RIGHTWARDS ARROW FROM BAR

                keycode  53 = j                # j [U+006A] LATIN SMALL LETTER J
shift   shiftl  keycode  53 = j                # j [U+006A] LATIN SMALL LETTER J
shift   shiftr  keycode  53 = j                # j [U+006A] LATIN SMALL LETTER J
        shiftl  keycode  53 = +J               # J [U+004A] LATIN CAPITAL LETTER J
        shiftr  keycode  53 = +J               # J [U+004A] LATIN CAPITAL LETTER J
        altgr   keycode  53 = semicolon        # ; [U+003B] SEMICOLON
        ctrll   keycode  53 = semicolon        # ; [U+003B] SEMICOLON
shiftl  ctrll   keycode  53 = semicolon        # ; [U+003B] SEMICOLON
shiftr  ctrll   keycode  53 = semicolon        # ; [U+003B] SEMICOLON
shiftl  altgr   keycode  53 = U+03b8           # θ [U+03B8] GREEK SMALL LETTER THETA
shiftr  altgr   keycode  53 = U+03b8           # θ [U+03B8] GREEK SMALL LETTER THETA
ctrll   altgr   keycode  53 = U+0398           # Θ [U+0398] GREEK CAPITAL LETTER THETA

#==========================================================================
# Manual character definitions
#==========================================================================

# Die Leertaste definieren wir manuell
                keycode  57 = space            #   [U+0020] SPACE
        ctrll   keycode  57 = zero             # 0 [U+0030] DIGIT ZERO
shiftl  ctrll   keycode  57 = zero             # 0 [U+0030] DIGIT ZERO
shiftr  ctrll   keycode  57 = zero             # 0 [U+0030] DIGIT ZERO
shiftl  altgr   keycode  57 = nobreakspace     #   [U+02DE] NO-BREAK SPACE
shiftr  altgr   keycode  57 = nobreakspace     #   [U+02DE] NO-BREAK SPACE
ctrll   altgr   keycode  57 = U+202F           #   [U+202F] NARROW NO-BREAK SPACE

# Wrong CapsLock behaviour with ssharp, see:
# https://bugzilla.kernel.org/show_bug.cgi?id=7063
        plain   keycode  26 = +ssharp          # ß [U+00DF] LATIN SMALL LETTER SHARP S
        shift   keycode  26 = U+1e9e           # ẞ [U+1E9E] LATIN CAPITAL LETTER SHARP S

#==========================================================================
# Special keys (dead keys, non-character keys, exeptions for keys above)
#==========================================================================

        plain   keycode  41 = dead_circumflex  #
                
        ctrll   keycode   5 = VoidSymbol       #   
shiftl  ctrll   keycode   5 = VoidSymbol       #   
shiftr  ctrll   keycode   5 = VoidSymbol       #

        altgr   keycode  12 = VoidSymbol       #
        
        plain   keycode  13 = dead_grave       # 
        shiftl  keycode  13 = dead_cedilla     # 
        shiftr  keycode  13 = dead_cedilla     #
        altgr   keycode  13 = degree           #
        ctrll   keycode  13 = dead_diaeresis   # 
shiftl  ctrll   keycode  13 = dead_diaeresis   # 
shiftr  ctrll   keycode  13 = dead_diaeresis   # 

        ctrll   keycode  16 = Prior            # 
shiftl  ctrll   keycode  16 = Prior            # 
shiftr  ctrll   keycode  16 = Prior            # 

        ctrll   keycode  17 = BackSpace        #
shiftl  ctrll   keycode  17 = BackSpace        #
shiftr  ctrll   keycode  17 = BackSpace        # 
shiftl  altgr   keycode  17 = VoidSymbol       #  
shiftr  altgr   keycode  17 = VoidSymbol       #  

        ctrll   keycode  18 = Up               # 
shiftl  ctrll   keycode  18 = Up               # 
shiftr  ctrll   keycode  18 = Up               # 

        ctrll   keycode  19 = Remove           # 
shiftl  ctrll   keycode  19 = Remove           #
shiftr  ctrll   keycode  19 = Remove           # 

        ctrll   keycode  20 = Next             # 
shiftl  ctrll   keycode  20 = Next             # 
shiftr  ctrll   keycode  20 = Next             # 

        plain   keycode  27 = dead_acute       # 
        shiftl  keycode  27 = dead_tilde       # 
        shiftr  keycode  27 = dead_tilde       # 
        
        ctrll   keycode  30 = Home             # 
shiftl  ctrll   keycode  30 = Home             # 
shiftr  ctrll   keycode  30 = Home             # 
shiftl  altgr   keycode  30 = VoidSymbol       #   
shiftr  altgr   keycode  30 = VoidSymbol       #   

        ctrll   keycode  31 = Left             # 
shiftl  ctrll   keycode  31 = Left             # 
shiftr  ctrll   keycode  31 = Left             # 

        ctrll   keycode  32 = Down             # 
shiftl  ctrll   keycode  32 = Down             # 
shiftr  ctrll   keycode  32 = Down             # 

        ctrll   keycode  33 = Right            # 
shiftl  ctrll   keycode  33 = Right            # 
shiftr  ctrll   keycode  33 = Right            # 

        ctrll   keycode  34 = End              # 
shiftl  ctrll   keycode  34 = End              #
shiftr  ctrll   keycode  34 = End              # 

        ctrll   keycode  44 = Escape           # 
shiftl  ctrll   keycode  44 = Escape           # 
shiftr  ctrll   keycode  44 = Escape           # 
shiftl  altgr   keycode  44 = VoidSymbol       #   
shiftr  altgr   keycode  44 = VoidSymbol       #   

        ctrll   keycode  45 = Tab              # 
shiftl  ctrll   keycode  45 = Tab              # 
shiftr  ctrll   keycode  45 = Tab              # 

        ctrll   keycode  46 = Insert           # 
shiftl  ctrll   keycode  46 = Insert           # 
shiftr  ctrll   keycode  46 = Insert           # 

        ctrll   keycode  47 = Return           # 
shiftl  ctrll   keycode  47 = Return           # 
shiftr  ctrll   keycode  47 = Return           # 

        ctrll   keycode  48 = VoidSymbol       # 
shiftl  ctrll   keycode  48 = VoidSymbol       # 
shiftr  ctrll   keycode  48 = VoidSymbol       # 

#==========================================================================
# Keypad
#==========================================================================

                keycode  69 = Tab              # 
        shiftl  keycode  69 = Tab              # 
        shiftr  keycode  69 = Tab              # 
        altgr   keycode  69 = equal            # = [U+003D] EQUALS SIGN
        ctrll   keycode  69 = U+2260           # ≠ [U+2260] NOT EQUAL TO
shiftl  ctrll   keycode  69 = U+2260           # ≠ [U+2260] NOT EQUAL TO
shiftr  ctrll   keycode  69 = U+2260           # ≠ [U+2260] NOT EQUAL TO
shiftl  altgr   keycode  69 = U+2248           # ≈ [U+2248] ALMOST EQUAL TO
shiftr  altgr   keycode  69 = U+2248           # ≈ [U+2248] ALMOST EQUAL TO
ctrll   altgr   keycode  69 = U+2261           # ≡ [U+2261] IDENTICAL TO

                keycode  98 = KP_Divide        # / [U+002F] SOLIDUS
        shiftl  keycode  98 = KP_Divide        # / [U+002F] SOLIDUS
        shiftr  keycode  98 = KP_Divide        # / [U+002F] SOLIDUS
        altgr   keycode  98 = division         # ÷ [U+00F7] DIVISION SIGN
        ctrll   keycode  98 = U+2044           # ⁄ [U+2044] FRACTION SLASH
shiftl  ctrll   keycode  98 = U+2044           # ⁄ [U+2044] FRACTION SLASH
shiftr  ctrll   keycode  98 = U+2044           # ⁄ [U+2044] FRACTION SLASH
shiftl  altgr   keycode  98 = U+2300           # ⌀ [U+2300] DIAMETER SIGN
shiftr  altgr   keycode  98 = U+2300           # ⌀ [U+2300] DIAMETER SIGN
ctrll   altgr   keycode  98 = U+2223           # ∣ [U+2223] DIVIDES

                keycode  55 = KP_Multiply      # * [U+002A] ASTERISK
        shiftl  keycode  55 = KP_Multiply      # * [U+002A] ASTERISK
        shiftr  keycode  55 = KP_Multiply      # * [U+002A] ASTERISK
        altgr   keycode  55 = U+22c5           # ⋅ [U+22C5] DOT OPERATOR
        ctrll   keycode  55 = multiply         # × [U+00D7] MULTIPLICATION SIGN
shiftl  ctrll   keycode  55 = multiply         # × [U+00D7] MULTIPLICATION SIGN
shiftr  ctrll   keycode  55 = multiply         # × [U+00D7] MULTIPLICATION SIGN
shiftl  altgr   keycode  55 = U+2299           # ⊙ [U+2299] CIRCLED DOT OPERATOR
shiftr  altgr   keycode  55 = U+2299           # ⊙ [U+2299] CIRCLED DOT OPERATOR
ctrll   altgr   keycode  55 = U+2297           # ⊗ [U+2297] CIRCLED TIMES

                keycode  74 = KP_Subtract      # - [U+002D] HYPHEN-MINUS
        shiftl  keycode  74 = KP_Subtract      # - [U+002D] HYPHEN-MINUS
        shiftr  keycode  74 = KP_Subtract      # - [U+002D] HYPHEN-MINUS
        altgr   keycode  74 = U+2212           # − [U+2212] MINUS SIGN
        ctrll   keycode  74 = U+2216           # ∖ [U+2216] SET MINUS
shiftl  ctrll   keycode  74 = U+2216           # ∖ [U+2216] SET MINUS
shiftr  ctrll   keycode  74 = U+2216           # ∖ [U+2216] SET MINUS
shiftl  altgr   keycode  74 = U+2296           # ⊖ [U+2296] CIRCLED MINUS
shiftr  altgr   keycode  74 = U+2296           # ⊖ [U+2296] CIRCLED MINUS
ctrll   altgr   keycode  74 = U+2238           # ∸ [U+2238] DOT MINUS

                keycode  71 = KP_7             # 7 [U+0037] DIGIT SEVEN
        shiftl  keycode  71 = U+2714           # ✔ [U+2714] HEAVY CHECK MARK
        shiftr  keycode  71 = U+2714           # ✔ [U+2714] HEAVY CHECK MARK
        altgr   keycode  71 = U+2195           # ↕ [U+2195] UP DOWN ARROW
        ctrll   keycode  71 = Home             # 
shiftl  ctrll   keycode  71 = Home             # 
shiftr  ctrll   keycode  71 = Home             # 
shiftl  altgr   keycode  71 = U+226a           # ≪ [U+226A] MUCH LESS-THAN
shiftr  altgr   keycode  71 = U+226a           # ≪ [U+226A] MUCH LESS-THAN
ctrll   altgr   keycode  71 = U+2308           # ⌈ [U+2308] LEFT CEILING

                keycode  72 = KP_8             # 8 [U+0038] DIGIT EIGHT
        shiftl  keycode  72 = U+2718           # ✘ [U+2718] HEAVY BALLOT X
        shiftr  keycode  72 = U+2718           # ✘ [U+2718] HEAVY BALLOT X
        altgr   keycode  72 = U+2191           # ↑ [U+2191] UPWARDS ARROW
        ctrll   keycode  72 = Up               # 
shiftl  ctrll   keycode  72 = Up               # 
shiftr  ctrll   keycode  72 = Up               # 
shiftl  altgr   keycode  72 = U+2229           # ∩ [U+2229] INTERSECTION
shiftr  altgr   keycode  72 = U+2229           # ∩ [U+2229] INTERSECTION
ctrll   altgr   keycode  72 = U+22c2           # ⋂ [U+22C2] N-ARY INTERSECTION

                keycode  73 = KP_9             # 9 [U+0039] DIGIT NINE
        shiftl  keycode  73 = U+2020           # † [U+2020] DAGGER
        shiftr  keycode  73 = U+2020           # † [U+2020] DAGGER
        altgr   keycode  73 = VoidSymbol       # 
        ctrll   keycode  73 = Prior            # 
shiftl  ctrll   keycode  73 = Prior            # 
shiftr  ctrll   keycode  73 = Prior            # 
shiftl  altgr   keycode  73 = U+226b           # ≫ [U+226B] MUCH GREATER-THAN
shiftr  altgr   keycode  73 = U+226b           # ≫ [U+226B] MUCH GREATER-THAN
ctrll   altgr   keycode  73 = U+2309           # ⌉ [U+2309] RIGHT CEILING

                keycode  75 = KP_4             # 4 [U+0034] DIGIT FOUR
        shiftl  keycode  75 = U+2663           # ♣ [U+2663] BLACK CLUB SUIT
        shiftr  keycode  75 = U+2663           # ♣ [U+2663] BLACK CLUB SUIT
        altgr   keycode  75 = U+2190           # ← [U+2190] LEFTWARDS ARROW
        ctrll   keycode  75 = Left             # 
shiftl  ctrll   keycode  75 = Left             # 
shiftr  ctrll   keycode  75 = Left             # 
shiftl  altgr   keycode  75 = U+2282           # ⊂ [U+2282] SUBSET OF
shiftr  altgr   keycode  75 = U+2282           # ⊂ [U+2282] SUBSET OF
ctrll   altgr   keycode  75 = U+2286           # ⊆ [U+2286] SUBSET OF OR EQUAL TO

                keycode  76 = KP_5             # 5 [U+0035] DIGIT FIVE
        shiftl  keycode  76 = U+20ac           # € [U+20AC] EURO SIGN
        shiftr  keycode  76 = U+20ac           # € [U+20AC] EURO SIGN
        altgr   keycode  76 = colon            # : [U+003A] COLON
        ctrll   keycode  76 = VoidSymbol       # 
shiftl  ctrll   keycode  76 = VoidSymbol       # 
shiftr  ctrll   keycode  76 = VoidSymbol       # 
shiftl  altgr   keycode  76 = U+22b6           # ⊶ [U+22B6] ORIGINAL OF
shiftr  altgr   keycode  76 = U+22b6           # ⊶ [U+22B6] ORIGINAL OF
ctrll   altgr   keycode  76 = U+22b7           # ⊷ [U+22B7] IMAGE OF

                keycode  77 = KP_6             # 6 [U+0036] DIGIT SIX
        shiftl  keycode  77 = U+2023           # ‣ [U+2023] TRIANGULAR BULLET
        shiftr  keycode  77 = U+2023           # ‣ [U+2023] TRIANGULAR BULLET
        altgr   keycode  77 = U+2192           # → [U+2192] RIGHTWARDS ARROW
        ctrll   keycode  77 = Right            # 
shiftl  ctrll   keycode  77 = Right            # 
shiftr  ctrll   keycode  77 = Right            # 
shiftl  altgr   keycode  77 = U+2283           # ⊃ [U+2283] SUPERSET OF
shiftr  altgr   keycode  77 = U+2283           # ⊃ [U+2283] SUPERSET OF
ctrll   altgr   keycode  77 = U+2287           # ⊇ [U+2287] SUPERSET OF OR EQUAL TO

                keycode  78 = KP_Add           # + [U+002B] PLUS SIGN
        shiftl  keycode  78 = KP_Add           # + [U+002B] PLUS SIGN
        shiftr  keycode  78 = KP_Add           # + [U+002B] PLUS SIGN
        altgr   keycode  78 = plusminus        # ± [U+00B1] PLUS-MINUS SIGN
        ctrll   keycode  78 = U+2213           # ∓ [U+2213] MINUS-OR-PLUS SIGN
shiftl  ctrll   keycode  78 = U+2213           # ∓ [U+2213] MINUS-OR-PLUS SIGN
shiftr  ctrll   keycode  78 = U+2213           # ∓ [U+2213] MINUS-OR-PLUS SIGN
shiftl  altgr   keycode  78 = U+2295           # ⊕ [U+2295] CIRCLED PLUS
shiftr  altgr   keycode  78 = U+2295           # ⊕ [U+2295] CIRCLED PLUS
ctrll   altgr   keycode  78 = U+2214           # ∔ [U+2214] DOT PLUS

                keycode  79 = KP_1             # 1 [U+0031] DIGIT ONE
        shiftl  keycode  79 = U+2666           # ♦ [U+2666] BLACK DIAMOND SUIT
        shiftr  keycode  79 = U+2666           # ♦ [U+2666] BLACK DIAMOND SUIT
        altgr   keycode  79 = U+2194           # ↔ [U+2194] LEFT RIGHT ARROW
        ctrll   keycode  79 = End              # 
shiftl  ctrll   keycode  79 = End              # 
shiftr  ctrll   keycode  79 = End              # 
shiftl  altgr   keycode  79 = U+2264           # ≤ [U+2264] LESS-THAN OR EQUAL TO
shiftr  altgr   keycode  79 = U+2264           # ≤ [U+2264] LESS-THAN OR EQUAL TO
ctrll   altgr   keycode  79 = U+230a           # ⌊ [U+230A] LEFT FLOOR

                keycode  80 = KP_2             # 2 [U+0032] DIGIT TWO
        shiftl  keycode  80 = U+2665           # ♥ [U+2665] BLACK HEART SUIT
        shiftr  keycode  80 = U+2665           # ♥ [U+2665] BLACK HEART SUIT
        altgr   keycode  80 = U+2193           # ↓ [U+2193] DOWNWARDS ARROW
        ctrll   keycode  80 = Down             # 
shiftl  ctrll   keycode  80 = Down             # 
shiftr  ctrll   keycode  80 = Down             # 
shiftl  altgr   keycode  80 = U+222a           # ∪ [U+222A] UNION
shiftr  altgr   keycode  80 = U+222a           # ∪ [U+222A] UNION
ctrll   altgr   keycode  80 = U+22c3           # ⋃ [U+22C3] N-ARY UNION

                keycode  81 = KP_3             # 3 [U+0033] DIGIT THREE
        shiftl  keycode  81 = U+2660           # ♠ [U+2660] BLACK SPADE SUIT
        shiftr  keycode  81 = U+2660           # ♠ [U+2660] BLACK SPADE SUIT
        altgr   keycode  81 = U+21cc           # ⇌ [U+21CC] RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
        ctrll   keycode  81 = Next             # 
shiftl  ctrll   keycode  81 = Next             # 
shiftr  ctrll   keycode  81 = Next             # 
shiftl  altgr   keycode  81 = U+2265           # ≥ [U+2265] GREATER-THAN OR EQUAL TO
shiftr  altgr   keycode  81 = U+2265           # ≥ [U+2265] GREATER-THAN OR EQUAL TO
ctrll   altgr   keycode  81 = U+230b           # ⌋ [U+230B] RIGHT FLOOR

                keycode  82 = KP_0             # 0 [U+0030] DIGIT ZERO
        shiftl  keycode  82 = U+2423           # ␣ [U+2423] OPEN BOX
        shiftr  keycode  82 = U+2423           # ␣ [U+2423] OPEN BOX
        altgr   keycode  82 = percent          # % [U+0025] PERCENT SIGN
        ctrll   keycode  82 = Insert           # 
shiftl  ctrll   keycode  82 = Insert           # 
shiftr  ctrll   keycode  82 = Insert           # 
shiftl  altgr   keycode  82 = U+2030           # ‰ [U+2030] PER MILLE SIGN
shiftr  altgr   keycode  82 = U+2030           # ‰ [U+2030] PER MILLE SIGN
ctrll   altgr   keycode  82 = U+25a1           # □ [U+25A1] WHITE SQUARE

                keycode  83 = KP_Comma         # , [U+002C] COMMA
        shiftl  keycode  83 = period           # . [U+002E] FULL STOP
        shiftr  keycode  83 = period           # . [U+002E] FULL STOP
        altgr   keycode  83 = comma            # , [U+002C] COMMA
        ctrll   keycode  83 = Remove           # 
shiftl  ctrll   keycode  83 = Remove           # 
shiftr  ctrll   keycode  83 = Remove           # 
shiftl  altgr   keycode  83 = U+2032           # ′ [U+2032] PRIME
shiftr  altgr   keycode  83 = U+2032           # ′ [U+2032] PRIME
ctrll   altgr   keycode  83 = U+2033           # ″ [U+2033] DOUBLE PRIME

                keycode  96 = KP_Enter         #