aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/libLumina/NativeKeyToQt.cpp
blob: 06056be789efe67de7a0d8ad109e260fbe92dd02 (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

#include <NativeWindowSystem.h>

#include <QKeySequence>
#include <QX11Info>

// XCB/X11 Includes
#define XK_MISCELLANY
#define XK_XKB_KEYS
#define XK_LATIN1
#define XK_LATIN2
#define XK_LATIN3
#define XK_LATIN4
#define XK_LATIN8
#define XK_LATIN9
//NOTE: Look at the keysymdef.h file for additional define/characters which we may need later
#include <X11/keysymdef.h>
#include <xcb/xcb_keysyms.h>


//Small simplification functions
Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){
  static xcb_key_symbols_t *SYM = 0;
  if(SYM==0){ SYM = xcb_key_symbols_alloc(QX11Info::connection()); }
  xcb_keysym_t symbol = xcb_key_symbols_get_keysym(SYM, keycode,0);
  //not sure about the "column" input - we want raw keys though so ignore the "modified" key states (columns) for now
  //qDebug() << "Try to convert keycode to Qt::Key:" << keycode << symbol;
  //Now map this symbol to the appropriate Qt::Key enumeration
  switch(symbol){
	//FUNCTION KEYS
	case XK_F1: return Qt::Key_F1;
	case XK_F2: return Qt::Key_F2;
	case XK_F3: return Qt::Key_F3;
	case XK_F4: return Qt::Key_F4;
	case XK_F5: return Qt::Key_F5;
	case XK_F6: return Qt::Key_F6;
	case XK_F7: return Qt::Key_F7;
	case XK_F8: return Qt::Key_F8;
	case XK_F9: return Qt::Key_F9;
	case XK_F10: return Qt::Key_F10;
	case XK_F11: return Qt::Key_F11;
	case XK_F12: return Qt::Key_F12;
	case XK_F13: return Qt::Key_F13;
	case XK_F14: return Qt::Key_F14;
	case XK_F15: return Qt::Key_F15;
	case XK_F16: return Qt::Key_F16;
	case XK_F17: return Qt::Key_F17;
	case XK_F18: return Qt::Key_F18;
	case XK_F19: return Qt::Key_F19;
	case XK_F20: return Qt::Key_F20;
	case XK_F21: return Qt::Key_F21;
	case XK_F22: return Qt::Key_F22;
	case XK_F23: return Qt::Key_F23;
	case XK_F24: return Qt::Key_F24;
	case XK_F25: return Qt::Key_F25;
	case XK_F26: return Qt::Key_F26;
	case XK_F27: return Qt::Key_F27;
	case XK_F28: return Qt::Key_F28;
	case XK_F29: return Qt::Key_F29;
	case XK_F30: return Qt::Key_F30;
	case XK_F31: return Qt::Key_F31;
	case XK_F32: return Qt::Key_F32;
	case XK_F33: return Qt::Key_F33;
	case XK_F34: return Qt::Key_F34;
	case XK_F35: return Qt::Key_F35;
	//Miscellaneous Keys
	case XK_BackSpace: return Qt::Key_Backspace;
	case XK_Delete: return Qt::Key_Delete;
	//case XK_LineFeed: return Qt::Key_Backspace;
	case XK_Clear: return Qt::Key_Clear;
	case XK_Return: return Qt::Key_Return;
	case XK_Pause: return Qt::Key_Pause;
	case XK_Scroll_Lock: return Qt::Key_ScrollLock;
	case XK_Sys_Req: return Qt::Key_SysReq;
	case XK_Escape: return Qt::Key_Escape;
	case XK_Select: return Qt::Key_Select;
	case XK_Print: return Qt::Key_Print;
	//case XK_Execute: return Qt::Key_Execute;
	case XK_Insert: return Qt::Key_Insert;
	case XK_Undo: return Qt::Key_Undo;
	case XK_Redo: return Qt::Key_Redo;
	case XK_Menu: return Qt::Key_Menu;
	case XK_Find: return Qt::Key_Find;
	case XK_Cancel: return Qt::Key_Cancel;
	case XK_Help: return Qt::Key_Help;
	//case XK_Break: return Qt::Key_Break;
	//case XK_Mode_switch: return Qt::Key_Backspace;
	//case XK_script_switch: return Qt::Key_Backspace;
	case XK_Num_Lock: return Qt::Key_NumLock;
	//Cursor  Controls
	case XK_Home: return Qt::Key_Home;
	case XK_Left: return Qt::Key_Left;
	case XK_Up: return Qt::Key_Up;
	case XK_Right: return Qt::Key_Right;
	case XK_Down: return Qt::Key_Down;
	//case XK_Prior: return Qt::Key_Backspace;
	case XK_Page_Up: return Qt::Key_PageUp;
	case XK_Page_Down: return Qt::Key_PageDown;
	//case XK_Next: return Qt::Key_Backspace;
	case XK_End: return Qt::Key_End;
	//case XK_Begin: return Qt::Key_Backspace;
	// Keypad Functions and numbers
	case XK_KP_Space: return Qt::Key_Space;
	case XK_KP_Tab: return Qt::Key_Tab;
	case XK_KP_Enter: return Qt::Key_Enter;
	case XK_KP_F1: return Qt::Key_F1;
	case XK_KP_F2: return Qt::Key_F2;
	case XK_KP_F3: return Qt::Key_F3;
	case XK_KP_F4: return Qt::Key_F4;
	case XK_KP_Home: return Qt::Key_Home;
	case XK_KP_Left: return Qt::Key_Left;
	case XK_KP_Up: return Qt::Key_Up;
	case XK_KP_Right: return Qt::Key_Right;
	case XK_KP_Down: return Qt::Key_Down;
	//case XK_KP_Prior: return Qt::Key_
	case XK_KP_Page_Up: return Qt::Key_PageUp;
	//case XK_KP_Next: return Qt::Key_
	case XK_KP_Page_Down: return Qt::Key_PageDown;
	case XK_KP_End: return Qt::Key_End;
	//case XK_KP_Begin: return Qt::Key_
	case XK_KP_Insert: return Qt::Key_Insert;
	case XK_KP_Delete: return Qt::Key_Delete;
	case XK_KP_Equal: return Qt::Key_Equal;
	case XK_KP_Multiply: return Qt::Key_Asterisk;
	case XK_KP_Add: return Qt::Key_Plus;
	case XK_KP_Separator: return Qt::Key_Comma;  //X11 definitions say this is often comma
	case XK_KP_Subtract: return Qt::Key_Minus;
	case XK_KP_Decimal: return Qt::Key_Period;
	case XK_KP_Divide: return Qt::Key_Slash;
	case XK_KP_0: return Qt::Key_0;
	case XK_KP_1: return Qt::Key_1;
	case XK_KP_2: return Qt::Key_2;
	case XK_KP_3: return Qt::Key_3;
	case XK_KP_4: return Qt::Key_4;
	case XK_KP_5: return Qt::Key_5;
	case XK_KP_6: return Qt::Key_6;
	case XK_KP_7: return Qt::Key_7;
	case XK_KP_8: return Qt::Key_8;
	case XK_KP_9: return Qt::Key_9;
	// Modifier Keys
	case XK_Shift_L: return Qt::Key_Shift;
	case XK_Shift_R: return Qt::Key_Shift;
	case XK_Control_L: return Qt::Key_Control;
	case XK_Control_R: return Qt::Key_Control;
	case XK_Caps_Lock: return Qt::Key_CapsLock;
	//case XK_Shift_Lock: return Qt::Key_ShiftLock;
	case XK_Meta_L: return Qt::Key_Meta;
	case XK_Meta_R: return Qt::Key_Meta;
	case XK_Alt_L: return Qt::Key_Alt;
	case XK_Alt_R: return Qt::Key_Alt;
	case XK_Super_L: return Qt::Key_Super_L;
	case XK_Super_R: return Qt::Key_Super_R;
	case XK_Hyper_L: return Qt::Key_Hyper_L;
	case XK_Hyper_R: return Qt::Key_Hyper_R;
	case XK_space: return Qt::Key_Space;
	case XK_exclam: return Qt::Key_Exclam;
	case XK_quotedbl: return Qt::Key_QuoteDbl;
	case XK_numbersign: return Qt::Key_NumberSign;
	case XK_dollar: return Qt::Key_Dollar;
	case XK_percent: return Qt::Key_Percent;
	case XK_ampersand: return Qt::Key_Ampersand;
	case XK_apostrophe: return Qt::Key_Apostrophe;
	case XK_parenleft: return Qt::Key_ParenLeft;
	case XK_parenright: return Qt::Key_ParenRight;
	case XK_asterisk: return Qt::Key_Asterisk;
	case XK_plus: return Qt::Key_Plus;
	case XK_comma: return Qt::Key_Comma;
	case XK_minus: return Qt::Key_Minus;
	case XK_period: return Qt::Key_Period;
	case XK_slash: return Qt::Key_Slash;
	case XK_0: return Qt::Key_0;
	case XK_1: return Qt::Key_1;
	case XK_2: return Qt::Key_2;
	case XK_3: return Qt::Key_3;
	case XK_4: return Qt::Key_4;
	case XK_5: return Qt::Key_5;
	case XK_6: return Qt::Key_6;
	case XK_7: return Qt::Key_7;
	case XK_8: return Qt::Key_8;
	case XK_9: return Qt::Key_9;
	case XK_colon: return Qt::Key_Colon;
	case XK_semicolon: return Qt::Key_Semicolon;
	case XK_less: return Qt::Key_Less;
	case XK_equal: return Qt::Key_Equal;
	case XK_greater: return Qt::Key_Greater;
	case XK_question: return Qt::Key_Question;
	case XK_at: return Qt::Key_At;
	case XK_A: return Qt::Key_A;
	case XK_B: return Qt::Key_B;
	case XK_C: return Qt::Key_C;
	case XK_D: return Qt::Key_D;
	case XK_E: return Qt::Key_E;
	case XK_F: return Qt::Key_F;
	case XK_G: return Qt::Key_G;
	case XK_H: return Qt::Key_H;
	case XK_I: return Qt::Key_I;
	case XK_J: return Qt::Key_J;
	case XK_K: return Qt::Key_K;
	case XK_L: return Qt::Key_L;
	case XK_M: return Qt::Key_M;
	case XK_N: return Qt::Key_N;
	case XK_O: return Qt::Key_O;
	case XK_P: return Qt::Key_P;
	case XK_Q: return Qt::Key_Q;
	case XK_R: return Qt::Key_R;
	case XK_S: return Qt::Key_S;
	case XK_T: return Qt::Key_T;
	case XK_U: return Qt::Key_U;
	case XK_V: return Qt::Key_V;
	case XK_W: return Qt::Key_W;
	case XK_X: return Qt::Key_X;
	case XK_Y : return Qt::Key_Y;
	case XK_Z: return Qt::Key_Z;
	case XK_bracketleft: return Qt::Key_BracketLeft;
	case XK_backslash: return Qt::Key_Backslash;
	case XK_bracketright: return Qt::Key_BracketRight;
	case XK_asciicircum: return Qt::Key_AsciiCircum;
	case XK_underscore: return Qt::Key_Underscore;
	case XK_grave: return Qt::Key_Agrave;
	case XK_a: return Qt::Key_A;
	case XK_b: return Qt::Key_B;
	case XK_c: return Qt::Key_C;
	case XK_d: return Qt::Key_D;
	case XK_e: return Qt::Key_E;
	case XK_f : return Qt::Key_F;
	case XK_g: return Qt::Key_G;
	case XK_h: return Qt::Key_H;
	case XK_i: return Qt::Key_I;
	case XK_j: return Qt::Key_J;
	case XK_k: return Qt::Key_K;
	case XK_l: return Qt::Key_L;
	case XK_m: return Qt::Key_M;
	case XK_n: return Qt::Key_N;
	case XK_o: return Qt::Key_O;
	case XK_p: return Qt::Key_P;
	case XK_q: return Qt::Key_Q;
	case XK_r: return Qt::Key_R;
	case XK_s: return Qt::Key_S;
	case XK_t : return Qt::Key_T;
	case XK_u: return Qt::Key_U;
	case XK_v: return Qt::Key_V;
	case XK_w: return Qt::Key_W;
	case XK_x: return Qt::Key_X;
	case XK_y: return Qt::Key_Y;
	case XK_z: return Qt::Key_Z;
        case  XK_braceleft: return Qt::Key_BraceLeft;
        case  XK_bar: return Qt::Key_Bar;
        case  XK_braceright: return Qt::Key_BraceRight;
        case  XK_asciitilde: return Qt::Key_AsciiTilde;

        case XK_nobreakspace: return Qt::Key_nobreakspace;
        case XK_exclamdown: return Qt::Key_exclamdown;
        case XK_cent: return Qt::Key_cent;
        case XK_sterling: return Qt::Key_sterling;
        case XK_currency: return Qt::Key_currency;
        case XK_yen: return Qt::Key_yen;
        case XK_brokenbar: return Qt::Key_brokenbar;
        case XK_section: return Qt::Key_section;
        case XK_diaeresis: return Qt::Key_diaeresis;
        case XK_copyright: return Qt::Key_copyright;
        case XK_ordfeminine: return Qt::Key_ordfeminine;
        case XK_guillemotleft: return Qt::Key_guillemotleft;
        case XK_notsign: return Qt::Key_notsign;
        case XK_hyphen: return Qt::Key_hyphen;
        case XK_registered: return Qt::Key_registered;
        case XK_macron: return Qt::Key_macron;
        case XK_degree: return Qt::Key_degree;
        case XK_plusminus: return Qt::Key_plusminus;
        case XK_twosuperior: return Qt::Key_twosuperior;
        case XK_threesuperior: return Qt::Key_threesuperior;
        case XK_acute: return Qt::Key_acute;
        case XK_mu: return Qt::Key_mu;
        case XK_paragraph: return Qt::Key_paragraph;
        case XK_periodcentered: return Qt::Key_periodcentered;
        case XK_cedilla: return Qt::Key_cedilla;
        case XK_onesuperior: return Qt::Key_onesuperior;
        case XK_masculine: return Qt::Key_masculine;
        case XK_guillemotright: return Qt::Key_guillemotright;
        case XK_onequarter: return Qt::Key_onequarter;
        case XK_onehalf: return Qt::Key_onehalf;
        case XK_threequarters: return Qt::Key_threequarters;
        case XK_questiondown: return Qt::Key_questiondown;
        case XK_Agrave: return Qt::Key_Agrave;
        case XK_Aacute: return Qt::Key_Aacute;
        case XK_Acircumflex: return Qt::Key_Acircumflex;
        case XK_Atilde: return Qt::Key_Atilde;
        case XK_Adiaeresis: return Qt::Key_Adiaeresis;
        case XK_Aring: return Qt::Key_Aring;
        case XK_AE: return Qt::Key_AE;
        case XK_Ccedilla: return Qt::Key_Ccedilla;
        case XK_Egrave: return Qt::Key_Egrave;
        case XK_Eacute: return Qt::Key_Eacute;
        case XK_Ecircumflex: return Qt::Key_Ecircumflex;
        case XK_Ediaeresis: return Qt::Key_Ediaeresis;
        case XK_Igrave: return Qt::Key_Igrave;
        case XK_Iacute: return Qt::Key_Iacute;
        case XK_Icircumflex: return Qt::Key_Icircumflex;
        case XK_Idiaeresis: return Qt::Key_Idiaeresis;
        case XK_ETH: return Qt::Key_ETH;
        //case XK_Eth: return Qt::Key_Eth;
        case XK_Ntilde: return Qt::Key_Ntilde;
        case XK_Ograve: return Qt::Key_Ograve;
        case XK_Oacute: return Qt::Key_Oacute;
        case XK_Ocircumflex: return Qt::Key_Ocircumflex;
        case XK_Otilde: return Qt::Key_Otilde;
        case XK_Odiaeresis: return Qt::Key_Odiaeresis;
        case XK_multiply: return Qt::Key_multiply;
        //case XK_Oslash: return Qt::Key_AsciiTilde;
        case XK_Ooblique: return Qt::Key_Ooblique;
        case XK_Ugrave: return Qt::Key_Ugrave;
        case XK_Uacute: return Qt::Key_Uacute;
        case XK_Ucircumflex: return Qt::Key_Ucircumflex;
        case XK_Udiaeresis: return Qt::Key_Udiaeresis;
        case XK_Yacute: return Qt::Key_Yacute;
        case XK_THORN: return Qt::Key_THORN;
        //case XK_Thorn: return Qt::Key_AsciiTilde;
        case XK_ssharp: return Qt::Key_ssharp;
        /*case XK_agrave: return Qt::Key_AsciiTilde;
        case XK_aacute: return Qt::Key_AsciiTilde;
        case XK_acircumflex: return Qt::Key_AsciiTilde;
        case XK_atilde: return Qt::Key_AsciiTilde;
        case XK_adiaeresis: return Qt::Key_AsciiTilde;
        case XK_aring: return Qt::Key_AsciiTilde;
        case XK_ae: return Qt::Key_AsciiTilde;
        case XK_ccedilla: return Qt::Key_AsciiTilde;
        case XK_egrave: return Qt::Key_AsciiTilde;
        case XK_eacute: return Qt::Key_AsciiTilde;
        case XK_ecircumflex: return Qt::Key_AsciiTilde;
        case XK_ediaeresis: return Qt::Key_AsciiTilde;
        case XK_igrave: return Qt::Key_AsciiTilde;
        case XK_iacute: return Qt::Key_AsciiTilde;
        case XK_icircumflex: return Qt::Key_AsciiTilde;
        case XK_idiaeresis: return Qt::Key_AsciiTilde;
        case XK_eth: return Qt::Key_AsciiTilde;
        case XK_ntilde: return Qt::Key_AsciiTilde;
        case XK_ograve: return Qt::Key_AsciiTilde;
        case XK_oacute: return Qt::Key_AsciiTilde;
        case XK_ocircumflex: return Qt::Key_AsciiTilde;
        case XK_otilde: return Qt::Key_AsciiTilde;
        case XK_odiaeresis: return Qt::Key_AsciiTilde;
        case XK_division: return Qt::Key_AsciiTilde;
        case XK_oslash: return Qt::Key_AsciiTilde;
        case XK_ooblique: return Qt::Key_AsciiTilde;
        case XK_ugrave: return Qt::Key_AsciiTilde;
        case XK_uacute: return Qt::Key_AsciiTilde;
        case XK_ucircumflex: return Qt::Key_AsciiTilde;
        case XK_udiaeresis: return Qt::Key_AsciiTilde;
        case XK_yacute: return Qt::Key_AsciiTilde;
        case XK_thorn: return Qt::Key_AsciiTilde;
        case XK_ydiaeresis: return Qt::Key_AsciiTilde;

        case: XK_Agonek: return Qt::Key_AsciiTilde;
        case XK_breve: return Qt::Key_AsciiTilde;
        case XK_Lstroke: return Qt::Key_AsciiTilde;
        case XK_Lcaron: return Qt::Key_AsciiTilde;
        case XK_Sacute: return Qt::Key_AsciiTilde;
        case XK_Scaron: return Qt::Key_AsciiTilde;
        case XK_Scedilla: return Qt::Key_AsciiTilde;
        case XK_Tcaron: return Qt::Key_AsciiTilde;
        case XK_Zacute: return Qt::Key_AsciiTilde;
        case XK_Zcaron: return Qt::Key_AsciiTilde;
        case XK_Zabovedot: return Qt::Key_AsciiTilde;
        case XK_aogonek: return Qt::Key_AsciiTilde;
        case XK_ogonek: return Qt::Key_AsciiTilde;
        case XK_lstroke: return Qt::Key_AsciiTilde;
        case XK_lcaron: return Qt::Key_AsciiTilde;
        case XK_sacute: return Qt::Key_AsciiTilde;
        case XK_caron: return Qt::Key_AsciiTilde;
        case XK_scaron: return Qt::Key_AsciiTilde;
        case XK_scedilla: return Qt::Key_AsciiTilde;
        case XK_tcaron: return Qt::Key_AsciiTilde;
        case XK_zacute: return Qt::Key_AsciiTilde;
        case XK_doubleacute: return Qt::Key_AsciiTilde;
        case XK_zcaron: return Qt::Key_AsciiTilde;
        case XK_zabovedot: return Qt::Key_AsciiTilde;
        case XK_Racute: return Qt::Key_AsciiTilde;
        case XK_Abreve: return Qt::Key_AsciiTilde;
        case XK_Lacute: return Qt::Key_AsciiTilde;
        case XK_Cacute: return Qt::Key_AsciiTilde;
        case XK_Ccaron: return Qt::Key_AsciiTilde;
        case XK_Eogonek: return Qt::Key_AsciiTilde;
        case XK_Ecaron: return Qt::Key_AsciiTilde;
        case XK_Dcaron: return Qt::Key_AsciiTilde;
        case XK_Dstroke: return Qt::Key_AsciiTilde;
        case XK_Nacute: return Qt::Key_AsciiTilde;
        case XK_Ncaron: return Qt::Key_AsciiTilde;
        case XK_Odoubleacute: return Qt::Key_AsciiTilde;
        case XK_Rcaron: return Qt::Key_AsciiTilde;
        case XK_Uring: return Qt::Key_AsciiTilde;
        case XK_Udoubleacute: return Qt::Key_AsciiTilde;
        case XK_Tcedilla: return Qt::Key_AsciiTilde;
        case XK_racute: return Qt::Key_AsciiTilde;
        case XK_abreve: return Qt::Key_AsciiTilde;
        case XK_lacute: return Qt::Key_AsciiTilde;
        case XK_cacute: return Qt::Key_AsciiTilde;
        case XK_ccaron: return Qt::Key_AsciiTilde;
        case XK_eogonek: return Qt::Key_AsciiTilde;
        case XK_ecaron: return Qt::Key_AsciiTilde;
        case XK_dcaron: return Qt::Key_AsciiTilde;
        case XK_dstroke: return Qt::Key_AsciiTilde;
        case XK_nacute: return Qt::Key_AsciiTilde;
        case XK_ncaron: return Qt::Key_AsciiTilde;
        case XK_odoubleacute: return Qt::Key_AsciiTilde;
        case XK_rcaron: return Qt::Key_AsciiTilde;
        case XK_uring: return Qt::Key_AsciiTilde;
        case XK_udoubleacute: return Qt::Key_AsciiTilde;
        case XK_tcedilla: return Qt::Key_AsciiTilde;
        case XK_abovedot: return Qt::Key_AsciiTilde;
        case XK_Hstroke: return Qt::Key_AsciiTilde;
        case XK_Hcircumflex: return Qt::Key_AsciiTilde;
        case XK_Iabovedot: return Qt::Key_AsciiTilde;
        case XK_Gbreve: return Qt::Key_AsciiTilde;
        case XK_Jcircumflex: return Qt::Key_AsciiTilde;
        case XK_hstroke: return Qt::Key_AsciiTilde;
        case XK_hcircumflex: return Qt::Key_AsciiTilde;
        case XK_idotless: return Qt::Key_AsciiTilde;
        case XK_gbreve: return Qt::Key_AsciiTilde;
        case XK_jcircumflex: return Qt::Key_AsciiTilde;
        case XK_Cabovedot: return Qt::Key_AsciiTilde;
        case XK_Ccircumflex: return Qt::Key_AsciiTilde;
        case XK_Gabovedot: return Qt::Key_AsciiTilde;
        case XK_Gcircumflex: return Qt::Key_AsciiTilde;
        case XK_Ubreve: return Qt::Key_AsciiTilde;
        case XK_Scircumflex: return Qt::Key_AsciiTilde;
        case XK_cabovedot: return Qt::Key_AsciiTilde;
        case XK_ccircumflex: return Qt::Key_AsciiTilde;
        case XK_gabovedot: return Qt::Key_AsciiTilde;
        case XK_gcircumflex: return Qt::Key_AsciiTilde;
        case XK_ubreve: return Qt::Key_AsciiTilde;
        case XK_scircumflex: return Qt::Key_AsciiTilde;
        case XK_kra: return Qt::Key_AsciiTilde;
        case XK_kappa: return Qt::Key_AsciiTilde;
        case XK_Rcedilla: return Qt::Key_AsciiTilde;
        case XK_Itilde: return Qt::Key_AsciiTilde;
        case XK_Lcedilla: return Qt::Key_AsciiTilde;
        case XK_Emacron: return Qt::Key_AsciiTilde;
        case XK_Gcedilla: return Qt::Key_AsciiTilde;
        case XK_Tslash: return Qt::Key_AsciiTilde;
        case XK_rcedilla: return Qt::Key_AsciiTilde;
        case XK_itilde: return Qt::Key_AsciiTilde;
        case XK_lcedilla: return Qt::Key_AsciiTilde;
        case XK_emacron: return Qt::Key_AsciiTilde;
        case XK_gcedilla: return Qt::Key_AsciiTilde;
        case XK_tslash: return Qt::Key_AsciiTilde;
        case XK_ENG: return Qt::Key_AsciiTilde;
        case XK_eng: return Qt::Key_AsciiTilde;
        case XK_Amacron: return Qt::Key_AsciiTilde;
        case XK_Iogonek: return Qt::Key_AsciiTilde;
        case XK_Eabovedot: return Qt::Key_AsciiTilde;
        case XK_Imacron: return Qt::Key_AsciiTilde;
        case XK_Ncedilla: return Qt::Key_AsciiTilde;
        case XK_Omacron: return Qt::Key_AsciiTilde;
        case XK_Kcedilla: return Qt::Key_AsciiTilde;
        case XK_Uogonek: return Qt::Key_AsciiTilde;
        case XK_Utilde: return Qt::Key_AsciiTilde;
        case XK_Umacron: return Qt::Key_AsciiTilde;
        case XK_amacron: return Qt::Key_AsciiTilde;
        case XK_iogonek: return Qt::Key_AsciiTilde;
        case XK_eabovedot: return Qt::Key_AsciiTilde;
        case XK_imacron: return Qt::Key_AsciiTilde;
        case XK_ncedilla: return Qt::Key_AsciiTilde;
        case XK_omacron: return Qt::Key_AsciiTilde;
        case XK_kcedilla: return Qt::Key_AsciiTilde;
        case XK_uogonek: return Qt::Key_AsciiTilde;
        case XK_utilde: return Qt::Key_AsciiTilde;
        case XK_umacron: return Qt::Key_AsciiTilde;
        case XK_Wcircumflex: return Qt::Key_AsciiTilde;
        case XK_wcircumflex: return Qt::Key_AsciiTilde;
        case XK_Ycircumflex: return Qt::Key_AsciiTilde;
        case XK_ycircumflex: return Qt::Key_AsciiTilde;
        case XK_Babovedot: return Qt::Key_AsciiTilde;
        case XK_babovedot: return Qt::Key_AsciiTilde;
        case XK_Dabovedot: return Qt::Key_AsciiTilde;
        case XK_dabovedot: return Qt::Key_AsciiTilde;
        case XK_Fabovedot: return Qt::Key_AsciiTilde;
        case XK_fabovedot: return Qt::Key_AsciiTilde;
        case XK_Mabovedot: return Qt::Key_AsciiTilde;
        case XK_mabovedot: return Qt::Key_AsciiTilde;
        case XK_Pabovedot: return Qt::Key_AsciiTilde;
        case XK_pabovedot: return Qt::Key_AsciiTilde;
        case XK_Sabovedot: return Qt::Key_AsciiTilde;
        case XK_sabovedot: return Qt::Key_AsciiTilde;
        case XK_Tabovedot: return Qt::Key_AsciiTilde;
        case XK_tabovedot: return Qt::Key_AsciiTilde;
        case XK_Wgrave: return Qt::Key_AsciiTilde;
        case XK_wgrave: return Qt::Key_AsciiTilde;
        case XK_Wacute: return Qt::Key_AsciiTilde;
        case XK_wacute: return Qt::Key_AsciiTilde;
        case XK_Wdiaeresis: return Qt::Key_AsciiTilde;
        case XK_wdiaeresis: return Qt::Key_AsciiTilde;
        case XK_Ygrave: return Qt::Key_AsciiTilde;
        case XK_ygrave: return Qt::Key_AsciiTilde;
        case XK_OE: return Qt::Key_AsciiTilde;
        case XK_oe: return Qt::Key_AsciiTilde;
        case XK_Ydiaeresis: return Qt::Key_AsciiTilde;*/
	default:
	  qDebug() << "Unknown Key";
  }
  qDebug() << " -- Simple Qt Map:" << (Qt::Key)(symbol);
  qDebug() << " -- Key Sequence Map:" << QKeySequence(symbol);
  qDebug() << " - Not implemented yet";
  return Qt::Key_unknown;
}

NativeWindowSystem::MouseButton NativeWindowSystem::MouseToQt(int keycode){
  switch(keycode){
     case  1:
      return NativeWindowSystem::LeftButton;
    case  3:
      return NativeWindowSystem::RightButton;
    case  2:
      return NativeWindowSystem::MidButton;
    case  4:
      return NativeWindowSystem::WheelUp;
    case  5:
      return NativeWindowSystem::WheelDown;
    case  6:
      return NativeWindowSystem::WheelLeft;
    case  7:
      return NativeWindowSystem::WheelRight;
    case  8:
      return NativeWindowSystem::BackButton; //Not sure if this is correct yet (1/27/17)
    case  9:
      return NativeWindowSystem::ForwardButton; //Not sure if this is correct yet (1/27/17)
    default:
      return NativeWindowSystem::NoButton;
  }
}
bgstack15