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