CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
hrydgard

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: hrydgard/ppsspp
Path: blob/master/Core/KeyMapDefaults.cpp
Views: 1401
1
#include "ppsspp_config.h"
2
3
#include "Common/CommonFuncs.h"
4
#include "Common/Input/KeyCodes.h"
5
#include "Common/Input/InputState.h"
6
#include "Common/System/System.h"
7
#include "Core/KeyMapDefaults.h"
8
#include "Core/KeyMap.h"
9
10
#include "Core/HLE/sceCtrl.h"
11
12
namespace KeyMap {
13
14
struct DefMappingStruct {
15
int pspKey;
16
int keyOrAxis;
17
int direction; // if 0, it's a key, otherwise an axis.
18
};
19
20
static const DefMappingStruct defaultQwertyKeyboardKeyMap[] = {
21
{CTRL_SQUARE, NKCODE_A},
22
{CTRL_TRIANGLE, NKCODE_S},
23
{CTRL_CIRCLE, NKCODE_X},
24
{CTRL_CROSS, NKCODE_Z},
25
{CTRL_LTRIGGER, NKCODE_Q},
26
{CTRL_RTRIGGER, NKCODE_W},
27
28
{CTRL_START, NKCODE_SPACE},
29
#ifdef _WIN32
30
{CTRL_SELECT, NKCODE_V},
31
#else
32
{CTRL_SELECT, NKCODE_ENTER},
33
#endif
34
{CTRL_UP , NKCODE_DPAD_UP},
35
{CTRL_DOWN , NKCODE_DPAD_DOWN},
36
{CTRL_LEFT , NKCODE_DPAD_LEFT},
37
{CTRL_RIGHT, NKCODE_DPAD_RIGHT},
38
{VIRTKEY_AXIS_Y_MAX, NKCODE_I},
39
{VIRTKEY_AXIS_Y_MIN, NKCODE_K},
40
{VIRTKEY_AXIS_X_MIN, NKCODE_J},
41
{VIRTKEY_AXIS_X_MAX, NKCODE_L},
42
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
43
{VIRTKEY_FASTFORWARD, NKCODE_TAB},
44
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
45
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
46
{VIRTKEY_REWIND , NKCODE_DEL},
47
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
48
};
49
50
static const DefMappingStruct defaultAzertyKeyboardKeyMap[] = {
51
{CTRL_SQUARE, NKCODE_Q},
52
{CTRL_TRIANGLE, NKCODE_S},
53
{CTRL_CIRCLE, NKCODE_X},
54
{CTRL_CROSS, NKCODE_W},
55
{CTRL_LTRIGGER, NKCODE_A},
56
{CTRL_RTRIGGER, NKCODE_Z},
57
58
{CTRL_START, NKCODE_SPACE},
59
#ifdef _WIN32
60
{CTRL_SELECT, NKCODE_V},
61
#else
62
{CTRL_SELECT, NKCODE_ENTER},
63
#endif
64
{CTRL_UP , NKCODE_DPAD_UP},
65
{CTRL_DOWN , NKCODE_DPAD_DOWN},
66
{CTRL_LEFT , NKCODE_DPAD_LEFT},
67
{CTRL_RIGHT, NKCODE_DPAD_RIGHT},
68
{VIRTKEY_AXIS_Y_MAX, NKCODE_I},
69
{VIRTKEY_AXIS_Y_MIN, NKCODE_K},
70
{VIRTKEY_AXIS_X_MIN, NKCODE_J},
71
{VIRTKEY_AXIS_X_MAX, NKCODE_L},
72
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
73
{VIRTKEY_FASTFORWARD, NKCODE_TAB},
74
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
75
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
76
{VIRTKEY_REWIND , NKCODE_DEL},
77
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
78
};
79
80
static const DefMappingStruct defaultQwertzKeyboardKeyMap[] = {
81
{CTRL_SQUARE, NKCODE_A},
82
{CTRL_TRIANGLE, NKCODE_S},
83
{CTRL_CIRCLE, NKCODE_X},
84
{CTRL_CROSS, NKCODE_Y},
85
{CTRL_LTRIGGER, NKCODE_Q},
86
{CTRL_RTRIGGER, NKCODE_W},
87
88
{CTRL_START, NKCODE_SPACE},
89
#ifdef _WIN32
90
{CTRL_SELECT, NKCODE_V},
91
#else
92
{CTRL_SELECT, NKCODE_ENTER},
93
#endif
94
{CTRL_UP , NKCODE_DPAD_UP},
95
{CTRL_DOWN , NKCODE_DPAD_DOWN},
96
{CTRL_LEFT , NKCODE_DPAD_LEFT},
97
{CTRL_RIGHT, NKCODE_DPAD_RIGHT},
98
{VIRTKEY_AXIS_Y_MAX, NKCODE_I},
99
{VIRTKEY_AXIS_Y_MIN, NKCODE_K},
100
{VIRTKEY_AXIS_X_MIN, NKCODE_J},
101
{VIRTKEY_AXIS_X_MAX, NKCODE_L},
102
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
103
{VIRTKEY_FASTFORWARD, NKCODE_TAB},
104
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
105
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
106
{VIRTKEY_REWIND , NKCODE_DEL},
107
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
108
};
109
110
static const DefMappingStruct defaultXInputKeyMap[] = {
111
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
112
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
113
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, -1},
114
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, +1},
115
{CTRL_CROSS , NKCODE_BUTTON_A},
116
{CTRL_CIRCLE , NKCODE_BUTTON_B},
117
{CTRL_SQUARE , NKCODE_BUTTON_X},
118
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
119
{CTRL_UP , NKCODE_DPAD_UP},
120
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
121
{CTRL_DOWN , NKCODE_DPAD_DOWN},
122
{CTRL_LEFT , NKCODE_DPAD_LEFT},
123
{CTRL_START , NKCODE_BUTTON_START},
124
{CTRL_SELECT , NKCODE_BUTTON_SELECT},
125
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
126
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
127
{VIRTKEY_FASTFORWARD , JOYSTICK_AXIS_RTRIGGER, +1},
128
{VIRTKEY_SPEED_TOGGLE, NKCODE_BUTTON_THUMBR},
129
{VIRTKEY_PAUSE , JOYSTICK_AXIS_LTRIGGER, +1},
130
{VIRTKEY_PAUSE, NKCODE_HOME},
131
{VIRTKEY_FASTFORWARD , JOYSTICK_AXIS_GAS, +1},
132
{VIRTKEY_PAUSE , JOYSTICK_AXIS_BRAKE, +1},
133
};
134
135
static const DefMappingStruct defaultShieldKeyMap[] = {
136
{CTRL_CROSS, NKCODE_BUTTON_A},
137
{CTRL_CIRCLE ,NKCODE_BUTTON_B},
138
{CTRL_SQUARE ,NKCODE_BUTTON_X},
139
{CTRL_TRIANGLE ,NKCODE_BUTTON_Y},
140
{CTRL_START, NKCODE_BUTTON_START},
141
{CTRL_SELECT, JOYSTICK_AXIS_LTRIGGER, +1},
142
{CTRL_LTRIGGER, NKCODE_BUTTON_L1},
143
{CTRL_RTRIGGER, NKCODE_BUTTON_R1},
144
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
145
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
146
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
147
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
148
{CTRL_LEFT, JOYSTICK_AXIS_HAT_X, -1},
149
{CTRL_RIGHT, JOYSTICK_AXIS_HAT_X, +1},
150
{CTRL_UP, JOYSTICK_AXIS_HAT_Y, -1},
151
{CTRL_DOWN, JOYSTICK_AXIS_HAT_Y, +1},
152
{VIRTKEY_FASTFORWARD, JOYSTICK_AXIS_RTRIGGER, +1 },
153
{VIRTKEY_PAUSE, NKCODE_BACK },
154
};
155
156
static const DefMappingStruct defaultMOQI7SKeyMap[] = {
157
{CTRL_CROSS, NKCODE_BUTTON_A},
158
{CTRL_CIRCLE, NKCODE_BUTTON_B},
159
{CTRL_SQUARE, NKCODE_BUTTON_X},
160
{CTRL_TRIANGLE, NKCODE_BUTTON_Y},
161
{CTRL_START, JOYSTICK_AXIS_Z, +1},
162
{CTRL_SELECT, JOYSTICK_AXIS_Z, -1},
163
{CTRL_LTRIGGER, NKCODE_BUTTON_L1},
164
{CTRL_RTRIGGER, NKCODE_BUTTON_R1},
165
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
166
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
167
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
168
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
169
{CTRL_LEFT, JOYSTICK_AXIS_HAT_X, -1},
170
{CTRL_RIGHT, JOYSTICK_AXIS_HAT_X, +1},
171
{CTRL_UP, JOYSTICK_AXIS_HAT_Y, -1},
172
{CTRL_DOWN, JOYSTICK_AXIS_HAT_Y, +1},
173
{VIRTKEY_FASTFORWARD, JOYSTICK_AXIS_RZ, +1 },
174
{VIRTKEY_PAUSE, NKCODE_BACK },
175
};
176
177
static const DefMappingStruct defaultAndroidXboxControllerMap[] = {
178
{CTRL_CROSS , NKCODE_BUTTON_A},
179
{CTRL_CIRCLE , NKCODE_BUTTON_B},
180
{CTRL_SQUARE , NKCODE_BUTTON_X},
181
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
182
// The hat for DPAD is standard for bluetooth pads, which is the most likely pads on Android I think.
183
{CTRL_LEFT , NKCODE_DPAD_LEFT},
184
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
185
{CTRL_UP , NKCODE_DPAD_UP},
186
{CTRL_DOWN , NKCODE_DPAD_DOWN},
187
{CTRL_START , NKCODE_BUTTON_START},
188
{CTRL_SELECT , NKCODE_BACK},
189
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
190
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
191
{VIRTKEY_FASTFORWARD , JOYSTICK_AXIS_RTRIGGER, +1},
192
{VIRTKEY_PAUSE , JOYSTICK_AXIS_LTRIGGER, +1},
193
{VIRTKEY_FASTFORWARD , JOYSTICK_AXIS_GAS, +1},
194
{VIRTKEY_PAUSE , JOYSTICK_AXIS_BRAKE, +1},
195
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
196
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
197
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
198
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
199
};
200
201
// Retroid reports its controller as "Retro Station Controller".
202
// It's very similar to the Android Xbox mapping, just with main buttons swapped around.
203
static const DefMappingStruct defaultRetroStationControllerMap[] = {
204
{CTRL_CROSS , NKCODE_BUTTON_B},
205
{CTRL_CIRCLE , NKCODE_BUTTON_A},
206
{CTRL_SQUARE , NKCODE_BUTTON_Y},
207
{CTRL_TRIANGLE , NKCODE_BUTTON_X},
208
// The hat for DPAD is standard for bluetooth pads, which is the most likely pads on Android I think.
209
{CTRL_LEFT , NKCODE_DPAD_LEFT},
210
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
211
{CTRL_UP , NKCODE_DPAD_UP},
212
{CTRL_DOWN , NKCODE_DPAD_DOWN},
213
{CTRL_START , NKCODE_BUTTON_START},
214
{CTRL_SELECT , NKCODE_BACK},
215
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
216
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
217
{VIRTKEY_FASTFORWARD , JOYSTICK_AXIS_RTRIGGER, +1},
218
{VIRTKEY_PAUSE , JOYSTICK_AXIS_LTRIGGER, +1},
219
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
220
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
221
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
222
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
223
};
224
225
226
static const DefMappingStruct defaultPadMapAndroid[] = {
227
{CTRL_CROSS , NKCODE_BUTTON_A},
228
{CTRL_CIRCLE , NKCODE_BUTTON_B},
229
{CTRL_SQUARE , NKCODE_BUTTON_X},
230
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
231
// The hat for DPAD is standard for bluetooth pads, which is the most likely pads on Android I think.
232
{CTRL_LEFT , JOYSTICK_AXIS_HAT_X, -1},
233
{CTRL_LEFT , NKCODE_DPAD_LEFT},
234
{CTRL_RIGHT , JOYSTICK_AXIS_HAT_X, +1},
235
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
236
{CTRL_UP , JOYSTICK_AXIS_HAT_Y, -1},
237
{CTRL_UP , NKCODE_DPAD_UP},
238
{CTRL_DOWN , JOYSTICK_AXIS_HAT_Y, +1},
239
{CTRL_DOWN , NKCODE_DPAD_DOWN},
240
241
{CTRL_START , NKCODE_BUTTON_START},
242
{CTRL_SELECT , NKCODE_BUTTON_SELECT},
243
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
244
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
245
{VIRTKEY_FASTFORWARD , JOYSTICK_AXIS_RTRIGGER, +1},
246
{VIRTKEY_FASTFORWARD , NKCODE_BUTTON_R2},
247
{VIRTKEY_PAUSE , JOYSTICK_AXIS_LTRIGGER, +1},
248
{VIRTKEY_PAUSE , NKCODE_BUTTON_L2 },
249
{VIRTKEY_FASTFORWARD , JOYSTICK_AXIS_GAS, +1},
250
{VIRTKEY_PAUSE , JOYSTICK_AXIS_BRAKE, +1},
251
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
252
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
253
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
254
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
255
};
256
257
static const DefMappingStruct defaultPadMap[] = {
258
{CTRL_CROSS , NKCODE_BUTTON_2},
259
{CTRL_CIRCLE , NKCODE_BUTTON_3},
260
{CTRL_SQUARE , NKCODE_BUTTON_4},
261
{CTRL_TRIANGLE , NKCODE_BUTTON_1},
262
{CTRL_UP , NKCODE_DPAD_UP},
263
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
264
{CTRL_DOWN , NKCODE_DPAD_DOWN},
265
{CTRL_LEFT , NKCODE_DPAD_LEFT},
266
{CTRL_START , NKCODE_BUTTON_10},
267
{CTRL_SELECT , NKCODE_BUTTON_9},
268
{CTRL_LTRIGGER , NKCODE_BUTTON_7},
269
{CTRL_RTRIGGER , NKCODE_BUTTON_8},
270
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
271
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
272
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
273
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
274
{VIRTKEY_PAUSE , NKCODE_BUTTON_SELECT },
275
{VIRTKEY_PAUSE , NKCODE_BUTTON_L2 },
276
};
277
278
static const DefMappingStruct defaultPadMapIOS[] = {
279
{CTRL_CROSS , NKCODE_BUTTON_2},
280
{CTRL_CIRCLE , NKCODE_BUTTON_3},
281
{CTRL_SQUARE , NKCODE_BUTTON_4},
282
{CTRL_TRIANGLE , NKCODE_BUTTON_1},
283
{CTRL_UP , NKCODE_DPAD_UP},
284
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
285
{CTRL_DOWN , NKCODE_DPAD_DOWN},
286
{CTRL_LEFT , NKCODE_DPAD_LEFT},
287
{CTRL_START , NKCODE_BUTTON_START},
288
{CTRL_SELECT , NKCODE_BUTTON_SELECT},
289
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
290
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
291
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
292
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
293
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
294
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
295
{VIRTKEY_PAUSE , NKCODE_BUTTON_THUMBL },
296
{VIRTKEY_FASTFORWARD , JOYSTICK_AXIS_RTRIGGER, +1},
297
};
298
299
static const DefMappingStruct defaultOuyaMap[] = {
300
{CTRL_CROSS , NKCODE_BUTTON_A},
301
{CTRL_CIRCLE , NKCODE_BUTTON_B},
302
{CTRL_SQUARE , NKCODE_BUTTON_X},
303
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
304
{CTRL_UP , NKCODE_DPAD_UP},
305
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
306
{CTRL_DOWN , NKCODE_DPAD_DOWN},
307
{CTRL_LEFT , NKCODE_DPAD_LEFT},
308
{CTRL_START , NKCODE_BUTTON_R2},
309
{CTRL_SELECT , NKCODE_BUTTON_L2},
310
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
311
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
312
{VIRTKEY_FASTFORWARD , NKCODE_BUTTON_THUMBL},
313
{VIRTKEY_PAUSE , NKCODE_BUTTON_THUMBR},
314
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
315
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
316
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
317
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
318
};
319
320
static const DefMappingStruct defaultXperiaPlay[] = {
321
{CTRL_CROSS , NKCODE_BUTTON_CROSS},
322
{CTRL_CIRCLE , NKCODE_BUTTON_CIRCLE},
323
{CTRL_SQUARE , NKCODE_BUTTON_X},
324
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
325
{CTRL_UP , NKCODE_DPAD_UP},
326
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
327
{CTRL_DOWN , NKCODE_DPAD_DOWN},
328
{CTRL_LEFT , NKCODE_DPAD_LEFT},
329
{CTRL_START , NKCODE_BUTTON_START},
330
{CTRL_SELECT , NKCODE_BUTTON_SELECT},
331
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
332
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
333
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
334
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
335
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, -1},
336
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, +1},
337
};
338
339
static const DefMappingStruct defaultVRLeftController[] = {
340
{CTRL_UP , NKCODE_DPAD_UP},
341
{CTRL_DOWN , NKCODE_DPAD_DOWN},
342
{CTRL_LEFT , NKCODE_DPAD_LEFT},
343
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
344
{CTRL_SELECT , NKCODE_BUTTON_THUMBL},
345
{CTRL_LTRIGGER , NKCODE_BUTTON_X},
346
{CTRL_RTRIGGER , NKCODE_BUTTON_Y},
347
{CTRL_SCREEN , NKCODE_ALT_LEFT},
348
};
349
350
static const DefMappingStruct defaultVRRightController[] = {
351
{CTRL_CIRCLE , NKCODE_ALT_RIGHT},
352
{CTRL_CROSS , NKCODE_ENTER},
353
{CTRL_SQUARE , NKCODE_BUTTON_B},
354
{CTRL_TRIANGLE , NKCODE_BUTTON_A},
355
{CTRL_START , NKCODE_BUTTON_THUMBR},
356
{VIRTKEY_AXIS_Y_MAX, NKCODE_DPAD_UP},
357
{VIRTKEY_AXIS_Y_MIN, NKCODE_DPAD_DOWN},
358
{VIRTKEY_AXIS_X_MIN, NKCODE_DPAD_LEFT},
359
{VIRTKEY_AXIS_X_MAX, NKCODE_DPAD_RIGHT},
360
};
361
362
static void SetDefaultKeyMap(InputDeviceID deviceId, const DefMappingStruct *array, size_t count, bool replace) {
363
for (size_t i = 0; i < count; i++) {
364
if (array[i].direction == 0)
365
SetInputMapping(array[i].pspKey, MultiInputMapping(InputMapping(deviceId, array[i].keyOrAxis)), replace);
366
else
367
SetInputMapping(array[i].pspKey, MultiInputMapping(InputMapping(deviceId, array[i].keyOrAxis, array[i].direction)), replace);
368
}
369
g_seenDeviceIds.insert(deviceId);
370
}
371
372
void SetDefaultKeyMap(DefaultMaps dmap, bool replace) {
373
switch (dmap) {
374
case DEFAULT_MAPPING_KEYBOARD:
375
{
376
int keyboardLayout = (int)System_GetPropertyInt(SYSPROP_KEYBOARD_LAYOUT);
377
switch (keyboardLayout) {
378
case KEYBOARD_LAYOUT_QWERTZ:
379
SetDefaultKeyMap(DEVICE_ID_KEYBOARD, defaultQwertzKeyboardKeyMap, ARRAY_SIZE(defaultQwertzKeyboardKeyMap), replace);
380
break;
381
case KEYBOARD_LAYOUT_AZERTY:
382
SetDefaultKeyMap(DEVICE_ID_KEYBOARD, defaultAzertyKeyboardKeyMap, ARRAY_SIZE(defaultAzertyKeyboardKeyMap), replace);
383
break;
384
case KEYBOARD_LAYOUT_QWERTY:
385
default:
386
SetDefaultKeyMap(DEVICE_ID_KEYBOARD, defaultQwertyKeyboardKeyMap, ARRAY_SIZE(defaultQwertyKeyboardKeyMap), replace);
387
break;
388
}
389
}
390
break;
391
case DEFAULT_MAPPING_XINPUT:
392
SetDefaultKeyMap(DEVICE_ID_XINPUT_0, defaultXInputKeyMap, ARRAY_SIZE(defaultXInputKeyMap), replace);
393
break;
394
case DEFAULT_MAPPING_SHIELD:
395
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultShieldKeyMap, ARRAY_SIZE(defaultShieldKeyMap), replace);
396
break;
397
case DEFAULT_MAPPING_MOQI_I7S:
398
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultMOQI7SKeyMap, ARRAY_SIZE(defaultMOQI7SKeyMap), replace);
399
break;
400
case DEFAULT_MAPPING_PAD:
401
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultPadMap, ARRAY_SIZE(defaultPadMap), replace);
402
break;
403
case DEFAULT_MAPPING_ANDROID_PAD:
404
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultPadMapAndroid, ARRAY_SIZE(defaultPadMapAndroid), replace);
405
break;
406
case DEFAULT_MAPPING_IOS_PAD:
407
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultPadMapIOS, ARRAY_SIZE(defaultPadMapIOS), replace);
408
break;
409
case DEFAULT_MAPPING_OUYA:
410
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultOuyaMap, ARRAY_SIZE(defaultOuyaMap), replace);
411
break;
412
case DEFAULT_MAPPING_XPERIA_PLAY:
413
SetDefaultKeyMap(DEVICE_ID_DEFAULT, defaultXperiaPlay, ARRAY_SIZE(defaultXperiaPlay), replace);
414
break;
415
case DEFAULT_MAPPING_ANDROID_XBOX:
416
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultAndroidXboxControllerMap, ARRAY_SIZE(defaultAndroidXboxControllerMap), replace);
417
break;
418
case DEFAULT_MAPPING_RETRO_STATION_CONTROLLER:
419
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultRetroStationControllerMap, ARRAY_SIZE(defaultRetroStationControllerMap), replace);
420
break;
421
case DEFAULT_MAPPING_VR_HEADSET:
422
SetDefaultKeyMap(DEVICE_ID_XR_CONTROLLER_LEFT, defaultVRLeftController, ARRAY_SIZE(defaultVRLeftController), replace);
423
SetDefaultKeyMap(DEVICE_ID_XR_CONTROLLER_RIGHT, defaultVRRightController, ARRAY_SIZE(defaultVRRightController), replace);
424
break;
425
}
426
427
UpdateNativeMenuKeys();
428
}
429
430
} // namespace KeyMap
431
432