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
|
/*************************************************************************/
/* nacl_keycodes.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
/* http://www.godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur. */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the */
/* "Software"), to deal in the Software without restriction, including */
/* without limitation the rights to use, copy, modify, merge, publish, */
/* distribute, sublicense, and/or sell copies of the Software, and to */
/* permit persons to whom the Software is furnished to do so, subject to */
/* the following conditions: */
/* */
/* The above copyright notice and this permission notice shall be */
/* included in all copies or substantial portions of the Software. */
/* */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
* Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com. All rights reserved.
* Copyright (C) 2008, 2009 Google Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR
* PROFITS, OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef BASE_KEYBOARD_CODES_POSIX_H_
#define BASE_KEYBOARD_CODES_POSIX_H_
#pragma once
#include "core/os/keyboard.h"
enum {
VKEY_BACK = 0x08,
VKEY_TAB = 0x09,
VKEY_CLEAR = 0x0C,
VKEY_RETURN = 0x0D,
VKEY_SHIFT = 0x10,
VKEY_CONTROL = 0x11,
VKEY_MENU = 0x12,
VKEY_PAUSE = 0x13,
VKEY_CAPITAL = 0x14,
VKEY_KANA = 0x15,
VKEY_HANGUL = 0x15,
VKEY_JUNJA = 0x17,
VKEY_FINAL = 0x18,
VKEY_HANJA = 0x19,
VKEY_KANJI = 0x19,
VKEY_ESCAPE = 0x1B,
VKEY_CONVERT = 0x1C,
VKEY_NONCONVERT = 0x1D,
VKEY_ACCEPT = 0x1E,
VKEY_MODECHANGE = 0x1F,
VKEY_SPACE = 0x20,
VKEY_PRIOR = 0x21,
VKEY_NEXT = 0x22,
VKEY_END = 0x23,
VKEY_HOME = 0x24,
VKEY_LEFT = 0x25,
VKEY_UP = 0x26,
VKEY_RIGHT = 0x27,
VKEY_DOWN = 0x28,
VKEY_SELECT = 0x29,
VKEY_PRINT = 0x2A,
VKEY_EXECUTE = 0x2B,
VKEY_SNAPSHOT = 0x2C,
VKEY_INSERT = 0x2D,
VKEY_DELETE = 0x2E,
VKEY_HELP = 0x2F,
VKEY_0 = 0x30,
VKEY_1 = 0x31,
VKEY_2 = 0x32,
VKEY_3 = 0x33,
VKEY_4 = 0x34,
VKEY_5 = 0x35,
VKEY_6 = 0x36,
VKEY_7 = 0x37,
VKEY_8 = 0x38,
VKEY_9 = 0x39,
VKEY_A = 0x41,
VKEY_B = 0x42,
VKEY_C = 0x43,
VKEY_D = 0x44,
VKEY_E = 0x45,
VKEY_F = 0x46,
VKEY_G = 0x47,
VKEY_H = 0x48,
VKEY_I = 0x49,
VKEY_J = 0x4A,
VKEY_K = 0x4B,
VKEY_L = 0x4C,
VKEY_M = 0x4D,
VKEY_N = 0x4E,
VKEY_O = 0x4F,
VKEY_P = 0x50,
VKEY_Q = 0x51,
VKEY_R = 0x52,
VKEY_S = 0x53,
VKEY_T = 0x54,
VKEY_U = 0x55,
VKEY_V = 0x56,
VKEY_W = 0x57,
VKEY_X = 0x58,
VKEY_Y = 0x59,
VKEY_Z = 0x5A,
VKEY_LWIN = 0x5B,
VKEY_COMMAND = VKEY_LWIN, // Provide the Mac name for convenience.
VKEY_RWIN = 0x5C,
VKEY_APPS = 0x5D,
VKEY_SLEEP = 0x5F,
VKEY_NUMPAD0 = 0x60,
VKEY_NUMPAD1 = 0x61,
VKEY_NUMPAD2 = 0x62,
VKEY_NUMPAD3 = 0x63,
VKEY_NUMPAD4 = 0x64,
VKEY_NUMPAD5 = 0x65,
VKEY_NUMPAD6 = 0x66,
VKEY_NUMPAD7 = 0x67,
VKEY_NUMPAD8 = 0x68,
VKEY_NUMPAD9 = 0x69,
VKEY_MULTIPLY = 0x6A,
VKEY_ADD = 0x6B,
VKEY_SEPARATOR = 0x6C,
VKEY_SUBTRACT = 0x6D,
VKEY_DECIMAL = 0x6E,
VKEY_DIVIDE = 0x6F,
VKEY_F1 = 0x70,
VKEY_F2 = 0x71,
VKEY_F3 = 0x72,
VKEY_F4 = 0x73,
VKEY_F5 = 0x74,
VKEY_F6 = 0x75,
VKEY_F7 = 0x76,
VKEY_F8 = 0x77,
VKEY_F9 = 0x78,
VKEY_F10 = 0x79,
VKEY_F11 = 0x7A,
VKEY_F12 = 0x7B,
VKEY_F13 = 0x7C,
VKEY_F14 = 0x7D,
VKEY_F15 = 0x7E,
VKEY_F16 = 0x7F,
VKEY_F17 = 0x80,
VKEY_F18 = 0x81,
VKEY_F19 = 0x82,
VKEY_F20 = 0x83,
VKEY_F21 = 0x84,
VKEY_F22 = 0x85,
VKEY_F23 = 0x86,
VKEY_F24 = 0x87,
VKEY_NUMLOCK = 0x90,
VKEY_SCROLL = 0x91,
VKEY_LSHIFT = 0xA0,
VKEY_RSHIFT = 0xA1,
VKEY_LCONTROL = 0xA2,
VKEY_RCONTROL = 0xA3,
VKEY_LMENU = 0xA4,
VKEY_RMENU = 0xA5,
VKEY_BROWSER_BACK = 0xA6,
VKEY_BROWSER_FORWARD = 0xA7,
VKEY_BROWSER_REFRESH = 0xA8,
VKEY_BROWSER_STOP = 0xA9,
VKEY_BROWSER_SEARCH = 0xAA,
VKEY_BROWSER_FAVORITES = 0xAB,
VKEY_BROWSER_HOME = 0xAC,
VKEY_VOLUME_MUTE = 0xAD,
VKEY_VOLUME_DOWN = 0xAE,
VKEY_VOLUME_UP = 0xAF,
VKEY_MEDIA_NEXT_TRACK = 0xB0,
VKEY_MEDIA_PREV_TRACK = 0xB1,
VKEY_MEDIA_STOP = 0xB2,
VKEY_MEDIA_PLAY_PAUSE = 0xB3,
VKEY_MEDIA_LAUNCH_MAIL = 0xB4,
VKEY_MEDIA_LAUNCH_MEDIA_SELECT = 0xB5,
VKEY_MEDIA_LAUNCH_APP1 = 0xB6,
VKEY_MEDIA_LAUNCH_APP2 = 0xB7,
VKEY_OEM_1 = 0xBA,
VKEY_OEM_PLUS = 0xBB,
VKEY_OEM_COMMA = 0xBC,
VKEY_OEM_MINUS = 0xBD,
VKEY_OEM_PERIOD = 0xBE,
VKEY_OEM_2 = 0xBF,
VKEY_OEM_3 = 0xC0,
VKEY_OEM_4 = 0xDB,
VKEY_OEM_5 = 0xDC,
VKEY_OEM_6 = 0xDD,
VKEY_OEM_7 = 0xDE,
VKEY_OEM_8 = 0xDF,
VKEY_OEM_102 = 0xE2,
VKEY_PROCESSKEY = 0xE5,
VKEY_PACKET = 0xE7,
VKEY_ATTN = 0xF6,
VKEY_CRSEL = 0xF7,
VKEY_EXSEL = 0xF8,
VKEY_EREOF = 0xF9,
VKEY_PLAY = 0xFA,
VKEY_ZOOM = 0xFB,
VKEY_NONAME = 0xFC,
VKEY_PA1 = 0xFD,
VKEY_OEM_CLEAR = 0xFE,
VKEY_UNKNOWN = 0
};
static uint32_t godot_key(uint32_t p_key, bool& is_char) {
is_char = false;
switch (p_key) {
case VKEY_BACK: return KEY_BACKSPACE;
case VKEY_TAB: return KEY_TAB;
case VKEY_CLEAR: return KEY_CLEAR;
case VKEY_RETURN: return KEY_RETURN;
case VKEY_SHIFT: return KEY_SHIFT;
case VKEY_CONTROL: return KEY_CONTROL;
case VKEY_MENU: return KEY_MENU;
case VKEY_PAUSE: return KEY_PAUSE;
// case VKEY_CAPITAL: return KEY_CAPITAL;
// case VKEY_KANA: return KEY_KANA;
// case VKEY_HANGUL: return KEY_HANGUL;
// case VKEY_JUNJA: return KEY_JUNJA;
// case VKEY_FINAL: return KEY_FINAL;
// case VKEY_HANJA: return KEY_HANJA;
// case VKEY_KANJI: return KEY_KANJI;
case VKEY_ESCAPE: return KEY_ESCAPE;
// case VKEY_CONVERT: return KEY_CONVERT;
// case VKEY_NONCONVERT: return KEY_NONCONVERT;
// case VKEY_ACCEPT: return KEY_ACCEPT;
// case VKEY_MODECHANGE: return KEY_MODECHANGE;
// case VKEY_PRIOR: return KEY_PRIOR;
// case VKEY_NEXT: return KEY_NEXT;
case VKEY_END: return KEY_END;
case VKEY_HOME: return KEY_HOME;
case VKEY_LEFT: return KEY_LEFT;
case VKEY_UP: return KEY_UP;
case VKEY_RIGHT: return KEY_RIGHT;
case VKEY_DOWN: return KEY_DOWN;
// case VKEY_SELECT: return KEY_SELECT;
case VKEY_PRINT: return KEY_PRINT;
// case VKEY_EXECUTE: return KEY_EXECUTE;
// case VKEY_SNAPSHOT: return KEY_SNAPSHOT;
case VKEY_INSERT: return KEY_INSERT;
case VKEY_DELETE: return KEY_DELETE;
case VKEY_HELP: return KEY_HELP;
// case VKEY_LWIN: return KEY_LWIN;
// case VKEY_RWIN: return KEY_RWIN;
// case VKEY_APPS: return KEY_APPS;
// case VKEY_SLEEP: return KEY_SLEEP;
case VKEY_NUMPAD0: return KEY_KP_0;
case VKEY_NUMPAD1: return KEY_KP_1;
case VKEY_NUMPAD2: return KEY_KP_2;
case VKEY_NUMPAD3: return KEY_KP_3;
case VKEY_NUMPAD4: return KEY_KP_4;
case VKEY_NUMPAD5: return KEY_KP_5;
case VKEY_NUMPAD6: return KEY_KP_6;
case VKEY_NUMPAD7: return KEY_KP_7;
case VKEY_NUMPAD8: return KEY_KP_8;
case VKEY_NUMPAD9: return KEY_KP_9;
case VKEY_MULTIPLY: return KEY_KP_MULTIPLY;
case VKEY_ADD: return KEY_KP_ADD;
// case VKEY_SEPARATOR: return KEY_SEPARATOR;
case VKEY_SUBTRACT: return KEY_KP_SUBSTRACT;
case VKEY_DECIMAL: return KEY_KP_PERIOD;
case VKEY_DIVIDE: return KEY_KP_DIVIDE;
case VKEY_F1: return KEY_F1;
case VKEY_F2: return KEY_F2;
case VKEY_F3: return KEY_F3;
case VKEY_F4: return KEY_F4;
case VKEY_F5: return KEY_F5;
case VKEY_F6: return KEY_F6;
case VKEY_F7: return KEY_F7;
case VKEY_F8: return KEY_F8;
case VKEY_F9: return KEY_F9;
case VKEY_F10: return KEY_F10;
case VKEY_F11: return KEY_F11;
case VKEY_F12: return KEY_F12;
case VKEY_F13: return KEY_F13;
case VKEY_F14: return KEY_F14;
case VKEY_F15: return KEY_F15;
case VKEY_F16: return KEY_F16;
/*
case VKEY_F17: return KEY_F17;
case VKEY_F18: return KEY_F18;
case VKEY_F19: return KEY_F19;
case VKEY_F20: return KEY_F20;
case VKEY_F21: return KEY_F21;
case VKEY_F22: return KEY_F22;
case VKEY_F23: return KEY_F23;
case VKEY_F24: return KEY_F24;
*/
case VKEY_NUMLOCK: return KEY_NUMLOCK;
case VKEY_SCROLL: return KEY_SCROLLLOCK;
case VKEY_LSHIFT: return KEY_SHIFT;
case VKEY_RSHIFT: return KEY_SHIFT;
case VKEY_LCONTROL: return KEY_CONTROL;
case VKEY_RCONTROL: return KEY_CONTROL;
case VKEY_LMENU: return KEY_MENU;
case VKEY_RMENU: return KEY_MENU;
case VKEY_BROWSER_BACK: return KEY_BACK;
case VKEY_BROWSER_FORWARD: return KEY_FORWARD;
case VKEY_BROWSER_REFRESH: return KEY_REFRESH;
case VKEY_BROWSER_STOP: return KEY_STOP;
case VKEY_BROWSER_SEARCH: return KEY_SEARCH;
case VKEY_BROWSER_FAVORITES: return KEY_FAVORITES;
case VKEY_BROWSER_HOME: return KEY_HOMEPAGE;
case VKEY_VOLUME_MUTE: return KEY_VOLUMEMUTE;
case VKEY_VOLUME_DOWN: return KEY_VOLUMEDOWN;
case VKEY_VOLUME_UP: return KEY_VOLUMEUP;
case VKEY_MEDIA_NEXT_TRACK: return KEY_MEDIANEXT;
case VKEY_MEDIA_PREV_TRACK: return KEY_MEDIAPREVIOUS;
case VKEY_MEDIA_STOP: return KEY_MEDIASTOP;
case VKEY_MEDIA_PLAY_PAUSE: return KEY_MEDIAPLAY;
case VKEY_MEDIA_LAUNCH_MAIL: return KEY_LAUNCHMAIL;
case VKEY_MEDIA_LAUNCH_MEDIA_SELECT: return KEY_LAUNCHMEDIA; // FUCKING USELESS KEYS, HOW DO THEY WORK?
case VKEY_MEDIA_LAUNCH_APP1: return KEY_LAUNCH0;
case VKEY_MEDIA_LAUNCH_APP2: return KEY_LAUNCH0;
// case VKEY_OEM_102: return KEY_OEM_102;
// case VKEY_PROCESSKEY: return KEY_PROCESSKEY;
// case VKEY_PACKET: return KEY_PACKET;
// case VKEY_ATTN: return KEY_ATTN;
// case VKEY_CRSEL: return KEY_CRSEL;
// case VKEY_EXSEL: return KEY_EXSEL;
// case VKEY_EREOF: return KEY_EREOF;
// case VKEY_PLAY: return KEY_PLAY;
// case VKEY_ZOOM: return KEY_ZOOM;
// case VKEY_NONAME: return KEY_NONAME;
// case VKEY_PA1: return KEY_PA1;
// case VKEY_OEM_CLEAR: return KEY_OEM_CLEAR;
default: break;
};
is_char = true;
switch (p_key) {
case VKEY_SPACE: return KEY_SPACE;
case VKEY_0: return KEY_0;
case VKEY_1: return KEY_1;
case VKEY_2: return KEY_2;
case VKEY_3: return KEY_3;
case VKEY_4: return KEY_4;
case VKEY_5: return KEY_5;
case VKEY_6: return KEY_6;
case VKEY_7: return KEY_7;
case VKEY_8: return KEY_8;
case VKEY_9: return KEY_9;
case VKEY_A: return KEY_A;
case VKEY_B: return KEY_B;
case VKEY_C: return KEY_C;
case VKEY_D: return KEY_D;
case VKEY_E: return KEY_E;
case VKEY_F: return KEY_F;
case VKEY_G: return KEY_G;
case VKEY_H: return KEY_H;
case VKEY_I: return KEY_I;
case VKEY_J: return KEY_J;
case VKEY_K: return KEY_K;
case VKEY_L: return KEY_L;
case VKEY_M: return KEY_M;
case VKEY_N: return KEY_N;
case VKEY_O: return KEY_O;
case VKEY_P: return KEY_P;
case VKEY_Q: return KEY_Q;
case VKEY_R: return KEY_R;
case VKEY_S: return KEY_S;
case VKEY_T: return KEY_T;
case VKEY_U: return KEY_U;
case VKEY_V: return KEY_V;
case VKEY_W: return KEY_W;
case VKEY_X: return KEY_X;
case VKEY_Y: return KEY_Y;
case VKEY_Z: return KEY_Z;
/*
case VKEY_OEM_PLUS: return KEY_PLUS;
case VKEY_OEM_COMMA: return KEY_COMMA;
case VKEY_OEM_MINUS: return KEY_MINUS;
case VKEY_OEM_PERIOD: return KEY_PERIOD;
case VKEY_OEM_1: return KEY_OEM_1;
case VKEY_OEM_2: return KEY_OEM_2;
case VKEY_OEM_3: return KEY_OEM_3;
case VKEY_OEM_4: return KEY_OEM_4;
case VKEY_OEM_5: return KEY_OEM_5;
case VKEY_OEM_6: return KEY_OEM_6;
case VKEY_OEM_7: return KEY_OEM_7;
case VKEY_OEM_8: return KEY_OEM_8;
*/
default: break;
};
return 0;
};
#endif // BASE_KEYBOARD_CODES_POSIX_H_
|