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