aboutsummaryrefslogtreecommitdiffstats
path: root/st-fix-keyboard-input-20180605-dc3b5ba.diff
blob: 50bada0fdb38a589531ba56ccf9dc9f8fd6b5c64 (plain) (blame)
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
Author: Jan Christoph Ebersbach <jceb@e-jc.de>
URL: http://st.suckless.org/patches/fix_keyboard_input
Fix keyboard input on terminal

Index: st-patches/st/config.def.h
===================================================================
--- a/config.def.h
+++ b/config.def.h
@@ -209,7 +209,80 @@ Shortcut shortcuts[] = {
  * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF)
  * to be mapped below, add them to this array.
  */
-static KeySym mappedkeys[] = { -1 };
+static KeySym mappedkeys[] = {
+	XK_space,
+	XK_m,
+	XK_i,
+	XK_A,
+	XK_B,
+	XK_C,
+	XK_D,
+	XK_E,
+	XK_F,
+	XK_G,
+	XK_H,
+	XK_I,
+	XK_K,
+	XK_J,
+	XK_L,
+	XK_M,
+	XK_N,
+	XK_O,
+	XK_P,
+	XK_Q,
+	XK_R,
+	XK_S,
+	XK_T,
+	XK_U,
+	XK_V,
+	XK_W,
+	XK_X,
+	XK_Y,
+	XK_Z,
+	XK_Z,
+	XK_0,
+	XK_1,
+	XK_2,
+	XK_3,
+	XK_4,
+	XK_5,
+	XK_6,
+	XK_7,
+	XK_8,
+	XK_9,
+	XK_exclam,
+	XK_quotedbl,
+	XK_numbersign,
+	XK_dollar,
+	XK_percent,
+	XK_ampersand,
+	XK_apostrophe,
+	XK_parenleft,
+	XK_parenright,
+	XK_asterisk,
+	XK_plus,
+	XK_comma,
+	XK_minus,
+	XK_period,
+	XK_slash,
+	XK_colon,
+	XK_semicolon,
+	XK_less,
+	XK_equal,
+	XK_greater,
+	XK_question,
+	XK_at,
+	XK_bracketleft,
+	XK_backslash,
+	XK_bracketright,
+	XK_asciicircum,
+	XK_underscore,
+	XK_grave,
+	XK_braceleft,
+	XK_bar,
+	XK_braceright,
+	XK_asciitilde,
+};
 
 /*
  * State bits to ignore when matching key or button events.  By default,
@@ -232,59 +305,20 @@ static Key key[] = {
 	/* keysym           mask            string      appkey appcursor */
 	{ XK_KP_Home,       ShiftMask,      "\033[2J",       0,   -1},
 	{ XK_KP_Home,       ShiftMask,      "\033[1;2H",     0,   +1},
-	{ XK_KP_Home,       XK_ANY_MOD,     "\033[H",        0,   -1},
-	{ XK_KP_Home,       XK_ANY_MOD,     "\033[1~",       0,   +1},
-	{ XK_KP_Up,         XK_ANY_MOD,     "\033Ox",       +1,    0},
-	{ XK_KP_Up,         XK_ANY_MOD,     "\033[A",        0,   -1},
-	{ XK_KP_Up,         XK_ANY_MOD,     "\033OA",        0,   +1},
-	{ XK_KP_Down,       XK_ANY_MOD,     "\033Or",       +1,    0},
-	{ XK_KP_Down,       XK_ANY_MOD,     "\033[B",        0,   -1},
-	{ XK_KP_Down,       XK_ANY_MOD,     "\033OB",        0,   +1},
-	{ XK_KP_Left,       XK_ANY_MOD,     "\033Ot",       +1,    0},
-	{ XK_KP_Left,       XK_ANY_MOD,     "\033[D",        0,   -1},
-	{ XK_KP_Left,       XK_ANY_MOD,     "\033OD",        0,   +1},
-	{ XK_KP_Right,      XK_ANY_MOD,     "\033Ov",       +1,    0},
-	{ XK_KP_Right,      XK_ANY_MOD,     "\033[C",        0,   -1},
-	{ XK_KP_Right,      XK_ANY_MOD,     "\033OC",        0,   +1},
 	{ XK_KP_Prior,      ShiftMask,      "\033[5;2~",     0,    0},
-	{ XK_KP_Prior,      XK_ANY_MOD,     "\033[5~",       0,    0},
-	{ XK_KP_Begin,      XK_ANY_MOD,     "\033[E",        0,    0},
 	{ XK_KP_End,        ControlMask,    "\033[J",       -1,    0},
 	{ XK_KP_End,        ControlMask,    "\033[1;5F",    +1,    0},
 	{ XK_KP_End,        ShiftMask,      "\033[K",       -1,    0},
 	{ XK_KP_End,        ShiftMask,      "\033[1;2F",    +1,    0},
-	{ XK_KP_End,        XK_ANY_MOD,     "\033[4~",       0,    0},
 	{ XK_KP_Next,       ShiftMask,      "\033[6;2~",     0,    0},
-	{ XK_KP_Next,       XK_ANY_MOD,     "\033[6~",       0,    0},
 	{ XK_KP_Insert,     ShiftMask,      "\033[2;2~",    +1,    0},
 	{ XK_KP_Insert,     ShiftMask,      "\033[4l",      -1,    0},
 	{ XK_KP_Insert,     ControlMask,    "\033[L",       -1,    0},
 	{ XK_KP_Insert,     ControlMask,    "\033[2;5~",    +1,    0},
-	{ XK_KP_Insert,     XK_ANY_MOD,     "\033[4h",      -1,    0},
-	{ XK_KP_Insert,     XK_ANY_MOD,     "\033[2~",      +1,    0},
 	{ XK_KP_Delete,     ControlMask,    "\033[M",       -1,    0},
 	{ XK_KP_Delete,     ControlMask,    "\033[3;5~",    +1,    0},
 	{ XK_KP_Delete,     ShiftMask,      "\033[2K",      -1,    0},
 	{ XK_KP_Delete,     ShiftMask,      "\033[3;2~",    +1,    0},
-	{ XK_KP_Delete,     XK_ANY_MOD,     "\033[P",       -1,    0},
-	{ XK_KP_Delete,     XK_ANY_MOD,     "\033[3~",      +1,    0},
-	{ XK_KP_Multiply,   XK_ANY_MOD,     "\033Oj",       +2,    0},
-	{ XK_KP_Add,        XK_ANY_MOD,     "\033Ok",       +2,    0},
-	{ XK_KP_Enter,      XK_ANY_MOD,     "\033OM",       +2,    0},
-	{ XK_KP_Enter,      XK_ANY_MOD,     "\r",           -1,    0},
-	{ XK_KP_Subtract,   XK_ANY_MOD,     "\033Om",       +2,    0},
-	{ XK_KP_Decimal,    XK_ANY_MOD,     "\033On",       +2,    0},
-	{ XK_KP_Divide,     XK_ANY_MOD,     "\033Oo",       +2,    0},
-	{ XK_KP_0,          XK_ANY_MOD,     "\033Op",       +2,    0},
-	{ XK_KP_1,          XK_ANY_MOD,     "\033Oq",       +2,    0},
-	{ XK_KP_2,          XK_ANY_MOD,     "\033Or",       +2,    0},
-	{ XK_KP_3,          XK_ANY_MOD,     "\033Os",       +2,    0},
-	{ XK_KP_4,          XK_ANY_MOD,     "\033Ot",       +2,    0},
-	{ XK_KP_5,          XK_ANY_MOD,     "\033Ou",       +2,    0},
-	{ XK_KP_6,          XK_ANY_MOD,     "\033Ov",       +2,    0},
-	{ XK_KP_7,          XK_ANY_MOD,     "\033Ow",       +2,    0},
-	{ XK_KP_8,          XK_ANY_MOD,     "\033Ox",       +2,    0},
-	{ XK_KP_9,          XK_ANY_MOD,     "\033Oy",       +2,    0},
 	{ XK_Up,            ShiftMask,      "\033[1;2A",     0,    0},
 	{ XK_Up,            Mod1Mask,       "\033[1;3A",     0,    0},
 	{ XK_Up,         ShiftMask|Mod1Mask,"\033[1;4A",     0,    0},
@@ -323,35 +356,26 @@ static Key key[] = {
 	{ XK_ISO_Left_Tab,  ShiftMask,      "\033[Z",        0,    0},
 	{ XK_Return,        Mod1Mask,       "\033\r",        0,    0},
-	{ XK_Return,        XK_ANY_MOD,     "\r",            0,    0},
+	{ XK_Return,        XK_NO_MOD,      "\r",            0,    0},
 	{ XK_Insert,        ShiftMask,      "\033[4l",      -1,    0},
 	{ XK_Insert,        ShiftMask,      "\033[2;2~",    +1,    0},
 	{ XK_Insert,        ControlMask,    "\033[L",       -1,    0},
 	{ XK_Insert,        ControlMask,    "\033[2;5~",    +1,    0},
-	{ XK_Insert,        XK_ANY_MOD,     "\033[4h",      -1,    0},
-	{ XK_Insert,        XK_ANY_MOD,     "\033[2~",      +1,    0},
 	{ XK_Delete,        ControlMask,    "\033[M",       -1,    0},
 	{ XK_Delete,        ControlMask,    "\033[3;5~",    +1,    0},
 	{ XK_Delete,        ShiftMask,      "\033[2K",      -1,    0},
 	{ XK_Delete,        ShiftMask,      "\033[3;2~",    +1,    0},
-	{ XK_Delete,        XK_ANY_MOD,     "\033[P",       -1,    0},
-	{ XK_Delete,        XK_ANY_MOD,     "\033[3~",      +1,    0},
 	{ XK_BackSpace,     XK_NO_MOD,      "\177",          0,    0},
 	{ XK_BackSpace,     Mod1Mask,       "\033\177",      0,    0},
 	{ XK_Home,          ShiftMask,      "\033[2J",       0,   -1},
 	{ XK_Home,          ShiftMask,      "\033[1;2H",     0,   +1},
-	{ XK_Home,          XK_ANY_MOD,     "\033[H",        0,   -1},
-	{ XK_Home,          XK_ANY_MOD,     "\033[1~",       0,   +1},
 	{ XK_End,           ControlMask,    "\033[J",       -1,    0},
 	{ XK_End,           ControlMask,    "\033[1;5F",    +1,    0},
 	{ XK_End,           ShiftMask,      "\033[K",       -1,    0},
 	{ XK_End,           ShiftMask,      "\033[1;2F",    +1,    0},
-	{ XK_End,           XK_ANY_MOD,     "\033[4~",       0,    0},
 	{ XK_Prior,         ControlMask,    "\033[5;5~",     0,    0},
 	{ XK_Prior,         ShiftMask,      "\033[5;2~",     0,    0},
-	{ XK_Prior,         XK_ANY_MOD,     "\033[5~",       0,    0},
 	{ XK_Next,          ControlMask,    "\033[6;5~",     0,    0},
 	{ XK_Next,          ShiftMask,      "\033[6;2~",     0,    0},
-	{ XK_Next,          XK_ANY_MOD,     "\033[6~",       0,    0},
 	{ XK_F1,            XK_NO_MOD,      "\033OP" ,       0,    0},
 	{ XK_F1, /* F13 */  ShiftMask,      "\033[1;2P",     0,    0},
 	{ XK_F1, /* F25 */  ControlMask,    "\033[1;5P",     0,    0},
@@ -438,6 +462,572 @@ static Key key[] = {
 	{ XK_F33,           XK_NO_MOD,      "\033[20;5~",    0,    0},
 	{ XK_F34,           XK_NO_MOD,      "\033[21;5~",    0,    0},
 	{ XK_F35,           XK_NO_MOD,      "\033[23;5~",    0,    0},
+
+	// libtermkey compatible keyboard input
+	{ XK_KP_Home,      XK_NO_MOD,                      "\033[H",      0, -1},
+	{ XK_KP_Home,      XK_NO_MOD,                      "\033[1~",     0, +1},
+	{ XK_KP_Home,      ControlMask,                    "\033[149;5u", 0,  0},
+	{ XK_KP_Home,      ControlMask|ShiftMask,          "\033[149;6u", 0,  0},
+	{ XK_KP_Home,      Mod1Mask,                       "\033[149;3u", 0,  0},
+	{ XK_KP_Home,      Mod1Mask|ControlMask,           "\033[149;7u", 0,  0},
+	{ XK_KP_Home,      Mod1Mask|ControlMask|ShiftMask, "\033[149;8u", 0,  0},
+	{ XK_KP_Home,      Mod1Mask|ShiftMask,             "\033[149;4u", 0,  0},
+	{ XK_KP_Home,      ShiftMask,                      "\033[149;2u", 0,  0},
+	{ XK_KP_Up,        XK_NO_MOD,                      "\033Ox",     +1,  0},
+	{ XK_KP_Up,        XK_NO_MOD,                      "\033[A",      0, -1},
+	{ XK_KP_Up,        XK_NO_MOD,                      "\033OA",      0, +1},
+	{ XK_KP_Up,        ControlMask,                    "\033[151;5u", 0,  0},
+	{ XK_KP_Up,        ControlMask|ShiftMask,          "\033[151;6u", 0,  0},
+	{ XK_KP_Up,        Mod1Mask,                       "\033[151;3u", 0,  0},
+	{ XK_KP_Up,        Mod1Mask|ControlMask,           "\033[151;7u", 0,  0},
+	{ XK_KP_Up,        Mod1Mask|ControlMask|ShiftMask, "\033[151;8u", 0,  0},
+	{ XK_KP_Up,        Mod1Mask|ShiftMask,             "\033[151;4u", 0,  0},
+	{ XK_KP_Up,        ShiftMask,                      "\033[151;2u", 0,  0},
+	{ XK_KP_Down,      XK_NO_MOD,                      "\033Or",     +1,  0},
+	{ XK_KP_Down,      XK_NO_MOD,                      "\033[B",      0, -1},
+	{ XK_KP_Down,      XK_NO_MOD,                      "\033OB",      0, +1},
+	{ XK_KP_Down,      ControlMask,                    "\033[153;5u", 0,  0},
+	{ XK_KP_Down,      ControlMask|ShiftMask,          "\033[153;6u", 0,  0},
+	{ XK_KP_Down,      Mod1Mask,                       "\033[153;3u", 0,  0},
+	{ XK_KP_Down,      Mod1Mask|ControlMask,           "\033[153;7u", 0,  0},
+	{ XK_KP_Down,      Mod1Mask|ControlMask|ShiftMask, "\033[153;8u", 0,  0},
+	{ XK_KP_Down,      Mod1Mask|ShiftMask,             "\033[153;4u", 0,  0},
+	{ XK_KP_Down,      ShiftMask,                      "\033[153;2u", 0,  0},
+	{ XK_KP_Left,      XK_NO_MOD,                      "\033Ot",     +1,  0},
+	{ XK_KP_Left,      XK_NO_MOD,                      "\033[D",      0, -1},
+	{ XK_KP_Left,      XK_NO_MOD,                      "\033OD",      0, +1},
+	{ XK_KP_Left,      ControlMask,                    "\033[150;5u", 0,  0},
+	{ XK_KP_Left,      ControlMask|ShiftMask,          "\033[150;6u", 0,  0},
+	{ XK_KP_Left,      Mod1Mask,                       "\033[150;3u", 0,  0},
+	{ XK_KP_Left,      Mod1Mask|ControlMask,           "\033[150;7u", 0,  0},
+	{ XK_KP_Left,      Mod1Mask|ControlMask|ShiftMask, "\033[150;8u", 0,  0},
+	{ XK_KP_Left,      Mod1Mask|ShiftMask,             "\033[150;4u", 0,  0},
+	{ XK_KP_Left,      ShiftMask,                      "\033[150;2u", 0,  0},
+	{ XK_KP_Right,     XK_NO_MOD,                      "\033Ov",     +1,  0},
+	{ XK_KP_Right,     XK_NO_MOD,                      "\033[C",      0, -1},
+	{ XK_KP_Right,     XK_NO_MOD,                      "\033OC",      0, +1},
+	{ XK_KP_Right,     ControlMask,                    "\033[152;5u", 0,  0},
+	{ XK_KP_Right,     ControlMask|ShiftMask,          "\033[152;6u", 0,  0},
+	{ XK_KP_Right,     Mod1Mask,                       "\033[152;3u", 0,  0},
+	{ XK_KP_Right,     Mod1Mask|ControlMask,           "\033[152;7u", 0,  0},
+	{ XK_KP_Right,     Mod1Mask|ControlMask|ShiftMask, "\033[152;8u", 0,  0},
+	{ XK_KP_Right,     Mod1Mask|ShiftMask,             "\033[152;4u", 0,  0},
+	{ XK_KP_Right,     ShiftMask,                      "\033[152;2u", 0,  0},
+	{ XK_KP_Prior,     XK_NO_MOD,                      "\033[5~",     0,  0},
+	{ XK_KP_Prior,     ControlMask,                    "\033[154;5u", 0,  0},
+	{ XK_KP_Prior,     ControlMask|ShiftMask,          "\033[154;6u", 0,  0},
+	{ XK_KP_Prior,     Mod1Mask,                       "\033[154;3u", 0,  0},
+	{ XK_KP_Prior,     Mod1Mask|ControlMask,           "\033[154;7u", 0,  0},
+	{ XK_KP_Prior,     Mod1Mask|ControlMask|ShiftMask, "\033[154;8u", 0,  0},
+	{ XK_KP_Prior,     Mod1Mask|ShiftMask,             "\033[154;4u", 0,  0},
+	{ XK_KP_Begin,     XK_NO_MOD,                      "\033[E",      0,  0},
+	{ XK_KP_Begin,     ControlMask,                    "\033[157;5u", 0,  0},
+	{ XK_KP_Begin,     ControlMask|ShiftMask,          "\033[157;6u", 0,  0},
+	{ XK_KP_Begin,     Mod1Mask,                       "\033[157;3u", 0,  0},
+	{ XK_KP_Begin,     Mod1Mask|ControlMask,           "\033[157;7u", 0,  0},
+	{ XK_KP_Begin,     Mod1Mask|ControlMask|ShiftMask, "\033[157;8u", 0,  0},
+	{ XK_KP_Begin,     Mod1Mask|ShiftMask,             "\033[157;4u", 0,  0},
+	{ XK_KP_Begin,     ShiftMask,                      "\033[157;2u", 0,  0},
+	{ XK_KP_End,       XK_NO_MOD,                      "\033[4~",     0,  0},
+	{ XK_KP_End,       ControlMask|ShiftMask,          "\033[156;6u", 0,  0},
+	{ XK_KP_End,       Mod1Mask,                       "\033[156;3u", 0,  0},
+	{ XK_KP_End,       Mod1Mask|ControlMask,           "\033[156;7u", 0,  0},
+	{ XK_KP_End,       Mod1Mask|ControlMask|ShiftMask, "\033[156;8u", 0,  0},
+	{ XK_KP_End,       Mod1Mask|ShiftMask,             "\033[156;4u", 0,  0},
+	{ XK_KP_Next,      XK_NO_MOD,                      "\033[6~",     0,  0},
+	{ XK_KP_Next,      ControlMask,                    "\033[155;5u", 0,  0},
+	{ XK_KP_Next,      ControlMask|ShiftMask,          "\033[155;6u", 0,  0},
+	{ XK_KP_Next,      Mod1Mask,                       "\033[155;3u", 0,  0},
+	{ XK_KP_Next,      Mod1Mask|ControlMask,           "\033[155;7u", 0,  0},
+	{ XK_KP_Next,      Mod1Mask|ControlMask|ShiftMask, "\033[155;8u", 0,  0},
+	{ XK_KP_Next,      Mod1Mask|ShiftMask,             "\033[155;4u", 0,  0},
+	{ XK_KP_Insert,    XK_NO_MOD,                      "\033[4h",    -1,  0},
+	{ XK_KP_Insert,    XK_NO_MOD,                      "\033[2~",    +1,  0},
+	{ XK_KP_Insert,    ControlMask|ShiftMask,          "\033[158;6u", 0,  0},
+	{ XK_KP_Insert,    Mod1Mask,                       "\033[158;3u", 0,  0},
+	{ XK_KP_Insert,    Mod1Mask|ControlMask,           "\033[158;7u", 0,  0},
+	{ XK_KP_Insert,    Mod1Mask|ControlMask|ShiftMask, "\033[158;8u", 0,  0},
+	{ XK_KP_Insert,    Mod1Mask|ShiftMask,             "\033[158;4u", 0,  0},
+	{ XK_KP_Delete,    XK_NO_MOD,                      "\033[P",     -1,  0},
+	{ XK_KP_Delete,    XK_NO_MOD,                      "\033[3~",    +1,  0},
+	{ XK_KP_Delete,    ControlMask|ShiftMask,          "\033[159;6u", 0,  0},
+	{ XK_KP_Delete,    Mod1Mask,                       "\033[159;3u", 0,  0},
+	{ XK_KP_Delete,    Mod1Mask|ControlMask,           "\033[159;7u", 0,  0},
+	{ XK_KP_Delete,    Mod1Mask|ControlMask|ShiftMask, "\033[159;8u", 0,  0},
+	{ XK_KP_Delete,    Mod1Mask|ShiftMask,             "\033[159;4u", 0,  0},
+	{ XK_KP_Multiply,  XK_NO_MOD,                      "\033Oj",     +2,  0},
+	{ XK_KP_Multiply,  ControlMask,                    "\033[170;5u", 0,  0},
+	{ XK_KP_Multiply,  ControlMask|ShiftMask,          "\033[170;6u", 0,  0},
+	{ XK_KP_Multiply,  Mod1Mask,                       "\033[170;3u", 0,  0},
+	{ XK_KP_Multiply,  Mod1Mask|ControlMask,           "\033[170;7u", 0,  0},
+	{ XK_KP_Multiply,  Mod1Mask|ControlMask|ShiftMask, "\033[170;8u", 0,  0},
+	{ XK_KP_Multiply,  Mod1Mask|ShiftMask,             "\033[170;4u", 0,  0},
+	{ XK_KP_Multiply,  ShiftMask,                      "\033[170;2u", 0,  0},
+	{ XK_KP_Add,       XK_NO_MOD,                      "\033Ok",     +2,  0},
+	{ XK_KP_Add,       ControlMask,                    "\033[171;5u", 0,  0},
+	{ XK_KP_Add,       ControlMask|ShiftMask,          "\033[171;6u", 0,  0},
+	{ XK_KP_Add,       Mod1Mask,                       "\033[171;3u", 0,  0},
+	{ XK_KP_Add,       Mod1Mask|ControlMask,           "\033[171;7u", 0,  0},
+	{ XK_KP_Add,       Mod1Mask|ControlMask|ShiftMask, "\033[171;8u", 0,  0},
+	{ XK_KP_Add,       Mod1Mask|ShiftMask,             "\033[171;4u", 0,  0},
+	{ XK_KP_Add,       ShiftMask,                      "\033[171;2u", 0,  0},
+	{ XK_KP_Enter,     XK_NO_MOD,                      "\033OM",     +2,  0},
+	{ XK_KP_Enter,     XK_NO_MOD,                      "\r",         -1,  0},
+	{ XK_KP_Enter,     XK_NO_MOD,                      "\r\n",       -1,  0},
+	{ XK_KP_Enter,     ControlMask,                    "\033[141;5u", 0,  0},
+	{ XK_KP_Enter,     ControlMask|ShiftMask,          "\033[141;6u", 0,  0},
+	{ XK_KP_Enter,     Mod1Mask,                       "\033[141;3u", 0,  0},
+	{ XK_KP_Enter,     Mod1Mask|ControlMask,           "\033[141;7u", 0,  0},
+	{ XK_KP_Enter,     Mod1Mask|ControlMask|ShiftMask, "\033[141;8u", 0,  0},
+	{ XK_KP_Enter,     Mod1Mask|ShiftMask,             "\033[141;4u", 0,  0},
+	{ XK_KP_Enter,     ShiftMask,                      "\033[141;2u", 0,  0},
+	{ XK_KP_Subtract,  XK_NO_MOD,                      "\033Om",     +2,  0},
+	{ XK_KP_Subtract,  ControlMask,                    "\033[173;5u", 0,  0},
+	{ XK_KP_Subtract,  ControlMask|ShiftMask,          "\033[173;6u", 0,  0},
+	{ XK_KP_Subtract,  Mod1Mask,                       "\033[173;3u", 0,  0},
+	{ XK_KP_Subtract,  Mod1Mask|ControlMask,           "\033[173;7u", 0,  0},
+	{ XK_KP_Subtract,  Mod1Mask|ControlMask|ShiftMask, "\033[173;8u", 0,  0},
+	{ XK_KP_Subtract,  Mod1Mask|ShiftMask,             "\033[173;4u", 0,  0},
+	{ XK_KP_Subtract,  ShiftMask,                      "\033[173;2u", 0,  0},
+	{ XK_KP_Decimal,   XK_NO_MOD,                      "\033On",     +2,  0},
+	{ XK_KP_Decimal,   ControlMask,                    "\033[174;5u", 0,  0},
+	{ XK_KP_Decimal,   ControlMask|ShiftMask,          "\033[174;6u", 0,  0},
+	{ XK_KP_Decimal,   Mod1Mask,                       "\033[174;3u", 0,  0},
+	{ XK_KP_Decimal,   Mod1Mask|ControlMask,           "\033[174;7u", 0,  0},
+	{ XK_KP_Decimal,   Mod1Mask|ControlMask|ShiftMask, "\033[174;8u", 0,  0},
+	{ XK_KP_Decimal,   Mod1Mask|ShiftMask,             "\033[174;4u", 0,  0},
+	{ XK_KP_Decimal,   ShiftMask,                      "\033[174;2u", 0,  0},
+	{ XK_KP_Divide,    XK_NO_MOD,                      "\033Oo",     +2,  0},
+	{ XK_KP_Divide,    ControlMask,                    "\033[175;5u", 0,  0},
+	{ XK_KP_Divide,    ControlMask|ShiftMask,          "\033[175;6u", 0,  0},
+	{ XK_KP_Divide,    Mod1Mask,                       "\033[175;3u", 0,  0},
+	{ XK_KP_Divide,    Mod1Mask|ControlMask,           "\033[175;7u", 0,  0},
+	{ XK_KP_Divide,    Mod1Mask|ControlMask|ShiftMask, "\033[175;8u", 0,  0},
+	{ XK_KP_Divide,    Mod1Mask|ShiftMask,             "\033[175;4u", 0,  0},
+	{ XK_KP_Divide,    ShiftMask,                      "\033[175;2u", 0,  0},
+	{ XK_KP_0,         XK_NO_MOD,                      "\033Op",     +2,  0},
+	{ XK_KP_0,         ControlMask,                    "\033[176;5u", 0,  0},
+	{ XK_KP_0,         ControlMask|ShiftMask,          "\033[176;6u", 0,  0},
+	{ XK_KP_0,         Mod1Mask,                       "\033[176;3u", 0,  0},
+	{ XK_KP_0,         Mod1Mask|ControlMask,           "\033[176;7u", 0,  0},
+	{ XK_KP_0,         Mod1Mask|ControlMask|ShiftMask, "\033[176;8u", 0,  0},
+	{ XK_KP_0,         Mod1Mask|ShiftMask,             "\033[176;4u", 0,  0},
+	{ XK_KP_0,         ShiftMask,                      "\033[176;2u", 0,  0},
+	{ XK_KP_1,         XK_NO_MOD,                      "\033Oq",     +2,  0},
+	{ XK_KP_0,         ControlMask,                    "\033[177;5u", 0,  0},
+	{ XK_KP_0,         ControlMask|ShiftMask,          "\033[177;6u", 0,  0},
+	{ XK_KP_0,         Mod1Mask,                       "\033[177;3u", 0,  0},
+	{ XK_KP_0,         Mod1Mask|ControlMask,           "\033[177;7u", 0,  0},
+	{ XK_KP_0,         Mod1Mask|ControlMask|ShiftMask, "\033[177;8u", 0,  0},
+	{ XK_KP_0,         Mod1Mask|ShiftMask,             "\033[177;4u", 0,  0},
+	{ XK_KP_0,         ShiftMask,                      "\033[177;2u", 0,  0},
+	{ XK_KP_2,         XK_NO_MOD,                      "\033Or",     +2,  0},
+	{ XK_KP_2,         ControlMask,                    "\033[178;5u", 0,  0},
+	{ XK_KP_2,         ControlMask|ShiftMask,          "\033[178;6u", 0,  0},
+	{ XK_KP_2,         Mod1Mask,                       "\033[178;3u", 0,  0},
+	{ XK_KP_2,         Mod1Mask|ControlMask,           "\033[178;7u", 0,  0},
+	{ XK_KP_2,         Mod1Mask|ControlMask|ShiftMask, "\033[178;8u", 0,  0},
+	{ XK_KP_2,         Mod1Mask|ShiftMask,             "\033[178;4u", 0,  0},
+	{ XK_KP_2,         ShiftMask,                      "\033[178;2u", 0,  0},
+	{ XK_KP_3,         XK_NO_MOD,                      "\033Os",     +2,  0},
+	{ XK_KP_3,         ControlMask,                    "\033[179;5u", 0,  0},
+	{ XK_KP_3,         ControlMask|ShiftMask,          "\033[179;6u", 0,  0},
+	{ XK_KP_3,         Mod1Mask,                       "\033[179;3u", 0,  0},
+	{ XK_KP_3,         Mod1Mask|ControlMask,           "\033[179;7u", 0,  0},
+	{ XK_KP_3,         Mod1Mask|ControlMask|ShiftMask, "\033[179;8u", 0,  0},
+	{ XK_KP_3,         Mod1Mask|ShiftMask,             "\033[179;4u", 0,  0},
+	{ XK_KP_3,         ShiftMask,                      "\033[179;2u", 0,  0},
+	{ XK_KP_4,         XK_NO_MOD,                      "\033Ot",     +2,  0},
+	{ XK_KP_4,         ControlMask,                    "\033[180;5u", 0,  0},
+	{ XK_KP_4,         ControlMask|ShiftMask,          "\033[180;6u", 0,  0},
+	{ XK_KP_4,         Mod1Mask,                       "\033[180;3u", 0,  0},
+	{ XK_KP_4,         Mod1Mask|ControlMask,           "\033[180;7u", 0,  0},
+	{ XK_KP_4,         Mod1Mask|ControlMask|ShiftMask, "\033[180;8u", 0,  0},
+	{ XK_KP_4,         Mod1Mask|ShiftMask,             "\033[180;4u", 0,  0},
+	{ XK_KP_4,         ShiftMask,                      "\033[180;2u", 0,  0},
+	{ XK_KP_5,         XK_NO_MOD,                      "\033Ou",     +2,  0},
+	{ XK_KP_5,         ControlMask,                    "\033[181;5u", 0,  0},
+	{ XK_KP_5,         ControlMask|ShiftMask,          "\033[181;6u", 0,  0},
+	{ XK_KP_5,         Mod1Mask,                       "\033[181;3u", 0,  0},
+	{ XK_KP_5,         Mod1Mask|ControlMask,           "\033[181;7u", 0,  0},
+	{ XK_KP_5,         Mod1Mask|ControlMask|ShiftMask, "\033[181;8u", 0,  0},
+	{ XK_KP_5,         Mod1Mask|ShiftMask,             "\033[181;4u", 0,  0},
+	{ XK_KP_5,         ShiftMask,                      "\033[181;2u", 0,  0},
+	{ XK_KP_6,         XK_NO_MOD,                      "\033Ov",     +2,  0},
+	{ XK_KP_6,         ControlMask,                    "\033[182;5u", 0,  0},
+	{ XK_KP_6,         ControlMask|ShiftMask,          "\033[182;6u", 0,  0},
+	{ XK_KP_6,         Mod1Mask,                       "\033[182;3u", 0,  0},
+	{ XK_KP_6,         Mod1Mask|ControlMask,           "\033[182;7u", 0,  0},
+	{ XK_KP_6,         Mod1Mask|ControlMask|ShiftMask, "\033[182;8u", 0,  0},
+	{ XK_KP_6,         Mod1Mask|ShiftMask,             "\033[182;4u", 0,  0},
+	{ XK_KP_6,         ShiftMask,                      "\033[182;2u", 0,  0},
+	{ XK_KP_7,         XK_NO_MOD,                      "\033Ow",     +2,  0},
+	{ XK_KP_7,         ControlMask,                    "\033[183;5u", 0,  0},
+	{ XK_KP_7,         ControlMask|ShiftMask,          "\033[183;6u", 0,  0},
+	{ XK_KP_7,         Mod1Mask,                       "\033[183;3u", 0,  0},
+	{ XK_KP_7,         Mod1Mask|ControlMask,           "\033[183;7u", 0,  0},
+	{ XK_KP_7,         Mod1Mask|ControlMask|ShiftMask, "\033[183;8u", 0,  0},
+	{ XK_KP_7,         Mod1Mask|ShiftMask,             "\033[183;4u", 0,  0},
+	{ XK_KP_7,         ShiftMask,                      "\033[183;2u", 0,  0},
+	{ XK_KP_8,         XK_NO_MOD,                      "\033Ox",     +2,  0},
+	{ XK_KP_8,         ControlMask,                    "\033[184;5u", 0,  0},
+	{ XK_KP_8,         ControlMask|ShiftMask,          "\033[184;6u", 0,  0},
+	{ XK_KP_8,         Mod1Mask,                       "\033[184;3u", 0,  0},
+	{ XK_KP_8,         Mod1Mask|ControlMask,           "\033[184;7u", 0,  0},
+	{ XK_KP_8,         Mod1Mask|ControlMask|ShiftMask, "\033[184;8u", 0,  0},
+	{ XK_KP_8,         Mod1Mask|ShiftMask,             "\033[184;4u", 0,  0},
+	{ XK_KP_8,         ShiftMask,                      "\033[184;2u", 0,  0},
+	{ XK_KP_9,         XK_NO_MOD,                      "\033Oy",     +2,  0},
+	{ XK_KP_9,         ControlMask,                    "\033[185;5u", 0,  0},
+	{ XK_KP_9,         ControlMask|ShiftMask,          "\033[185;6u", 0,  0},
+	{ XK_KP_9,         Mod1Mask,                       "\033[185;3u", 0,  0},
+	{ XK_KP_9,         Mod1Mask|ControlMask,           "\033[185;7u", 0,  0},
+	{ XK_KP_9,         Mod1Mask|ControlMask|ShiftMask, "\033[185;8u", 0,  0},
+	{ XK_KP_9,         Mod1Mask|ShiftMask,             "\033[185;4u", 0,  0},
+	{ XK_KP_9,         ShiftMask,                      "\033[185;2u", 0,  0},
+	{ XK_BackSpace,    ControlMask,                    "\033[127;5u", 0,  0},
+	{ XK_BackSpace,    ControlMask|ShiftMask,          "\033[127;6u", 0,  0},
+	{ XK_BackSpace,    Mod1Mask,                       "\033[127;3u", 0,  0},
+	{ XK_BackSpace,    Mod1Mask|ControlMask,           "\033[127;7u", 0,  0},
+	{ XK_BackSpace,    Mod1Mask|ControlMask|ShiftMask, "\033[127;8u", 0,  0},
+	{ XK_BackSpace,    Mod1Mask|ShiftMask,             "\033[127;4u", 0,  0},
+	{ XK_BackSpace,    ShiftMask,                      "\033[127;2u", 0,  0},
+	{ XK_Tab,          ControlMask,                    "\033[9;5u",   0,  0},
+	{ XK_Tab,          ControlMask|ShiftMask,          "\033[1;5Z",   0,  0},
+	{ XK_Tab,          Mod1Mask,                       "\033[1;3Z",   0,  0},
+	{ XK_Tab,          Mod1Mask|ControlMask,           "\033[1;7Z",   0,  0},
+	{ XK_Tab,          Mod1Mask|ControlMask|ShiftMask, "\033[1;8Z",   0,  0},
+	{ XK_Tab,          Mod1Mask|ShiftMask,             "\033[1;4Z",   0,  0},
+	{ XK_Return,       ControlMask,                    "\033[13;5u",  0,  0},
+	{ XK_Return,       ControlMask|ShiftMask,          "\033[13;6u",  0,  0},
+	{ XK_Return,       Mod1Mask,                       "\033[13;3u",  0,  0},
+	{ XK_Return,       Mod1Mask|ControlMask,           "\033[13;7u",  0,  0},
+	{ XK_Return,       Mod1Mask|ControlMask|ShiftMask, "\033[13;8u",  0,  0},
+	{ XK_Return,       Mod1Mask|ShiftMask,             "\033[13;4u",  0,  0},
+	{ XK_Return,       ShiftMask,                      "\033[13;2u",  0,  0},
+	{ XK_Pause,        ControlMask,                    "\033[18;5u",  0,  0},
+	{ XK_Pause,        ControlMask|ShiftMask,          "\033[18;6u",  0,  0},
+	{ XK_Pause,        Mod1Mask,                       "\033[18;3u",  0,  0},
+	{ XK_Pause,        Mod1Mask|ControlMask,           "\033[18;7u",  0,  0},
+	{ XK_Pause,        Mod1Mask|ControlMask|ShiftMask, "\033[18;8u",  0,  0},
+	{ XK_Pause,        Mod1Mask|ShiftMask,             "\033[18;4u",  0,  0},
+	{ XK_Pause,        ShiftMask,                      "\033[18;2u",  0,  0},
+	{ XK_Scroll_Lock,  ControlMask,                    "\033[20;5u",  0,  0},
+	{ XK_Scroll_Lock,  ControlMask|ShiftMask,          "\033[20;6u",  0,  0},
+	{ XK_Scroll_Lock,  Mod1Mask,                       "\033[20;3u",  0,  0},
+	{ XK_Scroll_Lock,  Mod1Mask|ControlMask,           "\033[20;7u",  0,  0},
+	{ XK_Scroll_Lock,  Mod1Mask|ControlMask|ShiftMask, "\033[20;8u",  0,  0},
+	{ XK_Scroll_Lock,  Mod1Mask|ShiftMask,             "\033[20;4u",  0,  0},
+	{ XK_Scroll_Lock,  ShiftMask,                      "\033[20;2u",  0,  0},
+	{ XK_Escape,       ControlMask,                    "\033[27;5u",  0,  0},
+	{ XK_Escape,       ControlMask|ShiftMask,          "\033[27;6u",  0,  0},
+	{ XK_Escape,       Mod1Mask,                       "\033[27;3u",  0,  0},
+	{ XK_Escape,       Mod1Mask|ControlMask,           "\033[27;7u",  0,  0},
+	{ XK_Escape,       Mod1Mask|ControlMask|ShiftMask, "\033[27;8u",  0,  0},
+	{ XK_Escape,       Mod1Mask|ShiftMask,             "\033[27;4u",  0,  0},
+	{ XK_Escape,       ShiftMask,                      "\033[27;2u",  0,  0},
+	{ XK_Home,         XK_NO_MOD,                      "\033[H",      0, -1},
+	{ XK_Home,         XK_NO_MOD,                      "\033[1~",     0, +1},
+	{ XK_Home,         ControlMask|ShiftMask,          "\033[80;6u",  0,  0},
+	{ XK_Home,         Mod1Mask,                       "\033[80;3u",  0,  0},
+	{ XK_Home,         Mod1Mask|ControlMask,           "\033[80;7u",  0,  0},
+	{ XK_Home,         Mod1Mask|ControlMask|ShiftMask, "\033[80;8u",  0,  0},
+	{ XK_Home,         Mod1Mask|ShiftMask,             "\033[80;4u",  0,  0},
+	{ XK_End,          XK_NO_MOD,                      "\033[4~",     0,  0},
+	{ XK_End,          ControlMask|ShiftMask,          "\033[87;6u",  0,  0},
+	{ XK_End,          Mod1Mask,                       "\033[87;3u",  0,  0},
+	{ XK_End,          Mod1Mask|ControlMask,           "\033[87;7u",  0,  0},
+	{ XK_End,          Mod1Mask|ControlMask|ShiftMask, "\033[87;8u",  0,  0},
+	{ XK_End,          Mod1Mask|ShiftMask,             "\033[87;4u",  0,  0},
+	{ XK_Prior,        XK_NO_MOD,                      "\033[5~",     0,  0},
+	{ XK_Prior,        ControlMask|ShiftMask,          "\033[85;6u",  0,  0},
+	{ XK_Prior,        Mod1Mask,                       "\033[85;3u",  0,  0},
+	{ XK_Prior,        Mod1Mask|ControlMask,           "\033[85;7u",  0,  0},
+	{ XK_Prior,        Mod1Mask|ControlMask|ShiftMask, "\033[85;8u",  0,  0},
+	{ XK_Prior,        Mod1Mask|ShiftMask,             "\033[85;4u",  0,  0},
+	{ XK_Next,         XK_NO_MOD,                      "\033[6~",     0,  0},
+	{ XK_Next,         ControlMask|ShiftMask,          "\033[86;6u",  0,  0},
+	{ XK_Next,         Mod1Mask,                       "\033[86;3u",  0,  0},
+	{ XK_Next,         Mod1Mask|ControlMask,           "\033[86;7u",  0,  0},
+	{ XK_Next,         Mod1Mask|ControlMask|ShiftMask, "\033[86;8u",  0,  0},
+	{ XK_Next,         Mod1Mask|ShiftMask,             "\033[86;4u",  0,  0},
+	{ XK_Print,        ControlMask,                    "\033[97;5u",  0,  0},
+	{ XK_Print,        ControlMask|ShiftMask,          "\033[97;6u",  0,  0},
+	{ XK_Print,        Mod1Mask,                       "\033[97;3u",  0,  0},
+	{ XK_Print,        Mod1Mask|ControlMask,           "\033[97;7u",  0,  0},
+	{ XK_Print,        Mod1Mask|ControlMask|ShiftMask, "\033[97;8u",  0,  0},
+	{ XK_Print,        Mod1Mask|ShiftMask,             "\033[97;4u",  0,  0},
+	{ XK_Print,        ShiftMask,                      "\033[97;2u",  0,  0},
+	{ XK_Insert,       XK_NO_MOD,                      "\033[4h",    -1,  0},
+	{ XK_Insert,       XK_NO_MOD,                      "\033[2~",    +1,  0},
+	{ XK_Insert,       ControlMask|ShiftMask,          "\033[99;6u",  0,  0},
+	{ XK_Insert,       Mod1Mask,                       "\033[99;3u",  0,  0},
+	{ XK_Insert,       Mod1Mask|ControlMask,           "\033[99;7u",  0,  0},
+	{ XK_Insert,       Mod1Mask|ControlMask|ShiftMask, "\033[99;8u",  0,  0},
+	{ XK_Insert,       Mod1Mask|ShiftMask,             "\033[99;4u",  0,  0},
+	{ XK_Menu,         ControlMask,                    "\033[103;5u", 0,  0},
+	{ XK_Menu,         ControlMask|ShiftMask,          "\033[103;6u", 0,  0},
+	{ XK_Menu,         Mod1Mask,                       "\033[103;3u", 0,  0},
+	{ XK_Menu,         Mod1Mask|ControlMask,           "\033[103;7u", 0,  0},
+	{ XK_Menu,         Mod1Mask|ControlMask|ShiftMask, "\033[103;8u", 0,  0},
+	{ XK_Menu,         Mod1Mask|ShiftMask,             "\033[103;4u", 0,  0},
+	{ XK_Menu,         ShiftMask,                      "\033[103;2u", 0,  0},
+	{ XK_Delete,       XK_NO_MOD,                      "\033[P",     -1,  0},
+	{ XK_Delete,       XK_NO_MOD,                      "\033[3~",    +1,  0},
+	{ XK_Delete,       ControlMask|ShiftMask,          "\033[255;6u", 0,  0},
+	{ XK_Delete,       Mod1Mask,                       "\033[255;3u", 0,  0},
+	{ XK_Delete,       Mod1Mask|ControlMask,           "\033[255;7u", 0,  0},
+	{ XK_Delete,       Mod1Mask|ControlMask|ShiftMask, "\033[255;8u", 0,  0},
+	{ XK_Delete,       Mod1Mask|ShiftMask,             "\033[255;4u", 0,  0},
+	{ XK_i,            ControlMask,                    "\033[105;5u", 0,  0},
+	{ XK_i,            Mod1Mask|ControlMask,           "\033[105;7u", 0,  0},
+	{ XK_m,            ControlMask,                    "\033[109;5u", 0,  0},
+	{ XK_m,            Mod1Mask|ControlMask,           "\033[109;7u", 0,  0},
+	{ XK_space,        ControlMask|ShiftMask,          "\033[32;6u",  0,  0},
+	{ XK_space,        Mod1Mask,                       "\033[32;3u",  0,  0},
+	{ XK_space,        Mod1Mask|ControlMask,           "\033[32;7u",  0,  0},
+	{ XK_space,        Mod1Mask|ControlMask|ShiftMask, "\033[32;8u",  0,  0},
+	{ XK_space,        Mod1Mask|ShiftMask,             "\033[32;4u",  0,  0},
+	{ XK_space,        ShiftMask,                      "\033[32;2u",  0,  0},
+	{ XK_0,            ControlMask,                    "\033[48;5u",  0,  0},
+	{ XK_A,            ControlMask|ShiftMask,          "\033[65;6u",  0,  0},
+	{ XK_B,            ControlMask|ShiftMask,          "\033[66;6u",  0,  0},
+	{ XK_C,            ControlMask|ShiftMask,          "\033[67;6u",  0,  0},
+	{ XK_D,            ControlMask|ShiftMask,          "\033[68;6u",  0,  0},
+	{ XK_E,            ControlMask|ShiftMask,          "\033[69;6u",  0,  0},
+	{ XK_F,            ControlMask|ShiftMask,          "\033[70;6u",  0,  0},
+	{ XK_G,            ControlMask|ShiftMask,          "\033[71;6u",  0,  0},
+	{ XK_H,            ControlMask|ShiftMask,          "\033[72;6u",  0,  0},
+	{ XK_I,            ControlMask|ShiftMask,          "\033[73;6u",  0,  0},
+	{ XK_I,            Mod1Mask|ControlMask|ShiftMask, "\033[73;8u",  0,  0},
+	{ XK_J,            ControlMask|ShiftMask,          "\033[75;6u",  0,  0},
+	{ XK_K,            ControlMask|ShiftMask,          "\033[74;6u",  0,  0},
+	{ XK_L,            ControlMask|ShiftMask,          "\033[76;6u",  0,  0},
+	{ XK_M,            ControlMask|ShiftMask,          "\033[77;6u",  0,  0},
+	{ XK_M,            Mod1Mask|ControlMask|ShiftMask, "\033[77;8u",  0,  0},
+	{ XK_N,            ControlMask|ShiftMask,          "\033[78;6u",  0,  0},
+	{ XK_O,            ControlMask|ShiftMask,          "\033[79;6u",  0,  0},
+	{ XK_P,            ControlMask|ShiftMask,          "\033[80;6u",  0,  0},
+	{ XK_Q,            ControlMask|ShiftMask,          "\033[81;6u",  0,  0},
+	{ XK_R,            ControlMask|ShiftMask,          "\033[82;6u",  0,  0},
+	{ XK_S,            ControlMask|ShiftMask,          "\033[83;6u",  0,  0},
+	{ XK_T,            ControlMask|ShiftMask,          "\033[84;6u",  0,  0},
+	{ XK_U,            ControlMask|ShiftMask,          "\033[85;6u",  0,  0},
+	{ XK_V,            ControlMask|ShiftMask,          "\033[86;6u",  0,  0},
+	{ XK_W,            ControlMask|ShiftMask,          "\033[87;6u",  0,  0},
+	{ XK_X,            ControlMask|ShiftMask,          "\033[88;6u",  0,  0},
+	{ XK_Y,            ControlMask|ShiftMask,          "\033[89;6u",  0,  0},
+	{ XK_Z,            ControlMask|ShiftMask,          "\033[90;6u",  0,  0},
+	{ XK_Z,            ControlMask|ShiftMask,          "\033[90;6u",  0,  0},
+	{ XK_0,            Mod1Mask|ControlMask,           "\033[48;7u",  0,  0},
+	{ XK_1,            ControlMask,                    "\033[49;5u",  0,  0},
+	{ XK_1,            Mod1Mask|ControlMask,           "\033[49;7u",  0,  0},
+	{ XK_2,            ControlMask,                    "\033[50;5u",  0,  0},
+	{ XK_2,            Mod1Mask|ControlMask,           "\033[50;7u",  0,  0},
+	{ XK_3,            ControlMask,                    "\033[51;5u",  0,  0},
+	{ XK_3,            Mod1Mask|ControlMask,           "\033[51;7u",  0,  0},
+	{ XK_4,            ControlMask,                    "\033[52;5u",  0,  0},
+	{ XK_4,            Mod1Mask|ControlMask,           "\033[52;7u",  0,  0},
+	{ XK_5,            ControlMask,                    "\033[53;5u",  0,  0},
+	{ XK_5,            Mod1Mask|ControlMask,           "\033[53;7u",  0,  0},
+	{ XK_6,            ControlMask,                    "\033[54;5u",  0,  0},
+	{ XK_6,            Mod1Mask|ControlMask,           "\033[54;7u",  0,  0},
+	{ XK_7,            ControlMask,                    "\033[55;5u",  0,  0},
+	{ XK_7,            Mod1Mask|ControlMask,           "\033[55;7u",  0,  0},
+	{ XK_8,            ControlMask,                    "\033[56;5u",  0,  0},
+	{ XK_8,            Mod1Mask|ControlMask,           "\033[56;7u",  0,  0},
+	{ XK_9,            ControlMask,                    "\033[57;5u",  0,  0},
+	{ XK_9,            Mod1Mask|ControlMask,           "\033[57;7u",  0,  0},
+	{ XK_ampersand,    ControlMask,                    "\033[38;5u",  0,  0},
+	{ XK_ampersand,    ControlMask|ShiftMask,          "\033[38;6u",  0,  0},
+	{ XK_ampersand,    Mod1Mask,                       "\033[38;3u",  0,  0},
+	{ XK_ampersand,    Mod1Mask|ControlMask,           "\033[38;7u",  0,  0},
+	{ XK_ampersand,    Mod1Mask|ControlMask|ShiftMask, "\033[38;8u",  0,  0},
+	{ XK_ampersand,    Mod1Mask|ShiftMask,             "\033[38;4u",  0,  0},
+	{ XK_apostrophe,   ControlMask,                    "\033[39;5u",  0,  0},
+	{ XK_apostrophe,   ControlMask|ShiftMask,          "\033[39;6u",  0,  0},
+	{ XK_apostrophe,   Mod1Mask,                       "\033[39;3u",  0,  0},
+	{ XK_apostrophe,   Mod1Mask|ControlMask,           "\033[39;7u",  0,  0},
+	{ XK_apostrophe,   Mod1Mask|ControlMask|ShiftMask, "\033[39;8u",  0,  0},
+	{ XK_apostrophe,   Mod1Mask|ShiftMask,             "\033[39;4u",  0,  0},
+	{ XK_asciicircum,  ControlMask,                    "\033[94;5u",  0,  0},
+	{ XK_asciicircum,  ControlMask|ShiftMask,          "\033[94;6u",  0,  0},
+	{ XK_asciicircum,  Mod1Mask,                       "\033[94;3u",  0,  0},
+	{ XK_asciicircum,  Mod1Mask|ControlMask,           "\033[94;7u",  0,  0},
+	{ XK_asciicircum,  Mod1Mask|ControlMask|ShiftMask, "\033[94;8u",  0,  0},
+	{ XK_asciicircum,  Mod1Mask|ShiftMask,             "\033[94;4u",  0,  0},
+	{ XK_asciitilde,   ControlMask,                    "\033[126;5u", 0,  0},
+	{ XK_asciitilde,   ControlMask|ShiftMask,          "\033[126;6u", 0,  0},
+	{ XK_asciitilde,   Mod1Mask,                       "\033[126;3u", 0,  0},
+	{ XK_asciitilde,   Mod1Mask|ControlMask,           "\033[126;7u", 0,  0},
+	{ XK_asciitilde,   Mod1Mask|ControlMask|ShiftMask, "\033[126;8u", 0,  0},
+	{ XK_asciitilde,   Mod1Mask|ShiftMask,             "\033[126;4u", 0,  0},
+	{ XK_asterisk,     ControlMask,                    "\033[42;5u",  0,  0},
+	{ XK_asterisk,     ControlMask|ShiftMask,          "\033[42;6u",  0,  0},
+	{ XK_asterisk,     Mod1Mask,                       "\033[42;3u",  0,  0},
+	{ XK_asterisk,     Mod1Mask|ControlMask,           "\033[42;7u",  0,  0},
+	{ XK_asterisk,     Mod1Mask|ControlMask|ShiftMask, "\033[42;8u",  0,  0},
+	{ XK_asterisk,     Mod1Mask|ShiftMask,             "\033[42;4u",  0,  0},
+	{ XK_at,           ControlMask,                    "\033[64;5u",  0,  0},
+	{ XK_at,           ControlMask|ShiftMask,          "\033[64;6u",  0,  0},
+	{ XK_at,           Mod1Mask,                       "\033[64;3u",  0,  0},
+	{ XK_at,           Mod1Mask|ControlMask,           "\033[64;7u",  0,  0},
+	{ XK_at,           Mod1Mask|ControlMask|ShiftMask, "\033[64;8u",  0,  0},
+	{ XK_at,           Mod1Mask|ShiftMask,             "\033[64;4u",  0,  0},
+	{ XK_backslash,    ControlMask,                    "\033[92;5u",  0,  0},
+	{ XK_backslash,    ControlMask|ShiftMask,          "\033[92;6u",  0,  0},
+	{ XK_backslash,    Mod1Mask,                       "\033[92;3u",  0,  0},
+	{ XK_backslash,    Mod1Mask|ControlMask,           "\033[92;7u",  0,  0},
+	{ XK_backslash,    Mod1Mask|ControlMask|ShiftMask, "\033[92;8u",  0,  0},
+	{ XK_backslash,    Mod1Mask|ShiftMask,             "\033[92;4u",  0,  0},
+	{ XK_bar,          ControlMask,                    "\033[124;5u", 0,  0},
+	{ XK_bar,          ControlMask|ShiftMask,          "\033[124;6u", 0,  0},
+	{ XK_bar,          Mod1Mask,                       "\033[124;3u", 0,  0},
+	{ XK_bar,          Mod1Mask|ControlMask,           "\033[124;7u", 0,  0},
+	{ XK_bar,          Mod1Mask|ControlMask|ShiftMask, "\033[124;8u", 0,  0},
+	{ XK_bar,          Mod1Mask|ShiftMask,             "\033[124;4u", 0,  0},
+	{ XK_braceleft,    ControlMask,                    "\033[123;5u", 0,  0},
+	{ XK_braceleft,    ControlMask|ShiftMask,          "\033[123;6u", 0,  0},
+	{ XK_braceleft,    Mod1Mask,                       "\033[123;3u", 0,  0},
+	{ XK_braceleft,    Mod1Mask|ControlMask,           "\033[123;7u", 0,  0},
+	{ XK_braceleft,    Mod1Mask|ControlMask|ShiftMask, "\033[123;8u", 0,  0},
+	{ XK_braceleft,    Mod1Mask|ShiftMask,             "\033[123;4u", 0,  0},
+	{ XK_braceright,   ControlMask,                    "\033[125;5u", 0,  0},
+	{ XK_braceright,   ControlMask|ShiftMask,          "\033[125;6u", 0,  0},
+	{ XK_braceright,   Mod1Mask,                       "\033[125;3u", 0,  0},
+	{ XK_braceright,   Mod1Mask|ControlMask,           "\033[125;7u", 0,  0},
+	{ XK_braceright,   Mod1Mask|ControlMask|ShiftMask, "\033[125;8u", 0,  0},
+	{ XK_braceright,   Mod1Mask|ShiftMask,             "\033[125;4u", 0,  0},
+	{ XK_bracketleft,  ControlMask,                    "\033[91;5u",  0,  0},
+	{ XK_bracketleft,  ControlMask|ShiftMask,          "\033[91;6u",  0,  0},
+	{ XK_bracketleft,  Mod1Mask,                       "\033[91;3u",  0,  0},
+	{ XK_bracketleft,  Mod1Mask|ControlMask,           "\033[91;7u",  0,  0},
+	{ XK_bracketleft,  Mod1Mask|ControlMask|ShiftMask, "\033[91;8u",  0,  0},
+	{ XK_bracketleft,  Mod1Mask|ShiftMask,             "\033[91;4u",  0,  0},
+	{ XK_bracketright, ControlMask,                    "\033[93;5u",  0,  0},
+	{ XK_bracketright, ControlMask|ShiftMask,          "\033[93;6u",  0,  0},
+	{ XK_bracketright, Mod1Mask,                       "\033[93;3u",  0,  0},
+	{ XK_bracketright, Mod1Mask|ControlMask,           "\033[93;7u",  0,  0},
+	{ XK_bracketright, Mod1Mask|ControlMask|ShiftMask, "\033[93;8u",  0,  0},
+	{ XK_bracketright, Mod1Mask|ShiftMask,             "\033[93;4u",  0,  0},
+	{ XK_colon,        ControlMask,                    "\033[58;5u",  0,  0},
+	{ XK_colon,        ControlMask|ShiftMask,          "\033[58;6u",  0,  0},
+	{ XK_colon,        Mod1Mask,                       "\033[58;3u",  0,  0},
+	{ XK_colon,        Mod1Mask|ControlMask,           "\033[58;7u",  0,  0},
+	{ XK_colon,        Mod1Mask|ControlMask|ShiftMask, "\033[58;8u",  0,  0},
+	{ XK_colon,        Mod1Mask|ShiftMask,             "\033[58;4u",  0,  0},
+	{ XK_comma,        ControlMask,                    "\033[44;5u",  0,  0},
+	{ XK_comma,        ControlMask|ShiftMask,          "\033[44;6u",  0,  0},
+	{ XK_comma,        Mod1Mask,                       "\033[44;3u",  0,  0},
+	{ XK_comma,        Mod1Mask|ControlMask,           "\033[44;7u",  0,  0},
+	{ XK_comma,        Mod1Mask|ControlMask|ShiftMask, "\033[44;8u",  0,  0},
+	{ XK_comma,        Mod1Mask|ShiftMask,             "\033[44;4u",  0,  0},
+	{ XK_dollar,       ControlMask,                    "\033[36;5u",  0,  0},
+	{ XK_dollar,       ControlMask|ShiftMask,          "\033[36;6u",  0,  0},
+	{ XK_dollar,       Mod1Mask,                       "\033[36;3u",  0,  0},
+	{ XK_dollar,       Mod1Mask|ControlMask,           "\033[36;7u",  0,  0},
+	{ XK_dollar,       Mod1Mask|ControlMask|ShiftMask, "\033[36;8u",  0,  0},
+	{ XK_dollar,       Mod1Mask|ShiftMask,             "\033[36;4u",  0,  0},
+	{ XK_equal,        ControlMask,                    "\033[61;5u",  0,  0},
+	{ XK_equal,        ControlMask|ShiftMask,          "\033[61;6u",  0,  0},
+	{ XK_equal,        Mod1Mask,                       "\033[61;3u",  0,  0},
+	{ XK_equal,        Mod1Mask|ControlMask,           "\033[61;7u",  0,  0},
+	{ XK_equal,        Mod1Mask|ControlMask|ShiftMask, "\033[61;8u",  0,  0},
+	{ XK_equal,        Mod1Mask|ShiftMask,             "\033[61;4u",  0,  0},
+	{ XK_exclam,       ControlMask,                    "\033[33;5u",  0,  0},
+	{ XK_exclam,       ControlMask|ShiftMask,          "\033[33;6u",  0,  0},
+	{ XK_exclam,       Mod1Mask,                       "\033[33;3u",  0,  0},
+	{ XK_exclam,       Mod1Mask|ControlMask,           "\033[33;7u",  0,  0},
+	{ XK_exclam,       Mod1Mask|ControlMask|ShiftMask, "\033[33;8u",  0,  0},
+	{ XK_exclam,       Mod1Mask|ShiftMask,             "\033[33;4u",  0,  0},
+	{ XK_grave,        ControlMask,                    "\033[96;5u",  0,  0},
+	{ XK_grave,        ControlMask|ShiftMask,          "\033[96;6u",  0,  0},
+	{ XK_grave,        Mod1Mask,                       "\033[96;3u",  0,  0},
+	{ XK_grave,        Mod1Mask|ControlMask,           "\033[96;7u",  0,  0},
+	{ XK_grave,        Mod1Mask|ControlMask|ShiftMask, "\033[96;8u",  0,  0},
+	{ XK_grave,        Mod1Mask|ShiftMask,             "\033[96;4u",  0,  0},
+	{ XK_greater,      ControlMask,                    "\033[62;5u",  0,  0},
+	{ XK_greater,      ControlMask|ShiftMask,          "\033[62;6u",  0,  0},
+	{ XK_greater,      Mod1Mask,                       "\033[62;3u",  0,  0},
+	{ XK_greater,      Mod1Mask|ControlMask,           "\033[62;7u",  0,  0},
+	{ XK_greater,      Mod1Mask|ControlMask|ShiftMask, "\033[62;8u",  0,  0},
+	{ XK_greater,      Mod1Mask|ShiftMask,             "\033[62;4u",  0,  0},
+	{ XK_less,         ControlMask,                    "\033[60;5u",  0,  0},
+	{ XK_less,         ControlMask|ShiftMask,          "\033[60;6u",  0,  0},
+	{ XK_less,         Mod1Mask,                       "\033[60;3u",  0,  0},
+	{ XK_less,         Mod1Mask|ControlMask,           "\033[60;7u",  0,  0},
+	{ XK_less,         Mod1Mask|ControlMask|ShiftMask, "\033[60;8u",  0,  0},
+	{ XK_less,         Mod1Mask|ShiftMask,             "\033[60;4u",  0,  0},
+	{ XK_minus,        ControlMask,                    "\033[45;5u",  0,  0},
+	{ XK_minus,        ControlMask|ShiftMask,          "\033[45;6u",  0,  0},
+	{ XK_minus,        Mod1Mask,                       "\033[45;3u",  0,  0},
+	{ XK_minus,        Mod1Mask|ControlMask,           "\033[45;7u",  0,  0},
+	{ XK_minus,        Mod1Mask|ControlMask|ShiftMask, "\033[45;8u",  0,  0},
+	{ XK_minus,        Mod1Mask|ShiftMask,             "\033[45;4u",  0,  0},
+	{ XK_numbersign,   ControlMask,                    "\033[35;5u",  0,  0},
+	{ XK_numbersign,   ControlMask|ShiftMask,          "\033[35;6u",  0,  0},
+	{ XK_numbersign,   Mod1Mask,                       "\033[35;3u",  0,  0},
+	{ XK_numbersign,   Mod1Mask|ControlMask,           "\033[35;7u",  0,  0},
+	{ XK_numbersign,   Mod1Mask|ControlMask|ShiftMask, "\033[35;8u",  0,  0},
+	{ XK_numbersign,   Mod1Mask|ShiftMask,             "\033[35;4u",  0,  0},
+	{ XK_parenleft,    ControlMask,                    "\033[40;5u",  0,  0},
+	{ XK_parenleft,    ControlMask|ShiftMask,          "\033[40;6u",  0,  0},
+	{ XK_parenleft,    Mod1Mask,                       "\033[40;3u",  0,  0},
+	{ XK_parenleft,    Mod1Mask|ControlMask,           "\033[40;7u",  0,  0},
+	{ XK_parenleft,    Mod1Mask|ControlMask|ShiftMask, "\033[40;8u",  0,  0},
+	{ XK_parenleft,    Mod1Mask|ShiftMask,             "\033[40;4u",  0,  0},
+	{ XK_parenright,   ControlMask,                    "\033[41;5u",  0,  0},
+	{ XK_parenright,   ControlMask|ShiftMask,          "\033[41;6u",  0,  0},
+	{ XK_parenright,   Mod1Mask,                       "\033[41;3u",  0,  0},
+	{ XK_parenright,   Mod1Mask|ControlMask,           "\033[41;7u",  0,  0},
+	{ XK_parenright,   Mod1Mask|ControlMask|ShiftMask, "\033[41;8u",  0,  0},
+	{ XK_parenright,   Mod1Mask|ShiftMask,             "\033[41;4u",  0,  0},
+	{ XK_percent,      ControlMask,                    "\033[37;5u",  0,  0},
+	{ XK_percent,      ControlMask|ShiftMask,          "\033[37;6u",  0,  0},
+	{ XK_percent,      Mod1Mask,                       "\033[37;3u",  0,  0},
+	{ XK_percent,      Mod1Mask|ControlMask,           "\033[37;7u",  0,  0},
+	{ XK_percent,      Mod1Mask|ControlMask|ShiftMask, "\033[37;8u",  0,  0},
+	{ XK_percent,      Mod1Mask|ShiftMask,             "\033[37;4u",  0,  0},
+	{ XK_period,       ControlMask,                    "\033[46;5u",  0,  0},
+	{ XK_period,       ControlMask|ShiftMask,          "\033[46;6u",  0,  0},
+	{ XK_period,       Mod1Mask|ControlMask,           "\033[46;7u",  0,  0},
+	{ XK_period,       Mod1Mask|ControlMask|ShiftMask, "\033[46;8u",  0,  0},
+	{ XK_period,       Mod1Mask|ShiftMask,             "\033[46;4u",  0,  0},
+	{ XK_plus,         ControlMask,                    "\033[43;5u",  0,  0},
+	{ XK_plus,         ControlMask|ShiftMask,          "\033[43;6u",  0,  0},
+	{ XK_plus,         Mod1Mask,                       "\033[43;3u",  0,  0},
+	{ XK_plus,         Mod1Mask|ControlMask,           "\033[43;7u",  0,  0},
+	{ XK_plus,         Mod1Mask|ControlMask|ShiftMask, "\033[43;8u",  0,  0},
+	{ XK_plus,         Mod1Mask|ShiftMask,             "\033[43;4u",  0,  0},
+	{ XK_question,     ControlMask,                    "\033[63;5u",  0,  0},
+	{ XK_question,     ControlMask|ShiftMask,          "\033[63;6u",  0,  0},
+	{ XK_question,     Mod1Mask,                       "\033[63;3u",  0,  0},
+	{ XK_question,     Mod1Mask|ControlMask,           "\033[63;7u",  0,  0},
+	{ XK_question,     Mod1Mask|ControlMask|ShiftMask, "\033[63;8u",  0,  0},
+	{ XK_question,     Mod1Mask|ShiftMask,             "\033[63;4u",  0,  0},
+	{ XK_quotedbl,     ControlMask,                    "\033[34;5u",  0,  0},
+	{ XK_quotedbl,     ControlMask|ShiftMask,          "\033[34;6u",  0,  0},
+	{ XK_quotedbl,     Mod1Mask,                       "\033[34;3u",  0,  0},
+	{ XK_quotedbl,     Mod1Mask|ControlMask,           "\033[34;7u",  0,  0},
+	{ XK_quotedbl,     Mod1Mask|ControlMask|ShiftMask, "\033[34;8u",  0,  0},
+	{ XK_quotedbl,     Mod1Mask|ShiftMask,             "\033[34;4u",  0,  0},
+	{ XK_semicolon,    ControlMask,                    "\033[59;5u",  0,  0},
+	{ XK_semicolon,    ControlMask|ShiftMask,          "\033[59;6u",  0,  0},
+	{ XK_semicolon,    Mod1Mask,                       "\033[59;3u",  0,  0},
+	{ XK_semicolon,    Mod1Mask|ControlMask,           "\033[59;7u",  0,  0},
+	{ XK_semicolon,    Mod1Mask|ControlMask|ShiftMask, "\033[59;8u",  0,  0},
+	{ XK_semicolon,    Mod1Mask|ShiftMask,             "\033[59;4u",  0,  0},
+	{ XK_slash,        ControlMask|ShiftMask,          "\033[47;6u",  0,  0},
+	{ XK_slash,        Mod1Mask,                       "\033[47;3u",  0,  0},
+	{ XK_slash,        Mod1Mask|ControlMask,           "\033[47;7u",  0,  0},
+	{ XK_slash,        Mod1Mask|ControlMask|ShiftMask, "\033[47;8u",  0,  0},
+	{ XK_slash,        Mod1Mask|ShiftMask,             "\033[47;4u",  0,  0},
+	{ XK_underscore,   ControlMask,                    "\033[95;5u",  0,  0},
+	{ XK_underscore,   ControlMask|ShiftMask,          "\033[95;6u",  0,  0},
+	{ XK_underscore,   Mod1Mask,                       "\033[95;3u",  0,  0},
+	{ XK_underscore,   Mod1Mask|ControlMask,           "\033[95;7u",  0,  0},
+	{ XK_underscore,   Mod1Mask|ControlMask|ShiftMask, "\033[95;8u",  0,  0},
+	{ XK_underscore,   Mod1Mask|ShiftMask,             "\033[95;4u",  0,  0},
 };
 
 /*