input_code.h
1 /*
2 ** ClanLib SDK
3 ** Copyright (c) 1997-2015 The ClanLib Team
4 **
5 ** This software is provided 'as-is', without any express or implied
6 ** warranty. In no event will the authors be held liable for any damages
7 ** arising from the use of this software.
8 **
9 ** Permission is granted to anyone to use this software for any purpose,
10 ** including commercial applications, and to alter it and redistribute it
11 ** freely, subject to the following restrictions:
12 **
13 ** 1. The origin of this software must not be misrepresented; you must not
14 ** claim that you wrote the original software. If you use this software
15 ** in a product, an acknowledgment in the product documentation would be
16 ** appreciated but is not required.
17 ** 2. Altered source versions must be plainly marked as such, and must not be
18 ** misrepresented as being the original software.
19 ** 3. This notice may not be removed or altered from any source distribution.
20 **
21 ** Note: Some of the libraries ClanLib may link to may have additional
22 ** requirements or restrictions.
23 **
24 ** File Author(s):
25 **
26 ** Magnus Norddahl
27 */
28 
29 #pragma once
30 
31 // Keyboard & mouse platform independence support.
32 
33 #if defined(WIN32)
34 #include <windows.h>
35 #elif defined(__APPLE__) || defined(__ANDROID__)
36 // No headers for Apple
37 #else
38 #include <X11/keysym.h>
39 #endif
40 
41 namespace clan
42 {
45 
47 {
56 
57  tablet_x_axis = 0x10000,
67  tablet_key, // "id_offset" set
68 
102 
103  joystick_button = 0, // "id_offset" set
104  joystick_hat = 0, // "id_offset" set
105 
106 #if defined(WIN32)
107 
108  keycode_backspace=VK_BACK,
109  keycode_tab=VK_TAB,
110  keycode_clear=VK_CLEAR,
111  keycode_return=VK_RETURN,
112  keycode_shift=VK_SHIFT,
113  keycode_control=VK_CONTROL,
114  keycode_menu=VK_MENU,
115  keycode_pause=VK_PAUSE,
116  keycode_escape=VK_ESCAPE,
117 
118 #if !defined(__CYGWIN__) && !defined(__MINGW32__)
119 
120  keycode_kanji=VK_KANJI,
121  keycode_convert=VK_CONVERT,
122  keycode_nonconvert=VK_NONCONVERT,
123 #endif
124 
125  keycode_space=VK_SPACE,
126  keycode_prior=VK_PRIOR,
127  keycode_next=VK_NEXT,
128  keycode_end=VK_END,
129  keycode_home=VK_HOME,
130  keycode_left=VK_LEFT,
131  keycode_up=VK_UP,
132  keycode_right=VK_RIGHT,
133  keycode_down=VK_DOWN,
134  keycode_select=VK_SELECT,
135  keycode_print=VK_PRINT,
136  keycode_execute=VK_EXECUTE,
137  keycode_insert=VK_INSERT,
138  keycode_delete=VK_DELETE,
139  keycode_help=VK_HELP,
140  keycode_0='0',
141  keycode_1='1',
142  keycode_2='2',
143  keycode_3='3',
144  keycode_4='4',
145  keycode_5='5',
146  keycode_6='6',
147  keycode_7='7',
148  keycode_8='8',
149  keycode_9='9',
150  keycode_a='A',
151  keycode_b='B',
152  keycode_c='C',
153  keycode_d='D',
154  keycode_e='E',
155  keycode_f='F',
156  keycode_g='G',
157  keycode_h='H',
158  keycode_i='I',
159  keycode_j='J',
160  keycode_k='K',
161  keycode_l='L',
162  keycode_m='M',
163  keycode_n='N',
164  keycode_o='O',
165  keycode_p='P',
166  keycode_q='Q',
167  keycode_r='R',
168  keycode_s='S',
169  keycode_t='T',
170  keycode_u='U',
171  keycode_v='V',
172  keycode_w='W',
173  keycode_x='X',
174  keycode_y='Y',
175  keycode_z='Z',
176  keycode_lwin=VK_LWIN,
177  keycode_rwin=VK_RWIN,
178  keycode_apps=VK_APPS,
179  keycode_numpad0=VK_NUMPAD0,
180  keycode_numpad1=VK_NUMPAD1,
181  keycode_numpad2=VK_NUMPAD2,
182  keycode_numpad3=VK_NUMPAD3,
183  keycode_numpad4=VK_NUMPAD4,
184  keycode_numpad5=VK_NUMPAD5,
185  keycode_numpad6=VK_NUMPAD6,
186  keycode_numpad7=VK_NUMPAD7,
187  keycode_numpad8=VK_NUMPAD8,
188  keycode_numpad9=VK_NUMPAD9,
190  keycode_multiply=VK_MULTIPLY,
191  keycode_add=VK_ADD,
192  keycode_separator=VK_SEPARATOR,
193  keycode_subtract=VK_SUBTRACT,
194  keycode_decimal=VK_DECIMAL,
195  keycode_divide=VK_DIVIDE,
196  keycode_f1=VK_F1,
197  keycode_f2=VK_F2,
198  keycode_f3=VK_F3,
199  keycode_f4=VK_F4,
200  keycode_f5=VK_F5,
201  keycode_f6=VK_F6,
202  keycode_f7=VK_F7,
203  keycode_f8=VK_F8,
204  keycode_f9=VK_F9,
205  keycode_f10=VK_F10,
206  keycode_f11=VK_F11,
207  keycode_f12=VK_F12,
208  keycode_f13=VK_F13,
209  keycode_f14=VK_F14,
210  keycode_f15=VK_F15,
211  keycode_f16=VK_F16,
212  keycode_f17=VK_F17,
213  keycode_f18=VK_F18,
214  keycode_f19=VK_F19,
215  keycode_f20=VK_F20,
216  keycode_f21=VK_F21,
217  keycode_f22=VK_F22,
218  keycode_f23=VK_F23,
219  keycode_f24=VK_F24,
220  keycode_numlock=VK_NUMLOCK,
221  keycode_scroll=VK_SCROLL,
222  keycode_lshift=VK_LSHIFT,
223  keycode_rshift=VK_RSHIFT,
224  keycode_lcontrol=VK_LCONTROL,
225  keycode_rcontrol=VK_RCONTROL,
226  keycode_lmenu=VK_LMENU,
227  keycode_rmenu=VK_RMENU,
228 
229 #elif defined(__APPLE__) || defined(__ANDROID__)
230 
231 // Seems like this platform dont have keysyms, or their docs suck so much I
232 // can't find it.
233 //
234 // To solve this matter I've made my own virtual key numbering. If a key
235 // pressed does not match any of these, then it will return the actual
236 // MacOSX keycode in the high order word (keycode + 0x10000000).
237 //
238 // Naturally this require that they dont use keycode values above 0xffff,
239 // but if they do complain to Apple for their crappy keyboard support.
240 // Already kinda annoyed that the keys for typing { and } are alt+shift+8 and
241 // alt+shift+9, plus that backslash is alt+shift+7. How hostile is that!?!?
242 // Oh well what can you expect from a company that write "Designed by Apple
243 // in California" with big letters when you open your box that the powerbook
244 // came in. Yes it shows thats its designed in California!!
245 //
246 // (No offence to California though. Been there once and loved the place.)
247 
249  keycode_tab=11,
250  keycode_clear=12,
251  keycode_return=13,
252  keycode_shift=14,
253  keycode_control=15,
254  keycode_menu=16,
255  keycode_pause=17,
256  keycode_kanji=18,
257  keycode_escape=19,
258  keycode_convert=20,
260  keycode_space=22,
261  keycode_prior=23,
262  keycode_next=24,
263  keycode_end=25,
264  keycode_home=26,
265  keycode_left=27,
266  keycode_up=28,
267  keycode_right=29,
268  keycode_down=30,
269  keycode_select=31,
270  keycode_print=32,
271  keycode_execute=33,
272  keycode_insert=34,
273  keycode_delete=35,
274  keycode_help=36,
275  keycode_0=37,
276  keycode_1=38,
277  keycode_2=39,
278  keycode_3=40,
279  keycode_4=41,
280  keycode_5=42,
281  keycode_6=43,
282  keycode_7=44,
283  keycode_8=45,
284  keycode_9=46,
285  keycode_a=47,
286  keycode_b=48,
287  keycode_c=49,
288  keycode_d=50,
289  keycode_e=51,
290  keycode_f=52,
291  keycode_g=53,
292  keycode_h=54,
293  keycode_i=55,
294  keycode_j=56,
295  keycode_k=57,
296  keycode_l=58,
297  keycode_m=59,
298  keycode_n=60,
299  keycode_o=61,
300  keycode_p=62,
301  keycode_q=63,
302  keycode_r=64,
303  keycode_s=65,
304  keycode_t=66,
305  keycode_u=67,
306  keycode_v=68,
307  keycode_w=69,
308  keycode_x=70,
309  keycode_y=71,
310  keycode_z=72,
311  keycode_lwin=73,
312  keycode_rwin=74,
313  keycode_apps=75,
314  keycode_numpad0=76,
315  keycode_numpad1=77,
316  keycode_numpad2=78,
317  keycode_numpad3=79,
318  keycode_numpad4=80,
319  keycode_numpad5=81,
320  keycode_numpad6=82,
321  keycode_numpad7=83,
322  keycode_numpad8=84,
323  keycode_numpad9=85,
325  keycode_multiply=86,
326  keycode_add=87,
328  keycode_subtract=89,
329  keycode_decimal=90,
330  keycode_divide=91,
331  keycode_f1=92,
332  keycode_f2=93,
333  keycode_f3=94,
334  keycode_f4=95,
335  keycode_f5=96,
336  keycode_f6=97,
337  keycode_f7=98,
338  keycode_f8=99,
339  keycode_f9=100,
340  keycode_f10=101,
341  keycode_f11=102,
342  keycode_f12=103,
343  keycode_f13=104,
344  keycode_f14=105,
345  keycode_f15=106,
346  keycode_f16=107,
347  keycode_f17=108,
348  keycode_f18=109,
349  keycode_f19=110,
350  keycode_f20=111,
351  keycode_f21=112,
352  keycode_f22=113,
353  keycode_f23=114,
354  keycode_f24=115,
355  keycode_numlock=116,
356  keycode_scroll=117,
357  keycode_lshift=118,
358  keycode_rshift=119,
359  keycode_lcontrol=120,
360  keycode_rcontrol=121,
361  keycode_lmenu=122,
362  keycode_rmenu=123,
363  keycode_count=124,
364 
365 #else
366 
367  keycode_backspace=XK_BackSpace,
368  keycode_tab=XK_Tab,
369  keycode_clear=XK_Clear,
370  keycode_return=XK_Return,
371  keycode_shift=XK_Shift_L,
372  keycode_control=XK_Control_L,
373  keycode_menu=XK_Menu, // there is no XK_Alt, only XK_Alt_L and XK_Alt_R. Maybe remove this key? -- mbn 30 sep 2003
374  keycode_pause=XK_Pause,
375  keycode_kanji=XK_Kanji,
376  keycode_escape=XK_Escape,
377  keycode_convert=XK_Henkan_Mode,
378  keycode_nonconvert=XK_Muhenkan,
379  keycode_space=XK_space,
380  keycode_prior=XK_Prior,
381  keycode_next=XK_Next,
382  keycode_end=XK_End,
383  keycode_home=XK_Home,
384  keycode_left=XK_Left,
385  keycode_up=XK_Up,
386  keycode_right=XK_Right,
387  keycode_down=XK_Down,
388  keycode_select=XK_Select,
389  keycode_print=XK_Print,
390  keycode_execute=XK_Execute,
391  keycode_insert=XK_Insert,
392  keycode_delete=XK_Delete,
393  keycode_help=XK_Help,
394  keycode_0=XK_0,
395  keycode_1=XK_1,
396  keycode_2=XK_2,
397  keycode_3=XK_3,
398  keycode_4=XK_4,
399  keycode_5=XK_5,
400  keycode_6=XK_6,
401  keycode_7=XK_7,
402  keycode_8=XK_8,
403  keycode_9=XK_9,
404  keycode_a=XK_a,
405  keycode_b=XK_b,
406  keycode_c=XK_c,
407  keycode_d=XK_d,
408  keycode_e=XK_e,
409  keycode_f=XK_f,
410  keycode_g=XK_g,
411  keycode_h=XK_h,
412  keycode_i=XK_i,
413  keycode_j=XK_j,
414  keycode_k=XK_k,
415  keycode_l=XK_l,
416  keycode_m=XK_m,
417  keycode_n=XK_n,
418  keycode_o=XK_o,
419  keycode_p=XK_p,
420  keycode_q=XK_q,
421  keycode_r=XK_r,
422  keycode_s=XK_s,
423  keycode_t=XK_t,
424  keycode_u=XK_u,
425  keycode_v=XK_v,
426  keycode_w=XK_w,
427  keycode_x=XK_x,
428  keycode_y=XK_y,
429  keycode_z=XK_z,
430  keycode_lwin=XK_Super_L,
431  keycode_rwin=XK_Multi_key,
432  keycode_apps=XK_Menu,
443  keycode_numpad_enter=XK_KP_Enter,
444  keycode_multiply=XK_KP_Multiply,
445  keycode_add=XK_KP_Add,
446  keycode_separator=XK_KP_Separator,
447  keycode_subtract=XK_KP_Subtract,
448  keycode_decimal=XK_KP_Decimal,
449  keycode_divide=XK_KP_Divide,
450  keycode_f1=XK_F1,
451  keycode_f2=XK_F2,
452  keycode_f3=XK_F3,
453  keycode_f4=XK_F4,
454  keycode_f5=XK_F5,
455  keycode_f6=XK_F6,
456  keycode_f7=XK_F7,
457  keycode_f8=XK_F8,
458  keycode_f9=XK_F9,
459  keycode_f10=XK_F10,
460  keycode_f11=XK_F11,
461  keycode_f12=XK_F12,
462  keycode_f13=XK_F13,
463  keycode_f14=XK_F14,
464  keycode_f15=XK_F15,
465  keycode_f16=XK_F16,
466  keycode_f17=XK_F17,
467  keycode_f18=XK_F18,
468  keycode_f19=XK_F19,
469  keycode_f20=XK_F20,
470  keycode_f21=XK_F21,
471  keycode_f22=XK_F22,
472  keycode_f23=XK_F23,
473  keycode_f24=XK_F24,
474  keycode_numlock=XK_Num_Lock,
475  keycode_scroll=XK_Scroll_Lock,
476  keycode_lshift=XK_Shift_L,
477  keycode_rshift=XK_Shift_R,
478  keycode_lcontrol=XK_Control_L,
479  keycode_rcontrol=XK_Control_R,
480  keycode_lmenu=XK_Meta_L,
481  keycode_rmenu=XK_Meta_R,
482 
483 #endif
484 
488 
490 };
491 
492 }
493 
Definition: input_code.h:391
Definition: input_code.h:74
Definition: input_code.h:384
Definition: clanapp.h:35
Definition: input_code.h:447
Definition: input_code.h:451
Definition: input_code.h:55
Definition: input_code.h:464
Definition: input_code.h:394
Definition: input_code.h:481
Definition: input_code.h:398
Definition: input_code.h:385
Definition: input_code.h:408
Definition: input_code.h:458
Definition: input_code.h:86
Definition: input_code.h:472
Definition: input_code.h:96
Definition: input_code.h:439
Definition: input_code.h:388
Definition: input_code.h:411
Definition: input_code.h:424
Definition: input_code.h:396
Definition: input_code.h:376
Definition: input_code.h:389
Definition: input_code.h:478
Definition: input_code.h:95
Definition: input_code.h:92
Definition: input_code.h:426
Definition: input_code.h:466
Definition: input_code.h:452
Definition: input_code.h:87
Definition: input_code.h:368
Definition: input_code.h:51
Definition: input_code.h:467
Definition: input_code.h:98
Definition: input_code.h:477
Definition: input_code.h:438
Definition: input_code.h:85
Definition: input_code.h:390
Definition: input_code.h:430
Definition: input_code.h:428
Definition: input_code.h:470
Definition: input_code.h:460
Definition: input_code.h:93
Definition: input_code.h:462
Definition: input_code.h:425
Definition: input_code.h:79
Definition: input_code.h:367
Definition: input_code.h:84
Definition: input_code.h:409
Definition: input_code.h:57
Definition: input_code.h:69
Definition: input_code.h:104
Definition: input_code.h:50
Definition: input_code.h:448
Definition: input_code.h:99
Definition: input_code.h:88
Definition: input_code.h:61
Definition: input_code.h:413
Definition: input_code.h:463
Definition: input_code.h:382
Definition: input_code.h:417
Definition: input_code.h:445
Definition: input_code.h:431
Definition: input_code.h:73
Definition: input_code.h:437
Definition: input_code.h:383
Definition: input_code.h:403
Definition: input_code.h:395
Definition: input_code.h:381
Definition: input_code.h:444
Definition: input_code.h:412
Definition: input_code.h:387
Definition: input_code.h:402
Definition: input_code.h:392
Definition: input_code.h:90
Definition: input_code.h:399
Definition: input_code.h:91
Definition: input_code.h:418
Definition: input_code.h:83
Definition: input_code.h:410
Definition: input_code.h:66
Definition: input_code.h:72
Definition: input_code.h:455
Definition: input_code.h:421
Definition: input_code.h:101
Definition: input_code.h:370
Definition: input_code.h:373
Definition: input_code.h:67
Definition: input_code.h:59
Definition: input_code.h:465
Definition: input_code.h:446
Definition: input_code.h:60
Definition: input_code.h:63
Definition: input_code.h:461
Definition: input_code.h:65
Definition: input_code.h:487
Definition: input_code.h:427
Definition: input_code.h:419
Definition: input_code.h:54
Definition: input_code.h:416
InputCode
Definition: input_code.h:46
Definition: input_code.h:48
Definition: input_code.h:100
Definition: input_code.h:473
Definition: input_code.h:97
Definition: input_code.h:53
Definition: input_code.h:380
Definition: input_code.h:443
Definition: input_code.h:474
Definition: input_code.h:485
Definition: input_code.h:62
Definition: input_code.h:52
Definition: input_code.h:80
Definition: input_code.h:415
Definition: input_code.h:375
Definition: input_code.h:433
Definition: input_code.h:94
Definition: input_code.h:432
Definition: input_code.h:374
Definition: input_code.h:420
Definition: input_code.h:435
Definition: input_code.h:457
Definition: input_code.h:441
Definition: input_code.h:76
Definition: input_code.h:407
Definition: input_code.h:434
Definition: input_code.h:77
Definition: input_code.h:404
Definition: input_code.h:58
Definition: input_code.h:401
Definition: input_code.h:377
Definition: input_code.h:400
Definition: input_code.h:378
Definition: input_code.h:456
Definition: input_code.h:371
Definition: input_code.h:405
Definition: input_code.h:422
Definition: input_code.h:393
Definition: input_code.h:81
Definition: input_code.h:476
Definition: input_code.h:397
Definition: input_code.h:386
Definition: input_code.h:89
Definition: input_code.h:469
Definition: input_code.h:479
Definition: input_code.h:471
Definition: input_code.h:372
Definition: input_code.h:103
Definition: input_code.h:70
Definition: input_code.h:489
Definition: input_code.h:414
Definition: input_code.h:440
Definition: input_code.h:475
Definition: input_code.h:436
Definition: input_code.h:82
Definition: input_code.h:75
Definition: input_code.h:379
Definition: input_code.h:71
Definition: input_code.h:486
Definition: input_code.h:480
Definition: input_code.h:369
Definition: input_code.h:78
Definition: input_code.h:423
Definition: input_code.h:468
Definition: input_code.h:449
Definition: input_code.h:450
Definition: input_code.h:442
Definition: input_code.h:429
Definition: input_code.h:406
Definition: input_code.h:459
Definition: input_code.h:49
Definition: input_code.h:454
Definition: input_code.h:64
Definition: input_code.h:453