Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Rubberduckycooly
GitHub Repository: Rubberduckycooly/RSDKv5-Decompilation
Path: blob/master/RSDKv5/RSDK/Input/Keyboard/KBInputDevice.cpp
1174 views
1
2
using namespace RSDK;
3
4
int32 RSDK::SKU::keyState[PLAYER_COUNT];
5
6
#if !RETRO_REV02
7
int32 RSDK::SKU::specialKeyStates[4];
8
int32 RSDK::SKU::prevSpecialKeyStates[4];
9
int32 RSDK::SKU::buttonDownCount = 0;
10
int32 RSDK::SKU::prevButtonDownCount = 0;
11
#endif
12
13
#if RETRO_RENDERDEVICE_SDL2
14
int32 winAPIToSDLMappings(int32 mapping)
15
{
16
switch (mapping) {
17
default: return SDL_SCANCODE_UNKNOWN;
18
case VK_LBUTTON: return SDL_SCANCODE_UNKNOWN;
19
case VK_RBUTTON: return SDL_SCANCODE_UNKNOWN;
20
case VK_CANCEL: return SDL_SCANCODE_CANCEL;
21
case VK_MBUTTON: return SDL_SCANCODE_UNKNOWN;
22
case VK_XBUTTON1: return SDL_SCANCODE_UNKNOWN;
23
case VK_XBUTTON2: return SDL_SCANCODE_UNKNOWN;
24
case VK_BACK: return SDL_SCANCODE_UNKNOWN;
25
case VK_TAB: return SDL_SCANCODE_TAB;
26
case VK_CLEAR: return SDL_SCANCODE_CLEAR;
27
case VK_RETURN: return SDL_SCANCODE_RETURN;
28
case VK_SHIFT: return SDL_SCANCODE_UNKNOWN;
29
case VK_CONTROL: return SDL_SCANCODE_UNKNOWN;
30
case VK_MENU: return SDL_SCANCODE_MENU;
31
case VK_PAUSE: return SDL_SCANCODE_PAUSE;
32
case VK_CAPITAL: return SDL_SCANCODE_CAPSLOCK;
33
case VK_KANA: return SDL_SCANCODE_UNKNOWN;
34
case VK_JUNJA: return SDL_SCANCODE_UNKNOWN;
35
case VK_FINAL: return SDL_SCANCODE_UNKNOWN;
36
case VK_HANJA: return SDL_SCANCODE_UNKNOWN;
37
case VK_ESCAPE: return SDL_SCANCODE_ESCAPE;
38
case VK_CONVERT: return SDL_SCANCODE_UNKNOWN;
39
case VK_NONCONVERT: return SDL_SCANCODE_UNKNOWN;
40
case VK_ACCEPT: return SDL_SCANCODE_UNKNOWN;
41
case VK_MODECHANGE: return SDL_SCANCODE_UNKNOWN;
42
case VK_SPACE: return SDL_SCANCODE_SPACE;
43
case VK_PRIOR: return SDL_SCANCODE_PAGEUP;
44
case VK_NEXT: return SDL_SCANCODE_PAGEDOWN;
45
case VK_END: return SDL_SCANCODE_END;
46
case VK_HOME: return SDL_SCANCODE_HOME;
47
case VK_LEFT: return SDL_SCANCODE_LEFT;
48
case VK_UP: return SDL_SCANCODE_UP;
49
case VK_RIGHT: return SDL_SCANCODE_RIGHT;
50
case VK_DOWN: return SDL_SCANCODE_DOWN;
51
case VK_SELECT: return SDL_SCANCODE_SELECT;
52
case VK_PRINT: return SDL_SCANCODE_UNKNOWN;
53
case VK_EXECUTE: return SDL_SCANCODE_EXECUTE;
54
case VK_SNAPSHOT: return SDL_SCANCODE_PRINTSCREEN;
55
case VK_INSERT: return SDL_SCANCODE_INSERT;
56
case VK_DELETE: return SDL_SCANCODE_DELETE;
57
case VK_HELP: return SDL_SCANCODE_HELP;
58
case VK_0: return SDL_SCANCODE_0;
59
case VK_1: return SDL_SCANCODE_1;
60
case VK_2: return SDL_SCANCODE_2;
61
case VK_3: return SDL_SCANCODE_3;
62
case VK_4: return SDL_SCANCODE_4;
63
case VK_5: return SDL_SCANCODE_5;
64
case VK_6: return SDL_SCANCODE_6;
65
case VK_7: return SDL_SCANCODE_7;
66
case VK_8: return SDL_SCANCODE_8;
67
case VK_9: return SDL_SCANCODE_9;
68
case VK_A: return SDL_SCANCODE_A;
69
case VK_B: return SDL_SCANCODE_B;
70
case VK_C: return SDL_SCANCODE_C;
71
case VK_D: return SDL_SCANCODE_D;
72
case VK_E: return SDL_SCANCODE_E;
73
case VK_F: return SDL_SCANCODE_F;
74
case VK_G: return SDL_SCANCODE_G;
75
case VK_H: return SDL_SCANCODE_H;
76
case VK_I: return SDL_SCANCODE_I;
77
case VK_J: return SDL_SCANCODE_J;
78
case VK_K: return SDL_SCANCODE_K;
79
case VK_L: return SDL_SCANCODE_L;
80
case VK_M: return SDL_SCANCODE_M;
81
case VK_N: return SDL_SCANCODE_N;
82
case VK_O: return SDL_SCANCODE_O;
83
case VK_P: return SDL_SCANCODE_P;
84
case VK_Q: return SDL_SCANCODE_Q;
85
case VK_R: return SDL_SCANCODE_R;
86
case VK_S: return SDL_SCANCODE_S;
87
case VK_T: return SDL_SCANCODE_T;
88
case VK_U: return SDL_SCANCODE_U;
89
case VK_V: return SDL_SCANCODE_V;
90
case VK_W: return SDL_SCANCODE_W;
91
case VK_X: return SDL_SCANCODE_X;
92
case VK_Y: return SDL_SCANCODE_Y;
93
case VK_Z: return SDL_SCANCODE_Z;
94
case VK_LWIN: return SDL_SCANCODE_UNKNOWN;
95
case VK_RWIN: return SDL_SCANCODE_UNKNOWN;
96
case VK_APPS: return SDL_SCANCODE_UNKNOWN;
97
case VK_SLEEP: return SDL_SCANCODE_UNKNOWN;
98
case VK_NUMPAD0: return SDL_SCANCODE_UNKNOWN;
99
case VK_NUMPAD1: return SDL_SCANCODE_UNKNOWN;
100
case VK_NUMPAD2: return SDL_SCANCODE_UNKNOWN;
101
case VK_NUMPAD3: return SDL_SCANCODE_UNKNOWN;
102
case VK_NUMPAD4: return SDL_SCANCODE_UNKNOWN;
103
case VK_NUMPAD5: return SDL_SCANCODE_UNKNOWN;
104
case VK_NUMPAD6: return SDL_SCANCODE_UNKNOWN;
105
case VK_NUMPAD7: return SDL_SCANCODE_UNKNOWN;
106
case VK_NUMPAD8: return SDL_SCANCODE_UNKNOWN;
107
case VK_NUMPAD9: return SDL_SCANCODE_UNKNOWN;
108
case VK_MULTIPLY: return SDL_SCANCODE_UNKNOWN;
109
case VK_ADD: return SDL_SCANCODE_UNKNOWN;
110
case VK_SEPARATOR: return SDL_SCANCODE_UNKNOWN;
111
case VK_SUBTRACT: return SDL_SCANCODE_UNKNOWN;
112
case VK_DECIMAL: return SDL_SCANCODE_UNKNOWN;
113
case VK_DIVIDE: return SDL_SCANCODE_UNKNOWN;
114
case VK_F1: return SDL_SCANCODE_F1;
115
case VK_F2: return SDL_SCANCODE_F2;
116
case VK_F3: return SDL_SCANCODE_F3;
117
case VK_F4: return SDL_SCANCODE_F4;
118
case VK_F5: return SDL_SCANCODE_F5;
119
case VK_F6: return SDL_SCANCODE_F6;
120
case VK_F7: return SDL_SCANCODE_F7;
121
case VK_F8: return SDL_SCANCODE_F8;
122
case VK_F9: return SDL_SCANCODE_F9;
123
case VK_F10: return SDL_SCANCODE_F10;
124
case VK_F11: return SDL_SCANCODE_F11;
125
case VK_F12: return SDL_SCANCODE_F12;
126
case VK_F13: return SDL_SCANCODE_F13;
127
case VK_F14: return SDL_SCANCODE_F14;
128
case VK_F15: return SDL_SCANCODE_F15;
129
case VK_F16: return SDL_SCANCODE_F16;
130
case VK_F17: return SDL_SCANCODE_F17;
131
case VK_F18: return SDL_SCANCODE_F18;
132
case VK_F19: return SDL_SCANCODE_F19;
133
case VK_F20: return SDL_SCANCODE_F20;
134
case VK_F21: return SDL_SCANCODE_F21;
135
case VK_F22: return SDL_SCANCODE_F22;
136
case VK_F23: return SDL_SCANCODE_F23;
137
case VK_F24: return SDL_SCANCODE_F24;
138
case VK_NAVIGATION_VIEW: return SDL_SCANCODE_UNKNOWN;
139
case VK_NAVIGATION_MENU: return SDL_SCANCODE_UNKNOWN;
140
case VK_NAVIGATION_UP: return SDL_SCANCODE_UNKNOWN;
141
case VK_NAVIGATION_DOWN: return SDL_SCANCODE_UNKNOWN;
142
case VK_NAVIGATION_LEFT: return SDL_SCANCODE_UNKNOWN;
143
case VK_NAVIGATION_RIGHT: return SDL_SCANCODE_UNKNOWN;
144
case VK_NAVIGATION_ACCEPT: return SDL_SCANCODE_UNKNOWN;
145
case VK_NAVIGATION_CANCEL: return SDL_SCANCODE_UNKNOWN;
146
case VK_NUMLOCK: return SDL_SCANCODE_UNKNOWN;
147
case VK_SCROLL: return SDL_SCANCODE_UNKNOWN;
148
case VK_OEM_NEC_EQUAL: return SDL_SCANCODE_UNKNOWN;
149
case VK_OEM_FJ_MASSHOU: return SDL_SCANCODE_UNKNOWN;
150
case VK_OEM_FJ_TOUROKU: return SDL_SCANCODE_UNKNOWN;
151
case VK_OEM_FJ_LOYA: return SDL_SCANCODE_UNKNOWN;
152
case VK_OEM_FJ_ROYA: return SDL_SCANCODE_UNKNOWN;
153
case VK_LSHIFT: return SDL_SCANCODE_LSHIFT;
154
case VK_RSHIFT: return SDL_SCANCODE_RSHIFT;
155
case VK_LCONTROL: return SDL_SCANCODE_LCTRL;
156
case VK_RCONTROL: return SDL_SCANCODE_RCTRL;
157
case VK_LMENU: return SDL_SCANCODE_LALT;
158
case VK_RMENU: return SDL_SCANCODE_RALT;
159
case VK_BROWSER_BACK: return SDL_SCANCODE_UNKNOWN;
160
case VK_BROWSER_FORWARD: return SDL_SCANCODE_UNKNOWN;
161
case VK_BROWSER_REFRESH: return SDL_SCANCODE_UNKNOWN;
162
case VK_BROWSER_STOP: return SDL_SCANCODE_UNKNOWN;
163
case VK_BROWSER_SEARCH: return SDL_SCANCODE_UNKNOWN;
164
case VK_BROWSER_FAVORITES: return SDL_SCANCODE_UNKNOWN;
165
case VK_BROWSER_HOME: return SDL_SCANCODE_UNKNOWN;
166
case VK_VOLUME_MUTE: return SDL_SCANCODE_UNKNOWN;
167
case VK_VOLUME_DOWN: return SDL_SCANCODE_UNKNOWN;
168
case VK_VOLUME_UP: return SDL_SCANCODE_UNKNOWN;
169
case VK_MEDIA_NEXT_TRACK: return SDL_SCANCODE_UNKNOWN;
170
case VK_MEDIA_PREV_TRACK: return SDL_SCANCODE_UNKNOWN;
171
case VK_MEDIA_STOP: return SDL_SCANCODE_UNKNOWN;
172
case VK_MEDIA_PLAY_PAUSE: return SDL_SCANCODE_UNKNOWN;
173
case VK_LAUNCH_MAIL: return SDL_SCANCODE_UNKNOWN;
174
case VK_LAUNCH_MEDIA_SELECT: return SDL_SCANCODE_UNKNOWN;
175
case VK_LAUNCH_APP1: return SDL_SCANCODE_UNKNOWN;
176
case VK_LAUNCH_APP2: return SDL_SCANCODE_UNKNOWN;
177
case VK_OEM_1: return SDL_SCANCODE_UNKNOWN;
178
case VK_OEM_PLUS: return SDL_SCANCODE_UNKNOWN;
179
case VK_OEM_COMMA: return SDL_SCANCODE_UNKNOWN;
180
case VK_OEM_MINUS: return SDL_SCANCODE_UNKNOWN;
181
case VK_OEM_PERIOD: return SDL_SCANCODE_UNKNOWN;
182
case VK_OEM_2: return SDL_SCANCODE_UNKNOWN;
183
case VK_OEM_3: return SDL_SCANCODE_UNKNOWN;
184
case VK_GAMEPAD_A: return SDL_SCANCODE_UNKNOWN;
185
case VK_GAMEPAD_B: return SDL_SCANCODE_UNKNOWN;
186
case VK_GAMEPAD_X: return SDL_SCANCODE_UNKNOWN;
187
case VK_GAMEPAD_Y: return SDL_SCANCODE_UNKNOWN;
188
case VK_GAMEPAD_RIGHT_SHOULDER: return SDL_SCANCODE_UNKNOWN;
189
case VK_GAMEPAD_LEFT_SHOULDER: return SDL_SCANCODE_UNKNOWN;
190
case VK_GAMEPAD_LEFT_TRIGGER: return SDL_SCANCODE_UNKNOWN;
191
case VK_GAMEPAD_RIGHT_TRIGGER: return SDL_SCANCODE_UNKNOWN;
192
case VK_GAMEPAD_DPAD_UP: return SDL_SCANCODE_UNKNOWN;
193
case VK_GAMEPAD_DPAD_DOWN: return SDL_SCANCODE_UNKNOWN;
194
case VK_GAMEPAD_DPAD_LEFT: return SDL_SCANCODE_UNKNOWN;
195
case VK_GAMEPAD_DPAD_RIGHT: return SDL_SCANCODE_UNKNOWN;
196
case VK_GAMEPAD_MENU: return SDL_SCANCODE_UNKNOWN;
197
case VK_GAMEPAD_VIEW: return SDL_SCANCODE_UNKNOWN;
198
case VK_GAMEPAD_LEFT_THUMBSTICK_BUTTON: return SDL_SCANCODE_UNKNOWN;
199
case VK_GAMEPAD_RIGHT_THUMBSTICK_BUTTON: return SDL_SCANCODE_UNKNOWN;
200
case VK_GAMEPAD_LEFT_THUMBSTICK_UP: return SDL_SCANCODE_UNKNOWN;
201
case VK_GAMEPAD_LEFT_THUMBSTICK_DOWN: return SDL_SCANCODE_UNKNOWN;
202
case VK_GAMEPAD_LEFT_THUMBSTICK_RIGHT: return SDL_SCANCODE_UNKNOWN;
203
case VK_GAMEPAD_LEFT_THUMBSTICK_LEFT: return SDL_SCANCODE_UNKNOWN;
204
case VK_GAMEPAD_RIGHT_THUMBSTICK_UP: return SDL_SCANCODE_UNKNOWN;
205
case VK_GAMEPAD_RIGHT_THUMBSTICK_DOWN: return SDL_SCANCODE_UNKNOWN;
206
case VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT: return SDL_SCANCODE_UNKNOWN;
207
case VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT: return SDL_SCANCODE_UNKNOWN;
208
case VK_OEM_4: return SDL_SCANCODE_UNKNOWN;
209
case VK_OEM_5: return SDL_SCANCODE_UNKNOWN;
210
case VK_OEM_6: return SDL_SCANCODE_UNKNOWN;
211
case VK_OEM_7: return SDL_SCANCODE_UNKNOWN;
212
case VK_OEM_8: return SDL_SCANCODE_UNKNOWN;
213
case VK_OEM_AX: return SDL_SCANCODE_UNKNOWN;
214
case VK_OEM_102: return SDL_SCANCODE_UNKNOWN;
215
case VK_ICO_HELP: return SDL_SCANCODE_UNKNOWN;
216
case VK_ICO_00: return SDL_SCANCODE_UNKNOWN;
217
case VK_PROCESSKEY: return SDL_SCANCODE_UNKNOWN;
218
case VK_ICO_CLEAR: return SDL_SCANCODE_UNKNOWN;
219
case VK_PACKET: return SDL_SCANCODE_UNKNOWN;
220
case VK_OEM_RESET: return SDL_SCANCODE_UNKNOWN;
221
case VK_OEM_JUMP: return SDL_SCANCODE_UNKNOWN;
222
case VK_OEM_PA1: return SDL_SCANCODE_UNKNOWN;
223
case VK_OEM_PA2: return SDL_SCANCODE_UNKNOWN;
224
case VK_OEM_PA3: return SDL_SCANCODE_UNKNOWN;
225
case VK_OEM_WSCTRL: return SDL_SCANCODE_UNKNOWN;
226
case VK_OEM_CUSEL: return SDL_SCANCODE_UNKNOWN;
227
case VK_OEM_ATTN: return SDL_SCANCODE_UNKNOWN;
228
case VK_OEM_FINISH: return SDL_SCANCODE_UNKNOWN;
229
case VK_OEM_COPY: return SDL_SCANCODE_UNKNOWN;
230
case VK_OEM_AUTO: return SDL_SCANCODE_UNKNOWN;
231
case VK_OEM_ENLW: return SDL_SCANCODE_UNKNOWN;
232
case VK_OEM_BACKTAB: return SDL_SCANCODE_UNKNOWN;
233
case VK_ATTN: return SDL_SCANCODE_UNKNOWN;
234
case VK_CRSEL: return SDL_SCANCODE_UNKNOWN;
235
case VK_EXSEL: return SDL_SCANCODE_UNKNOWN;
236
case VK_EREOF: return SDL_SCANCODE_UNKNOWN;
237
case VK_PLAY: return SDL_SCANCODE_UNKNOWN;
238
case VK_ZOOM: return SDL_SCANCODE_UNKNOWN;
239
case VK_NONAME: return SDL_SCANCODE_UNKNOWN;
240
case VK_PA1: return SDL_SCANCODE_UNKNOWN;
241
case VK_OEM_CLEAR: return SDL_SCANCODE_UNKNOWN;
242
}
243
}
244
245
int32 SDLToWinAPIMappings(int32 mapping)
246
{
247
switch (mapping) {
248
default: return KEYMAP_NO_MAPPING;
249
case SDL_SCANCODE_CANCEL: return VK_CANCEL;
250
case SDL_SCANCODE_TAB: return VK_TAB;
251
case SDL_SCANCODE_CLEAR: return VK_CLEAR;
252
case SDL_SCANCODE_RETURN: return VK_RETURN;
253
case SDL_SCANCODE_MENU: return VK_MENU;
254
case SDL_SCANCODE_PAUSE: return VK_PAUSE;
255
case SDL_SCANCODE_CAPSLOCK: return VK_CAPITAL;
256
case SDL_SCANCODE_ESCAPE: return VK_ESCAPE;
257
case SDL_SCANCODE_SPACE: return VK_SPACE;
258
case SDL_SCANCODE_PAGEUP: return VK_PRIOR;
259
case SDL_SCANCODE_PAGEDOWN: return VK_NEXT;
260
case SDL_SCANCODE_END: return VK_END;
261
case SDL_SCANCODE_HOME: return VK_HOME;
262
case SDL_SCANCODE_LEFT: return VK_LEFT;
263
case SDL_SCANCODE_UP: return VK_UP;
264
case SDL_SCANCODE_RIGHT: return VK_RIGHT;
265
case SDL_SCANCODE_DOWN: return VK_DOWN;
266
case SDL_SCANCODE_SELECT: return VK_SELECT;
267
case SDL_SCANCODE_EXECUTE: return VK_EXECUTE;
268
case SDL_SCANCODE_PRINTSCREEN: return VK_SNAPSHOT;
269
case SDL_SCANCODE_INSERT: return VK_INSERT;
270
case SDL_SCANCODE_DELETE: return VK_DELETE;
271
case SDL_SCANCODE_HELP: return VK_HELP;
272
case SDL_SCANCODE_0: return VK_0;
273
case SDL_SCANCODE_1: return VK_1;
274
case SDL_SCANCODE_2: return VK_2;
275
case SDL_SCANCODE_3: return VK_3;
276
case SDL_SCANCODE_4: return VK_4;
277
case SDL_SCANCODE_5: return VK_5;
278
case SDL_SCANCODE_6: return VK_6;
279
case SDL_SCANCODE_7: return VK_7;
280
case SDL_SCANCODE_8: return VK_8;
281
case SDL_SCANCODE_9: return VK_9;
282
case SDL_SCANCODE_A: return VK_A;
283
case SDL_SCANCODE_B: return VK_B;
284
case SDL_SCANCODE_C: return VK_C;
285
case SDL_SCANCODE_D: return VK_D;
286
case SDL_SCANCODE_E: return VK_E;
287
case SDL_SCANCODE_F: return VK_F;
288
case SDL_SCANCODE_G: return VK_G;
289
case SDL_SCANCODE_H: return VK_H;
290
case SDL_SCANCODE_I: return VK_I;
291
case SDL_SCANCODE_J: return VK_J;
292
case SDL_SCANCODE_K: return VK_K;
293
case SDL_SCANCODE_L: return VK_L;
294
case SDL_SCANCODE_M: return VK_M;
295
case SDL_SCANCODE_N: return VK_N;
296
case SDL_SCANCODE_O: return VK_O;
297
case SDL_SCANCODE_P: return VK_P;
298
case SDL_SCANCODE_Q: return VK_Q;
299
case SDL_SCANCODE_R: return VK_R;
300
case SDL_SCANCODE_S: return VK_S;
301
case SDL_SCANCODE_T: return VK_T;
302
case SDL_SCANCODE_U: return VK_U;
303
case SDL_SCANCODE_V: return VK_V;
304
case SDL_SCANCODE_W: return VK_W;
305
case SDL_SCANCODE_X: return VK_X;
306
case SDL_SCANCODE_Y: return VK_Y;
307
case SDL_SCANCODE_Z: return VK_Z;
308
case SDL_SCANCODE_F1: return VK_F1;
309
case SDL_SCANCODE_F2: return VK_F2;
310
case SDL_SCANCODE_F3: return VK_F3;
311
case SDL_SCANCODE_F4: return VK_F4;
312
case SDL_SCANCODE_F5: return VK_F5;
313
case SDL_SCANCODE_F6: return VK_F6;
314
case SDL_SCANCODE_F7: return VK_F7;
315
case SDL_SCANCODE_F8: return VK_F8;
316
case SDL_SCANCODE_F9: return VK_F9;
317
case SDL_SCANCODE_F10: return VK_F10;
318
case SDL_SCANCODE_F11: return VK_F11;
319
case SDL_SCANCODE_F12: return VK_F12;
320
case SDL_SCANCODE_F13: return VK_F13;
321
case SDL_SCANCODE_F14: return VK_F14;
322
case SDL_SCANCODE_F15: return VK_F15;
323
case SDL_SCANCODE_F16: return VK_F16;
324
case SDL_SCANCODE_F17: return VK_F17;
325
case SDL_SCANCODE_F18: return VK_F18;
326
case SDL_SCANCODE_F19: return VK_F19;
327
case SDL_SCANCODE_F20: return VK_F20;
328
case SDL_SCANCODE_F21: return VK_F21;
329
case SDL_SCANCODE_F22: return VK_F22;
330
case SDL_SCANCODE_F23: return VK_F23;
331
case SDL_SCANCODE_F24: return VK_F24;
332
case SDL_SCANCODE_LSHIFT: return VK_LSHIFT;
333
case SDL_SCANCODE_RSHIFT: return VK_RSHIFT;
334
case SDL_SCANCODE_LCTRL: return VK_LCONTROL;
335
case SDL_SCANCODE_RCTRL: return VK_RCONTROL;
336
case SDL_SCANCODE_LALT: return VK_LMENU;
337
case SDL_SCANCODE_RALT: return VK_RMENU;
338
}
339
}
340
#elif RETRO_INPUTDEVICE_GLFW
341
int32 winAPIToGLFWMappings(int32 mapping)
342
{
343
switch (mapping) {
344
default: return GLFW_KEY_UNKNOWN;
345
case VK_LBUTTON: return GLFW_KEY_UNKNOWN;
346
case VK_RBUTTON: return GLFW_KEY_UNKNOWN;
347
case VK_CANCEL: return GLFW_KEY_UNKNOWN;
348
case VK_MBUTTON: return GLFW_KEY_UNKNOWN;
349
case VK_XBUTTON1: return GLFW_KEY_UNKNOWN;
350
case VK_XBUTTON2: return GLFW_KEY_UNKNOWN;
351
case VK_BACK: return GLFW_KEY_UNKNOWN;
352
case VK_TAB: return GLFW_KEY_TAB;
353
case VK_CLEAR: return GLFW_KEY_UNKNOWN;
354
case VK_RETURN: return GLFW_KEY_ENTER;
355
case VK_SHIFT: return GLFW_KEY_UNKNOWN;
356
case VK_CONTROL: return GLFW_KEY_UNKNOWN;
357
case VK_MENU: return GLFW_KEY_MENU;
358
case VK_PAUSE: return GLFW_KEY_PAUSE;
359
case VK_CAPITAL: return GLFW_KEY_CAPS_LOCK;
360
case VK_KANA: return GLFW_KEY_UNKNOWN;
361
case VK_JUNJA: return GLFW_KEY_UNKNOWN;
362
case VK_FINAL: return GLFW_KEY_UNKNOWN;
363
case VK_HANJA: return GLFW_KEY_UNKNOWN;
364
case VK_ESCAPE: return GLFW_KEY_ESCAPE;
365
case VK_CONVERT: return GLFW_KEY_UNKNOWN;
366
case VK_NONCONVERT: return GLFW_KEY_UNKNOWN;
367
case VK_ACCEPT: return GLFW_KEY_UNKNOWN;
368
case VK_MODECHANGE: return GLFW_KEY_UNKNOWN;
369
case VK_SPACE: return GLFW_KEY_SPACE;
370
case VK_PRIOR: return GLFW_KEY_PAGE_UP;
371
case VK_NEXT: return GLFW_KEY_PAGE_DOWN;
372
case VK_END: return GLFW_KEY_END;
373
case VK_HOME: return GLFW_KEY_HOME;
374
case VK_LEFT: return GLFW_KEY_LEFT;
375
case VK_UP: return GLFW_KEY_UP;
376
case VK_RIGHT: return GLFW_KEY_RIGHT;
377
case VK_DOWN: return GLFW_KEY_DOWN;
378
case VK_SELECT: return GLFW_KEY_UNKNOWN;
379
case VK_PRINT: return GLFW_KEY_UNKNOWN;
380
case VK_EXECUTE: return GLFW_KEY_UNKNOWN;
381
case VK_SNAPSHOT: return GLFW_KEY_PRINT_SCREEN;
382
case VK_INSERT: return GLFW_KEY_INSERT;
383
case VK_DELETE: return GLFW_KEY_DELETE;
384
case VK_HELP: return GLFW_KEY_UNKNOWN;
385
case VK_0: return GLFW_KEY_0;
386
case VK_1: return GLFW_KEY_1;
387
case VK_2: return GLFW_KEY_2;
388
case VK_3: return GLFW_KEY_3;
389
case VK_4: return GLFW_KEY_4;
390
case VK_5: return GLFW_KEY_5;
391
case VK_6: return GLFW_KEY_6;
392
case VK_7: return GLFW_KEY_7;
393
case VK_8: return GLFW_KEY_8;
394
case VK_9: return GLFW_KEY_9;
395
case VK_A: return GLFW_KEY_A;
396
case VK_B: return GLFW_KEY_B;
397
case VK_C: return GLFW_KEY_C;
398
case VK_D: return GLFW_KEY_D;
399
case VK_E: return GLFW_KEY_E;
400
case VK_F: return GLFW_KEY_F;
401
case VK_G: return GLFW_KEY_G;
402
case VK_H: return GLFW_KEY_H;
403
case VK_I: return GLFW_KEY_I;
404
case VK_J: return GLFW_KEY_J;
405
case VK_K: return GLFW_KEY_K;
406
case VK_L: return GLFW_KEY_L;
407
case VK_M: return GLFW_KEY_M;
408
case VK_N: return GLFW_KEY_N;
409
case VK_O: return GLFW_KEY_O;
410
case VK_P: return GLFW_KEY_P;
411
case VK_Q: return GLFW_KEY_Q;
412
case VK_R: return GLFW_KEY_R;
413
case VK_S: return GLFW_KEY_S;
414
case VK_T: return GLFW_KEY_T;
415
case VK_U: return GLFW_KEY_U;
416
case VK_V: return GLFW_KEY_V;
417
case VK_W: return GLFW_KEY_W;
418
case VK_X: return GLFW_KEY_X;
419
case VK_Y: return GLFW_KEY_Y;
420
case VK_Z: return GLFW_KEY_Z;
421
case VK_LWIN: return GLFW_KEY_UNKNOWN;
422
case VK_RWIN: return GLFW_KEY_UNKNOWN;
423
case VK_APPS: return GLFW_KEY_UNKNOWN;
424
case VK_SLEEP: return GLFW_KEY_UNKNOWN;
425
case VK_NUMPAD0: return GLFW_KEY_KP_0;
426
case VK_NUMPAD1: return GLFW_KEY_KP_1;
427
case VK_NUMPAD2: return GLFW_KEY_KP_2;
428
case VK_NUMPAD3: return GLFW_KEY_KP_3;
429
case VK_NUMPAD4: return GLFW_KEY_KP_4;
430
case VK_NUMPAD5: return GLFW_KEY_KP_5;
431
case VK_NUMPAD6: return GLFW_KEY_KP_6;
432
case VK_NUMPAD7: return GLFW_KEY_KP_7;
433
case VK_NUMPAD8: return GLFW_KEY_KP_8;
434
case VK_NUMPAD9: return GLFW_KEY_KP_9;
435
case VK_MULTIPLY: return GLFW_KEY_KP_MULTIPLY;
436
case VK_ADD: return GLFW_KEY_KP_ADD;
437
case VK_SEPARATOR: return GLFW_KEY_UNKNOWN;
438
case VK_SUBTRACT: return GLFW_KEY_KP_SUBTRACT;
439
case VK_DECIMAL: return GLFW_KEY_KP_DECIMAL;
440
case VK_DIVIDE: return GLFW_KEY_KP_DIVIDE;
441
case VK_F1: return GLFW_KEY_F1;
442
case VK_F2: return GLFW_KEY_F2;
443
case VK_F3: return GLFW_KEY_F3;
444
case VK_F4: return GLFW_KEY_F4;
445
case VK_F5: return GLFW_KEY_F5;
446
case VK_F6: return GLFW_KEY_F6;
447
case VK_F7: return GLFW_KEY_F7;
448
case VK_F8: return GLFW_KEY_F8;
449
case VK_F9: return GLFW_KEY_F9;
450
case VK_F10: return GLFW_KEY_F10;
451
case VK_F11: return GLFW_KEY_F11;
452
case VK_F12: return GLFW_KEY_F12;
453
case VK_F13: return GLFW_KEY_F13;
454
case VK_F14: return GLFW_KEY_F14;
455
case VK_F15: return GLFW_KEY_F15;
456
case VK_F16: return GLFW_KEY_F16;
457
case VK_F17: return GLFW_KEY_F17;
458
case VK_F18: return GLFW_KEY_F18;
459
case VK_F19: return GLFW_KEY_F19;
460
case VK_F20: return GLFW_KEY_F20;
461
case VK_F21: return GLFW_KEY_F21;
462
case VK_F22: return GLFW_KEY_F22;
463
case VK_F23: return GLFW_KEY_F23;
464
case VK_F24: return GLFW_KEY_F24;
465
case VK_NAVIGATION_VIEW: return GLFW_KEY_UNKNOWN;
466
case VK_NAVIGATION_MENU: return GLFW_KEY_UNKNOWN;
467
case VK_NAVIGATION_UP: return GLFW_KEY_UNKNOWN;
468
case VK_NAVIGATION_DOWN: return GLFW_KEY_UNKNOWN;
469
case VK_NAVIGATION_LEFT: return GLFW_KEY_UNKNOWN;
470
case VK_NAVIGATION_RIGHT: return GLFW_KEY_UNKNOWN;
471
case VK_NAVIGATION_ACCEPT: return GLFW_KEY_UNKNOWN;
472
case VK_NAVIGATION_CANCEL: return GLFW_KEY_UNKNOWN;
473
case VK_NUMLOCK: return GLFW_KEY_NUM_LOCK;
474
case VK_SCROLL: return GLFW_KEY_SCROLL_LOCK;
475
case VK_OEM_NEC_EQUAL: return GLFW_KEY_UNKNOWN;
476
case VK_OEM_FJ_MASSHOU: return GLFW_KEY_UNKNOWN;
477
case VK_OEM_FJ_TOUROKU: return GLFW_KEY_UNKNOWN;
478
case VK_OEM_FJ_LOYA: return GLFW_KEY_UNKNOWN;
479
case VK_OEM_FJ_ROYA: return GLFW_KEY_UNKNOWN;
480
case VK_LSHIFT: return GLFW_KEY_LEFT_SHIFT;
481
case VK_RSHIFT: return GLFW_KEY_RIGHT_SHIFT;
482
case VK_LCONTROL: return GLFW_KEY_LEFT_CONTROL;
483
case VK_RCONTROL: return GLFW_KEY_RIGHT_CONTROL;
484
case VK_LMENU: return GLFW_KEY_LEFT_ALT;
485
case VK_RMENU: return GLFW_KEY_RIGHT_ALT;
486
case VK_BROWSER_BACK: return GLFW_KEY_UNKNOWN;
487
case VK_BROWSER_FORWARD: return GLFW_KEY_UNKNOWN;
488
case VK_BROWSER_REFRESH: return GLFW_KEY_UNKNOWN;
489
case VK_BROWSER_STOP: return GLFW_KEY_UNKNOWN;
490
case VK_BROWSER_SEARCH: return GLFW_KEY_UNKNOWN;
491
case VK_BROWSER_FAVORITES: return GLFW_KEY_UNKNOWN;
492
case VK_BROWSER_HOME: return GLFW_KEY_UNKNOWN;
493
case VK_VOLUME_MUTE: return GLFW_KEY_UNKNOWN;
494
case VK_VOLUME_DOWN: return GLFW_KEY_UNKNOWN;
495
case VK_VOLUME_UP: return GLFW_KEY_UNKNOWN;
496
case VK_MEDIA_NEXT_TRACK: return GLFW_KEY_UNKNOWN;
497
case VK_MEDIA_PREV_TRACK: return GLFW_KEY_UNKNOWN;
498
case VK_MEDIA_STOP: return GLFW_KEY_UNKNOWN;
499
case VK_MEDIA_PLAY_PAUSE: return GLFW_KEY_UNKNOWN;
500
case VK_LAUNCH_MAIL: return GLFW_KEY_UNKNOWN;
501
case VK_LAUNCH_MEDIA_SELECT: return GLFW_KEY_UNKNOWN;
502
case VK_LAUNCH_APP1: return GLFW_KEY_UNKNOWN;
503
case VK_LAUNCH_APP2: return GLFW_KEY_UNKNOWN;
504
case VK_OEM_1: return GLFW_KEY_UNKNOWN;
505
case VK_OEM_PLUS: return GLFW_KEY_UNKNOWN;
506
case VK_OEM_COMMA: return GLFW_KEY_UNKNOWN;
507
case VK_OEM_MINUS: return GLFW_KEY_UNKNOWN;
508
case VK_OEM_PERIOD: return GLFW_KEY_UNKNOWN;
509
case VK_OEM_2: return GLFW_KEY_UNKNOWN;
510
case VK_OEM_3: return GLFW_KEY_UNKNOWN;
511
case VK_GAMEPAD_A: return GLFW_KEY_UNKNOWN;
512
case VK_GAMEPAD_B: return GLFW_KEY_UNKNOWN;
513
case VK_GAMEPAD_X: return GLFW_KEY_UNKNOWN;
514
case VK_GAMEPAD_Y: return GLFW_KEY_UNKNOWN;
515
case VK_GAMEPAD_RIGHT_SHOULDER: return GLFW_KEY_UNKNOWN;
516
case VK_GAMEPAD_LEFT_SHOULDER: return GLFW_KEY_UNKNOWN;
517
case VK_GAMEPAD_LEFT_TRIGGER: return GLFW_KEY_UNKNOWN;
518
case VK_GAMEPAD_RIGHT_TRIGGER: return GLFW_KEY_UNKNOWN;
519
case VK_GAMEPAD_DPAD_UP: return GLFW_KEY_UNKNOWN;
520
case VK_GAMEPAD_DPAD_DOWN: return GLFW_KEY_UNKNOWN;
521
case VK_GAMEPAD_DPAD_LEFT: return GLFW_KEY_UNKNOWN;
522
case VK_GAMEPAD_DPAD_RIGHT: return GLFW_KEY_UNKNOWN;
523
case VK_GAMEPAD_MENU: return GLFW_KEY_UNKNOWN;
524
case VK_GAMEPAD_VIEW: return GLFW_KEY_UNKNOWN;
525
case VK_GAMEPAD_LEFT_THUMBSTICK_BUTTON: return GLFW_KEY_UNKNOWN;
526
case VK_GAMEPAD_RIGHT_THUMBSTICK_BUTTON: return GLFW_KEY_UNKNOWN;
527
case VK_GAMEPAD_LEFT_THUMBSTICK_UP: return GLFW_KEY_UNKNOWN;
528
case VK_GAMEPAD_LEFT_THUMBSTICK_DOWN: return GLFW_KEY_UNKNOWN;
529
case VK_GAMEPAD_LEFT_THUMBSTICK_RIGHT: return GLFW_KEY_UNKNOWN;
530
case VK_GAMEPAD_LEFT_THUMBSTICK_LEFT: return GLFW_KEY_UNKNOWN;
531
case VK_GAMEPAD_RIGHT_THUMBSTICK_UP: return GLFW_KEY_UNKNOWN;
532
case VK_GAMEPAD_RIGHT_THUMBSTICK_DOWN: return GLFW_KEY_UNKNOWN;
533
case VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT: return GLFW_KEY_UNKNOWN;
534
case VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT: return GLFW_KEY_UNKNOWN;
535
case VK_OEM_4: return GLFW_KEY_UNKNOWN;
536
case VK_OEM_5: return GLFW_KEY_UNKNOWN;
537
case VK_OEM_6: return GLFW_KEY_UNKNOWN;
538
case VK_OEM_7: return GLFW_KEY_UNKNOWN;
539
case VK_OEM_8: return GLFW_KEY_UNKNOWN;
540
case VK_OEM_AX: return GLFW_KEY_UNKNOWN;
541
case VK_OEM_102: return GLFW_KEY_UNKNOWN;
542
case VK_ICO_HELP: return GLFW_KEY_UNKNOWN;
543
case VK_ICO_00: return GLFW_KEY_UNKNOWN;
544
case VK_PROCESSKEY: return GLFW_KEY_UNKNOWN;
545
case VK_ICO_CLEAR: return GLFW_KEY_UNKNOWN;
546
case VK_PACKET: return GLFW_KEY_UNKNOWN;
547
case VK_OEM_RESET: return GLFW_KEY_UNKNOWN;
548
case VK_OEM_JUMP: return GLFW_KEY_UNKNOWN;
549
case VK_OEM_PA1: return GLFW_KEY_UNKNOWN;
550
case VK_OEM_PA2: return GLFW_KEY_UNKNOWN;
551
case VK_OEM_PA3: return GLFW_KEY_UNKNOWN;
552
case VK_OEM_WSCTRL: return GLFW_KEY_UNKNOWN;
553
case VK_OEM_CUSEL: return GLFW_KEY_UNKNOWN;
554
case VK_OEM_ATTN: return GLFW_KEY_UNKNOWN;
555
case VK_OEM_FINISH: return GLFW_KEY_UNKNOWN;
556
case VK_OEM_COPY: return GLFW_KEY_UNKNOWN;
557
case VK_OEM_AUTO: return GLFW_KEY_UNKNOWN;
558
case VK_OEM_ENLW: return GLFW_KEY_UNKNOWN;
559
case VK_OEM_BACKTAB: return GLFW_KEY_UNKNOWN;
560
case VK_ATTN: return GLFW_KEY_UNKNOWN;
561
case VK_CRSEL: return GLFW_KEY_UNKNOWN;
562
case VK_EXSEL: return GLFW_KEY_UNKNOWN;
563
case VK_EREOF: return GLFW_KEY_UNKNOWN;
564
case VK_PLAY: return GLFW_KEY_UNKNOWN;
565
case VK_ZOOM: return GLFW_KEY_UNKNOWN;
566
case VK_NONAME: return GLFW_KEY_UNKNOWN;
567
case VK_PA1: return GLFW_KEY_UNKNOWN;
568
case VK_OEM_CLEAR: return GLFW_KEY_UNKNOWN;
569
}
570
}
571
572
int32 GLFWToWinAPIMappings(int32 mapping)
573
{
574
switch (mapping) {
575
default: return KEYMAP_NO_MAPPING;
576
case GLFW_KEY_TAB: return VK_TAB;
577
case GLFW_KEY_ENTER: return VK_RETURN;
578
case GLFW_KEY_MENU: return VK_MENU;
579
case GLFW_KEY_PAUSE: return VK_PAUSE;
580
case GLFW_KEY_CAPS_LOCK: return VK_CAPITAL;
581
case GLFW_KEY_ESCAPE: return VK_ESCAPE;
582
case GLFW_KEY_SPACE: return VK_SPACE;
583
case GLFW_KEY_PAGE_UP: return VK_PRIOR;
584
case GLFW_KEY_PAGE_DOWN: return VK_NEXT;
585
case GLFW_KEY_END: return VK_END;
586
case GLFW_KEY_HOME: return VK_HOME;
587
case GLFW_KEY_LEFT: return VK_LEFT;
588
case GLFW_KEY_UP: return VK_UP;
589
case GLFW_KEY_RIGHT: return VK_RIGHT;
590
case GLFW_KEY_DOWN: return VK_DOWN;
591
case GLFW_KEY_PRINT_SCREEN: return VK_SNAPSHOT;
592
case GLFW_KEY_INSERT: return VK_INSERT;
593
case GLFW_KEY_DELETE: return VK_DELETE;
594
case GLFW_KEY_0: return VK_0;
595
case GLFW_KEY_1: return VK_1;
596
case GLFW_KEY_2: return VK_2;
597
case GLFW_KEY_3: return VK_3;
598
case GLFW_KEY_4: return VK_4;
599
case GLFW_KEY_5: return VK_5;
600
case GLFW_KEY_6: return VK_6;
601
case GLFW_KEY_7: return VK_7;
602
case GLFW_KEY_8: return VK_8;
603
case GLFW_KEY_9: return VK_9;
604
case GLFW_KEY_A: return VK_A;
605
case GLFW_KEY_B: return VK_B;
606
case GLFW_KEY_C: return VK_C;
607
case GLFW_KEY_D: return VK_D;
608
case GLFW_KEY_E: return VK_E;
609
case GLFW_KEY_F: return VK_F;
610
case GLFW_KEY_G: return VK_G;
611
case GLFW_KEY_H: return VK_H;
612
case GLFW_KEY_I: return VK_I;
613
case GLFW_KEY_J: return VK_J;
614
case GLFW_KEY_K: return VK_K;
615
case GLFW_KEY_L: return VK_L;
616
case GLFW_KEY_M: return VK_M;
617
case GLFW_KEY_N: return VK_N;
618
case GLFW_KEY_O: return VK_O;
619
case GLFW_KEY_P: return VK_P;
620
case GLFW_KEY_Q: return VK_Q;
621
case GLFW_KEY_R: return VK_R;
622
case GLFW_KEY_S: return VK_S;
623
case GLFW_KEY_T: return VK_T;
624
case GLFW_KEY_U: return VK_U;
625
case GLFW_KEY_V: return VK_V;
626
case GLFW_KEY_W: return VK_W;
627
case GLFW_KEY_X: return VK_X;
628
case GLFW_KEY_Y: return VK_Y;
629
case GLFW_KEY_Z: return VK_Z;
630
case GLFW_KEY_F1: return VK_F1;
631
case GLFW_KEY_F2: return VK_F2;
632
case GLFW_KEY_F3: return VK_F3;
633
case GLFW_KEY_F4: return VK_F4;
634
case GLFW_KEY_F5: return VK_F5;
635
case GLFW_KEY_F6: return VK_F6;
636
case GLFW_KEY_F7: return VK_F7;
637
case GLFW_KEY_F8: return VK_F8;
638
case GLFW_KEY_F9: return VK_F9;
639
case GLFW_KEY_F10: return VK_F10;
640
case GLFW_KEY_F11: return VK_F11;
641
case GLFW_KEY_F12: return VK_F12;
642
case GLFW_KEY_F13: return VK_F13;
643
case GLFW_KEY_F14: return VK_F14;
644
case GLFW_KEY_F15: return VK_F15;
645
case GLFW_KEY_F16: return VK_F16;
646
case GLFW_KEY_F17: return VK_F17;
647
case GLFW_KEY_F18: return VK_F18;
648
case GLFW_KEY_F19: return VK_F19;
649
case GLFW_KEY_F20: return VK_F20;
650
case GLFW_KEY_F21: return VK_F21;
651
case GLFW_KEY_F22: return VK_F22;
652
case GLFW_KEY_F23: return VK_F23;
653
case GLFW_KEY_F24: return VK_F24;
654
case GLFW_KEY_LEFT_SHIFT: return VK_LSHIFT;
655
case GLFW_KEY_RIGHT_SHIFT: return VK_RSHIFT;
656
case GLFW_KEY_LEFT_CONTROL: return VK_LCONTROL;
657
case GLFW_KEY_RIGHT_CONTROL: return VK_RCONTROL;
658
case GLFW_KEY_LEFT_ALT: return VK_LMENU;
659
case GLFW_KEY_RIGHT_ALT: return VK_RMENU;
660
case GLFW_KEY_NUM_LOCK: return VK_NUMLOCK;
661
case GLFW_KEY_SCROLL_LOCK: return VK_SCROLL;
662
case GLFW_KEY_KP_0: return VK_NUMPAD0;
663
case GLFW_KEY_KP_1: return VK_NUMPAD1;
664
case GLFW_KEY_KP_2: return VK_NUMPAD2;
665
case GLFW_KEY_KP_3: return VK_NUMPAD3;
666
case GLFW_KEY_KP_4: return VK_NUMPAD4;
667
case GLFW_KEY_KP_5: return VK_NUMPAD5;
668
case GLFW_KEY_KP_6: return VK_NUMPAD6;
669
case GLFW_KEY_KP_7: return VK_NUMPAD7;
670
case GLFW_KEY_KP_8: return VK_NUMPAD8;
671
case GLFW_KEY_KP_9: return VK_NUMPAD9;
672
case GLFW_KEY_KP_MULTIPLY: return VK_MULTIPLY;
673
case GLFW_KEY_KP_ADD: return VK_ADD;
674
case GLFW_KEY_KP_SUBTRACT: return VK_SUBTRACT;
675
case GLFW_KEY_KP_DECIMAL: return VK_DECIMAL;
676
case GLFW_KEY_KP_DIVIDE: return VK_DIVIDE;
677
}
678
}
679
#endif
680
681
RSDK::SKU::InputDeviceKeyboard *RSDK::SKU::InitKeyboardDevice(uint32 id)
682
{
683
if (inputDeviceCount == INPUTDEVICE_COUNT)
684
return NULL;
685
686
if (inputDeviceList[inputDeviceCount] && inputDeviceList[inputDeviceCount]->active)
687
return NULL;
688
689
if (inputDeviceList[inputDeviceCount])
690
delete inputDeviceList[inputDeviceCount];
691
692
inputDeviceList[inputDeviceCount] = new InputDeviceKeyboard();
693
694
InputDeviceKeyboard *device = (InputDeviceKeyboard *)inputDeviceList[inputDeviceCount];
695
device->gamepadType = (DEVICE_API_KEYBOARD << 16) | (DEVICE_TYPE_KEYBOARD << 8) | (DEVICE_KEYBOARD << 0);
696
device->disabled = false;
697
device->id = id;
698
device->active = true;
699
700
for (int32 i = 0; i < PLAYER_COUNT; ++i) {
701
if (inputSlots[i] == id) {
702
inputSlotDevices[i] = device;
703
device->isAssigned = true;
704
}
705
}
706
707
inputDeviceCount++;
708
return device;
709
}
710
711
void RSDK::SKU::InputDeviceKeyboard::UpdateInput()
712
{
713
if (!this->controllerID) {
714
Vector2 cursorPos{};
715
716
// ORIGINAL CODE: CANNOT BE UNDEFINED
717
if (RenderDevice::GetCursorPos(&cursorPos)) {
718
float prevX = touchInfo.x[0];
719
float prevY = touchInfo.y[0];
720
721
touchInfo.x[0] = (cursorPos.x - videoSettings.viewportX) * videoSettings.viewportW;
722
touchInfo.y[0] = (cursorPos.y - videoSettings.viewportY) * videoSettings.viewportH;
723
724
if (touchInfo.x[0] == prevX && touchInfo.y[0] == prevY) {
725
if (this->mouseHideTimer <= 120) {
726
if (++this->mouseHideTimer == 120) {
727
RenderDevice::ShowCursor(false);
728
}
729
}
730
}
731
else if (this->mouseHideTimer >= 120) {
732
this->mouseHideTimer = 0;
733
734
RenderDevice::ShowCursor(true);
735
}
736
}
737
}
738
739
this->prevButtonMasks = this->buttonMasks;
740
this->buttonMasks = keyState[this->controllerID];
741
742
int32 changedKeys = ~this->prevButtonMasks & (this->buttonMasks ^ this->prevButtonMasks);
743
if (changedKeys) {
744
this->inactiveTimer[0] = 0;
745
this->anyPress = true;
746
}
747
else {
748
++this->inactiveTimer[0];
749
this->anyPress = 0;
750
}
751
752
if ((changedKeys & KEYMASK_A) || (changedKeys & KEYMASK_START))
753
this->inactiveTimer[1] = 0;
754
else
755
++this->inactiveTimer[1];
756
757
this->stateUp = (this->buttonMasks & KEYMASK_UP) != 0;
758
this->stateDown = (this->buttonMasks & KEYMASK_DOWN) != 0;
759
this->stateLeft = (this->buttonMasks & KEYMASK_LEFT) != 0;
760
this->stateRight = (this->buttonMasks & KEYMASK_RIGHT) != 0;
761
this->stateA = (this->buttonMasks & KEYMASK_A) != 0;
762
this->stateB = (this->buttonMasks & KEYMASK_B) != 0;
763
this->stateC = (this->buttonMasks & KEYMASK_C) != 0;
764
this->stateX = (this->buttonMasks & KEYMASK_X) != 0;
765
this->stateY = (this->buttonMasks & KEYMASK_Y) != 0;
766
this->stateZ = (this->buttonMasks & KEYMASK_Z) != 0;
767
this->stateStart = (this->buttonMasks & KEYMASK_START) != 0;
768
this->stateSelect = (this->buttonMasks & KEYMASK_SELECT) != 0;
769
770
this->ProcessInput(CONT_ANY);
771
}
772
773
void RSDK::SKU::InputDeviceKeyboard::ProcessInput(int32 controllerID)
774
{
775
ControllerState *cont = &controller[controllerID];
776
777
cont->keyUp.press |= this->stateUp;
778
cont->keyDown.press |= this->stateDown;
779
cont->keyLeft.press |= this->stateLeft;
780
cont->keyRight.press |= this->stateRight;
781
cont->keyA.press |= this->stateA;
782
cont->keyB.press |= this->stateB;
783
cont->keyC.press |= this->stateC;
784
cont->keyX.press |= this->stateX;
785
cont->keyY.press |= this->stateY;
786
cont->keyZ.press |= this->stateZ;
787
cont->keyStart.press |= this->stateStart;
788
cont->keySelect.press |= this->stateSelect;
789
}
790
791
void RSDK::SKU::InitKeyboardInputAPI()
792
{
793
char idBuffer[0x10];
794
for (int32 i = 0; i < PLAYER_COUNT; ++i) {
795
sprintf_s(idBuffer, sizeof(idBuffer), "KBDevice%d", i);
796
uint32 id = 0;
797
GenerateHashCRC(&id, idBuffer);
798
799
InputDeviceKeyboard *device = InitKeyboardDevice(id);
800
if (device) {
801
device->controllerID = i;
802
// add the keyboard "device" id to the type as its lowest byte
803
device->gamepadType |= i + 1;
804
}
805
}
806
}
807
808
void RSDK::SKU::UpdateKeyState(int32 keyCode)
809
{
810
#if RETRO_RENDERDEVICE_SDL2
811
keyCode = SDLToWinAPIMappings(keyCode);
812
#elif RETRO_INPUTDEVICE_GLFW
813
keyCode = GLFWToWinAPIMappings(keyCode);
814
#endif
815
816
// invalid key
817
if (keyCode == KEYMAP_NO_MAPPING)
818
return;
819
820
for (int32 i = 1; i <= PLAYER_COUNT; ++i) {
821
InputState *buttons[] = {
822
&controller[i].keyUp, &controller[i].keyDown, &controller[i].keyLeft, &controller[i].keyRight,
823
&controller[i].keyA, &controller[i].keyB, &controller[i].keyC, &controller[i].keyX,
824
&controller[i].keyY, &controller[i].keyZ, &controller[i].keyStart, &controller[i].keySelect,
825
};
826
827
int32 keyMasks[] = {
828
KEYMASK_UP, KEYMASK_DOWN, KEYMASK_LEFT, KEYMASK_RIGHT, KEYMASK_A, KEYMASK_B,
829
KEYMASK_C, KEYMASK_X, KEYMASK_Y, KEYMASK_Z, KEYMASK_START, KEYMASK_SELECT,
830
};
831
832
for (int32 k = 0; k < KEY_MAX; k++) {
833
if (keyCode == buttons[k]->keyMap)
834
keyState[i - 1] |= keyMasks[k];
835
else if (buttons[k]->keyMap == -1)
836
buttons[k]->keyMap = keyCode;
837
}
838
}
839
}
840
841
void RSDK::SKU::ClearKeyState(int32 keyCode)
842
{
843
#if RETRO_RENDERDEVICE_SDL2
844
keyCode = SDLToWinAPIMappings(keyCode);
845
#elif RETRO_INPUTDEVICE_GLFW
846
keyCode = GLFWToWinAPIMappings(keyCode);
847
#endif
848
849
for (int32 i = 1; i <= PLAYER_COUNT; ++i) {
850
InputState *buttons[] = {
851
&controller[i].keyUp, &controller[i].keyDown, &controller[i].keyLeft, &controller[i].keyRight,
852
&controller[i].keyA, &controller[i].keyB, &controller[i].keyC, &controller[i].keyX,
853
&controller[i].keyY, &controller[i].keyZ, &controller[i].keyStart, &controller[i].keySelect,
854
};
855
856
int32 keyMasks[] = {
857
KEYMASK_UP, KEYMASK_DOWN, KEYMASK_LEFT, KEYMASK_RIGHT, KEYMASK_A, KEYMASK_B,
858
KEYMASK_C, KEYMASK_X, KEYMASK_Y, KEYMASK_Z, KEYMASK_START, KEYMASK_SELECT,
859
};
860
861
for (int32 k = 0; k < KEY_MAX; k++) {
862
if (keyCode == buttons[k]->keyMap)
863
keyState[i - 1] &= ~keyMasks[k];
864
}
865
}
866
}
867
868
#if !RETRO_REV02
869
void RSDK::SKU::HandleSpecialKeys()
870
{
871
if (specialKeyStates[0] || specialKeyStates[3]) {
872
touchInfo.pausePress = !touchInfo.pauseHold;
873
touchInfo.pauseHold = true;
874
}
875
else {
876
touchInfo.pausePress = false;
877
touchInfo.pauseHold = false;
878
}
879
880
if (buttonDownCount) {
881
touchInfo.anyKeyHold = true;
882
touchInfo.anyKeyPress = prevButtonDownCount < buttonDownCount;
883
}
884
else {
885
touchInfo.anyKeyPress = false;
886
touchInfo.anyKeyHold = false;
887
}
888
889
prevButtonDownCount = buttonDownCount;
890
for (int32 k = 0; k < 4; ++k) prevSpecialKeyStates[k] = specialKeyStates[k];
891
}
892
#endif
893