mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Move keymap defaults to a separate file. Not exactly a clean separation though.
This commit is contained in:
parent
8f86ddba2a
commit
8cab56c948
12 changed files with 376 additions and 333 deletions
|
@ -1604,6 +1604,8 @@ add_library(${CoreLibName} ${CoreLinkType}
|
|||
Core/Instance.h
|
||||
Core/KeyMap.cpp
|
||||
Core/KeyMap.h
|
||||
Core/KeyMapDefaults.cpp
|
||||
Core/KeyMapDefaults.h
|
||||
Core/ThreadEventQueue.h
|
||||
Core/WebServer.cpp
|
||||
Core/WebServer.h
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include "Common/Math/math_util.h"
|
||||
#include "Common/TimeUtil.h"
|
||||
#include "Common/Log.h"
|
||||
|
||||
#include "Core/KeyMap.h"
|
||||
#include "Core/ControlMapper.h"
|
||||
|
@ -79,6 +80,8 @@ bool ControlMapper::Key(const KeyInput &key, bool *pauseTrigger) {
|
|||
pspKey(pspKeys[i], key.flags);
|
||||
}
|
||||
|
||||
INFO_LOG(SYSTEM, "Key: %d DeviceId: %d", key.keyCode, key.deviceId);
|
||||
|
||||
if (!pspKeys.size() || key.deviceId == DEVICE_ID_DEFAULT) {
|
||||
if ((key.flags & KEY_DOWN) && key.keyCode == NKCODE_BACK) {
|
||||
*pauseTrigger = true;
|
||||
|
|
|
@ -541,6 +541,7 @@
|
|||
<ClCompile Include="HW\Camera.cpp" />
|
||||
<ClCompile Include="Instance.cpp" />
|
||||
<ClCompile Include="KeyMap.cpp" />
|
||||
<ClCompile Include="KeyMapDefaults.cpp" />
|
||||
<ClCompile Include="MemFault.cpp" />
|
||||
<ClCompile Include="MIPS\fake\FakeJit.cpp" />
|
||||
<ClCompile Include="MIPS\IR\IRAsm.cpp" />
|
||||
|
@ -1098,6 +1099,7 @@
|
|||
<ClInclude Include="HW\Camera.h" />
|
||||
<ClInclude Include="Instance.h" />
|
||||
<ClInclude Include="KeyMap.h" />
|
||||
<ClInclude Include="KeyMapDefaults.h" />
|
||||
<ClInclude Include="MemFault.h" />
|
||||
<ClInclude Include="MIPS\fake\FakeJit.h" />
|
||||
<ClInclude Include="MIPS\IR\IRFrontend.h" />
|
||||
|
|
|
@ -1178,6 +1178,9 @@
|
|||
<ClCompile Include="ControlMapper.cpp">
|
||||
<Filter>Core</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="KeyMapDefaults.cpp">
|
||||
<Filter>Core</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="ELF\ElfReader.h">
|
||||
|
@ -1898,6 +1901,9 @@
|
|||
<ClInclude Include="ControlMapper.h">
|
||||
<Filter>Core</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="KeyMapDefaults.h">
|
||||
<Filter>Core</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="CMakeLists.txt" />
|
||||
|
|
325
Core/KeyMap.cpp
325
Core/KeyMap.cpp
|
@ -36,267 +36,19 @@
|
|||
#include "Core/HLE/sceUtility.h"
|
||||
#include "Core/Config.h"
|
||||
#include "Core/KeyMap.h"
|
||||
#include "Core/KeyMapDefaults.h"
|
||||
|
||||
namespace KeyMap {
|
||||
|
||||
KeyDef AxisDef(int deviceId, int axisId, int direction);
|
||||
|
||||
struct DefMappingStruct {
|
||||
int pspKey;
|
||||
int key;
|
||||
int direction;
|
||||
};
|
||||
|
||||
KeyMapping g_controllerMap;
|
||||
int g_controllerMapGeneration = 0;
|
||||
std::set<std::string> g_seenPads;
|
||||
static std::set<int> g_seenDeviceIds;
|
||||
std::set<int> g_seenDeviceIds;
|
||||
|
||||
bool g_swapped_keys = false;
|
||||
|
||||
static const DefMappingStruct defaultQwertyKeyboardKeyMap[] = {
|
||||
{CTRL_SQUARE, NKCODE_A},
|
||||
{CTRL_TRIANGLE, NKCODE_S},
|
||||
{CTRL_CIRCLE, NKCODE_X},
|
||||
{CTRL_CROSS, NKCODE_Z},
|
||||
{CTRL_LTRIGGER, NKCODE_Q},
|
||||
{CTRL_RTRIGGER, NKCODE_W},
|
||||
|
||||
{CTRL_START, NKCODE_SPACE},
|
||||
#ifdef _WIN32
|
||||
{CTRL_SELECT, NKCODE_V},
|
||||
#else
|
||||
{CTRL_SELECT, NKCODE_ENTER},
|
||||
#endif
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_RIGHT, NKCODE_DPAD_RIGHT},
|
||||
{VIRTKEY_AXIS_Y_MAX, NKCODE_I},
|
||||
{VIRTKEY_AXIS_Y_MIN, NKCODE_K},
|
||||
{VIRTKEY_AXIS_X_MIN, NKCODE_J},
|
||||
{VIRTKEY_AXIS_X_MAX, NKCODE_L},
|
||||
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
|
||||
{VIRTKEY_FASTFORWARD, NKCODE_TAB},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
|
||||
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND , NKCODE_DEL},
|
||||
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
|
||||
};
|
||||
|
||||
static const DefMappingStruct defaultAzertyKeyboardKeyMap[] = {
|
||||
{CTRL_SQUARE, NKCODE_Q},
|
||||
{CTRL_TRIANGLE, NKCODE_S},
|
||||
{CTRL_CIRCLE, NKCODE_X},
|
||||
{CTRL_CROSS, NKCODE_W},
|
||||
{CTRL_LTRIGGER, NKCODE_A},
|
||||
{CTRL_RTRIGGER, NKCODE_Z},
|
||||
|
||||
{CTRL_START, NKCODE_SPACE},
|
||||
#ifdef _WIN32
|
||||
{CTRL_SELECT, NKCODE_V},
|
||||
#else
|
||||
{CTRL_SELECT, NKCODE_ENTER},
|
||||
#endif
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_RIGHT, NKCODE_DPAD_RIGHT},
|
||||
{VIRTKEY_AXIS_Y_MAX, NKCODE_I},
|
||||
{VIRTKEY_AXIS_Y_MIN, NKCODE_K},
|
||||
{VIRTKEY_AXIS_X_MIN, NKCODE_J},
|
||||
{VIRTKEY_AXIS_X_MAX, NKCODE_L},
|
||||
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
|
||||
{VIRTKEY_FASTFORWARD, NKCODE_TAB},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
|
||||
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND , NKCODE_DEL},
|
||||
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
|
||||
};
|
||||
|
||||
static const DefMappingStruct defaultQwertzKeyboardKeyMap[] = {
|
||||
{CTRL_SQUARE, NKCODE_A},
|
||||
{CTRL_TRIANGLE, NKCODE_S},
|
||||
{CTRL_CIRCLE, NKCODE_X},
|
||||
{CTRL_CROSS, NKCODE_Y},
|
||||
{CTRL_LTRIGGER, NKCODE_Q},
|
||||
{CTRL_RTRIGGER, NKCODE_W},
|
||||
|
||||
{CTRL_START, NKCODE_SPACE},
|
||||
#ifdef _WIN32
|
||||
{CTRL_SELECT, NKCODE_V},
|
||||
#else
|
||||
{CTRL_SELECT, NKCODE_ENTER},
|
||||
#endif
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_RIGHT, NKCODE_DPAD_RIGHT},
|
||||
{VIRTKEY_AXIS_Y_MAX, NKCODE_I},
|
||||
{VIRTKEY_AXIS_Y_MIN, NKCODE_K},
|
||||
{VIRTKEY_AXIS_X_MIN, NKCODE_J},
|
||||
{VIRTKEY_AXIS_X_MAX, NKCODE_L},
|
||||
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
|
||||
{VIRTKEY_FASTFORWARD, NKCODE_TAB},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
|
||||
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND , NKCODE_DEL},
|
||||
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
|
||||
};
|
||||
|
||||
static const DefMappingStruct default360KeyMap[] = {
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, -1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, +1},
|
||||
{CTRL_CROSS , NKCODE_BUTTON_A},
|
||||
{CTRL_CIRCLE , NKCODE_BUTTON_B},
|
||||
{CTRL_SQUARE , NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_START , NKCODE_BUTTON_START},
|
||||
{CTRL_SELECT , NKCODE_BUTTON_SELECT},
|
||||
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_FASTFORWARD , JOYSTICK_AXIS_RTRIGGER, +1},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_BUTTON_THUMBR},
|
||||
{VIRTKEY_PAUSE , JOYSTICK_AXIS_LTRIGGER, +1},
|
||||
{VIRTKEY_PAUSE, NKCODE_HOME},
|
||||
};
|
||||
|
||||
static const DefMappingStruct defaultShieldKeyMap[] = {
|
||||
{CTRL_CROSS, NKCODE_BUTTON_A},
|
||||
{CTRL_CIRCLE ,NKCODE_BUTTON_B},
|
||||
{CTRL_SQUARE ,NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE ,NKCODE_BUTTON_Y},
|
||||
{CTRL_START, NKCODE_BUTTON_START},
|
||||
{CTRL_SELECT, JOYSTICK_AXIS_LTRIGGER, +1},
|
||||
{CTRL_LTRIGGER, NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER, NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
|
||||
{CTRL_LEFT, JOYSTICK_AXIS_HAT_X, -1},
|
||||
{CTRL_RIGHT, JOYSTICK_AXIS_HAT_X, +1},
|
||||
{CTRL_UP, JOYSTICK_AXIS_HAT_Y, -1},
|
||||
{CTRL_DOWN, JOYSTICK_AXIS_HAT_Y, +1},
|
||||
{VIRTKEY_SPEED_TOGGLE, JOYSTICK_AXIS_LTRIGGER, +1 },
|
||||
{VIRTKEY_FASTFORWARD, JOYSTICK_AXIS_RTRIGGER, +1 },
|
||||
{VIRTKEY_PAUSE, NKCODE_BACK },
|
||||
};
|
||||
|
||||
static const DefMappingStruct defaultMOQI7SKeyMap[] = {
|
||||
{CTRL_CROSS, NKCODE_BUTTON_A},
|
||||
{CTRL_CIRCLE, NKCODE_BUTTON_B},
|
||||
{CTRL_SQUARE, NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE, NKCODE_BUTTON_Y},
|
||||
{CTRL_START, JOYSTICK_AXIS_Z, +1},
|
||||
{CTRL_SELECT, JOYSTICK_AXIS_Z, -1},
|
||||
{CTRL_LTRIGGER, NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER, NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
|
||||
{CTRL_LEFT, JOYSTICK_AXIS_HAT_X, -1},
|
||||
{CTRL_RIGHT, JOYSTICK_AXIS_HAT_X, +1},
|
||||
{CTRL_UP, JOYSTICK_AXIS_HAT_Y, -1},
|
||||
{CTRL_DOWN, JOYSTICK_AXIS_HAT_Y, +1},
|
||||
{VIRTKEY_FASTFORWARD, JOYSTICK_AXIS_RZ, +1 },
|
||||
{VIRTKEY_PAUSE, NKCODE_BACK },
|
||||
};
|
||||
|
||||
static const DefMappingStruct defaultPadMap[] = {
|
||||
#if PPSSPP_PLATFORM(ANDROID)
|
||||
{CTRL_CROSS , NKCODE_BUTTON_A},
|
||||
{CTRL_CIRCLE , NKCODE_BUTTON_B},
|
||||
{CTRL_SQUARE , NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
|
||||
// The hat for DPAD is standard for bluetooth pads, which is the most likely pads on Android I think.
|
||||
{CTRL_LEFT , JOYSTICK_AXIS_HAT_X, -1},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_RIGHT , JOYSTICK_AXIS_HAT_X, +1},
|
||||
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
|
||||
{CTRL_UP , JOYSTICK_AXIS_HAT_Y, -1},
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_DOWN , JOYSTICK_AXIS_HAT_Y, +1},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_START , NKCODE_BUTTON_START},
|
||||
{CTRL_SELECT , NKCODE_BACK},
|
||||
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_FASTFORWARD , NKCODE_BUTTON_R2},
|
||||
{VIRTKEY_PAUSE , JOYSTICK_AXIS_LTRIGGER, +1},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_BUTTON_L2},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
|
||||
#else
|
||||
{CTRL_CROSS , NKCODE_BUTTON_2},
|
||||
{CTRL_CIRCLE , NKCODE_BUTTON_3},
|
||||
{CTRL_SQUARE , NKCODE_BUTTON_4},
|
||||
{CTRL_TRIANGLE , NKCODE_BUTTON_1},
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_START , NKCODE_BUTTON_10},
|
||||
{CTRL_SELECT , NKCODE_BUTTON_9},
|
||||
{CTRL_LTRIGGER , NKCODE_BUTTON_7},
|
||||
{CTRL_RTRIGGER , NKCODE_BUTTON_8},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
|
||||
{VIRTKEY_PAUSE , JOYSTICK_AXIS_LTRIGGER, +1},
|
||||
#endif
|
||||
};
|
||||
|
||||
static const DefMappingStruct defaultOuyaMap[] = {
|
||||
{CTRL_CROSS , NKCODE_BUTTON_A},
|
||||
{CTRL_CIRCLE , NKCODE_BUTTON_B},
|
||||
{CTRL_SQUARE , NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_START , NKCODE_BUTTON_R2},
|
||||
{CTRL_SELECT , NKCODE_BUTTON_L2},
|
||||
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_FASTFORWARD , NKCODE_BUTTON_THUMBL},
|
||||
{VIRTKEY_PAUSE , NKCODE_BUTTON_THUMBR},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
|
||||
};
|
||||
|
||||
static const DefMappingStruct defaultXperiaPlay[] = {
|
||||
{CTRL_CROSS , NKCODE_BUTTON_CROSS},
|
||||
{CTRL_CIRCLE , NKCODE_BUTTON_CIRCLE},
|
||||
{CTRL_SQUARE , NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_START , NKCODE_BUTTON_START},
|
||||
{CTRL_SELECT , NKCODE_BUTTON_SELECT},
|
||||
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, -1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, +1},
|
||||
};
|
||||
|
||||
void KeyCodesFromPspButton(int btn, std::vector<keycode_t> *keycodes) {
|
||||
for (auto i = g_controllerMap[btn].begin(), end = g_controllerMap[btn].end(); i != end; ++i) {
|
||||
keycodes->push_back((keycode_t)i->keyCode);
|
||||
|
@ -368,79 +120,6 @@ void UpdateNativeMenuKeys() {
|
|||
SetAnalogFlipY(flipYByDeviceId);
|
||||
}
|
||||
|
||||
static void SetDefaultKeyMap(int deviceId, const DefMappingStruct *array, size_t count, bool replace) {
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
if (array[i].direction == 0)
|
||||
SetKeyMapping(array[i].pspKey, KeyDef(deviceId, array[i].key), replace);
|
||||
else
|
||||
SetAxisMapping(array[i].pspKey, deviceId, array[i].key, array[i].direction, replace);
|
||||
}
|
||||
g_seenDeviceIds.insert(deviceId);
|
||||
}
|
||||
|
||||
void SetDefaultKeyMap(DefaultMaps dmap, bool replace) {
|
||||
switch (dmap) {
|
||||
case DEFAULT_MAPPING_KEYBOARD:
|
||||
{
|
||||
bool azerty = false;
|
||||
bool qwertz = false;
|
||||
#if defined(SDL)
|
||||
char q, w, y;
|
||||
q = SDL_GetKeyFromScancode(SDL_SCANCODE_Q);
|
||||
w = SDL_GetKeyFromScancode(SDL_SCANCODE_W);
|
||||
y = SDL_GetKeyFromScancode(SDL_SCANCODE_Y);
|
||||
if (q == 'a' && w == 'z' && y == 'y')
|
||||
azerty = true;
|
||||
else if (q == 'q' && w == 'w' && y == 'z')
|
||||
qwertz = true;
|
||||
#elif defined(USING_WIN_UI)
|
||||
HKL localeId = GetKeyboardLayout(0);
|
||||
// TODO: Is this list complete enough?
|
||||
switch ((int)(intptr_t)localeId & 0xFFFF) {
|
||||
case 0x407:
|
||||
qwertz = true;
|
||||
break;
|
||||
case 0x040c:
|
||||
case 0x080c:
|
||||
case 0x1009:
|
||||
azerty = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (azerty) {
|
||||
SetDefaultKeyMap(DEVICE_ID_KEYBOARD, defaultAzertyKeyboardKeyMap, ARRAY_SIZE(defaultAzertyKeyboardKeyMap), replace);
|
||||
} else if (qwertz) {
|
||||
SetDefaultKeyMap(DEVICE_ID_KEYBOARD, defaultQwertzKeyboardKeyMap, ARRAY_SIZE(defaultQwertzKeyboardKeyMap), replace);
|
||||
} else {
|
||||
SetDefaultKeyMap(DEVICE_ID_KEYBOARD, defaultQwertyKeyboardKeyMap, ARRAY_SIZE(defaultQwertyKeyboardKeyMap), replace);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DEFAULT_MAPPING_X360:
|
||||
SetDefaultKeyMap(DEVICE_ID_X360_0, default360KeyMap, ARRAY_SIZE(default360KeyMap), replace);
|
||||
break;
|
||||
case DEFAULT_MAPPING_SHIELD:
|
||||
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultShieldKeyMap, ARRAY_SIZE(defaultShieldKeyMap), replace);
|
||||
break;
|
||||
case DEFAULT_MAPPING_MOQI_I7S:
|
||||
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultMOQI7SKeyMap, ARRAY_SIZE(defaultMOQI7SKeyMap), replace);
|
||||
break;
|
||||
case DEFAULT_MAPPING_PAD:
|
||||
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultPadMap, ARRAY_SIZE(defaultPadMap), replace);
|
||||
break;
|
||||
case DEFAULT_MAPPING_OUYA:
|
||||
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultOuyaMap, ARRAY_SIZE(defaultOuyaMap), replace);
|
||||
break;
|
||||
case DEFAULT_MAPPING_XPERIA_PLAY:
|
||||
SetDefaultKeyMap(DEVICE_ID_DEFAULT, defaultXperiaPlay, ARRAY_SIZE(defaultXperiaPlay), replace);
|
||||
break;
|
||||
}
|
||||
|
||||
UpdateNativeMenuKeys();
|
||||
}
|
||||
|
||||
static const KeyMap_IntStrPair key_names[] = {
|
||||
{NKCODE_A, "A"},
|
||||
{NKCODE_B, "B"},
|
||||
|
|
|
@ -65,16 +65,6 @@ enum {
|
|||
VIRTKEY_COUNT = VIRTKEY_LAST - VIRTKEY_FIRST
|
||||
};
|
||||
|
||||
enum DefaultMaps {
|
||||
DEFAULT_MAPPING_KEYBOARD,
|
||||
DEFAULT_MAPPING_PAD,
|
||||
DEFAULT_MAPPING_X360,
|
||||
DEFAULT_MAPPING_SHIELD,
|
||||
DEFAULT_MAPPING_OUYA,
|
||||
DEFAULT_MAPPING_XPERIA_PLAY,
|
||||
DEFAULT_MAPPING_MOQI_I7S,
|
||||
};
|
||||
|
||||
const float AXIS_BIND_THRESHOLD = 0.75f;
|
||||
const float AXIS_BIND_THRESHOLD_MOUSE = 0.01f;
|
||||
|
||||
|
@ -106,6 +96,7 @@ class IniFile;
|
|||
|
||||
namespace KeyMap {
|
||||
extern KeyMapping g_controllerMap;
|
||||
extern std::set<int> g_seenDeviceIds;
|
||||
extern int g_controllerMapGeneration;
|
||||
|
||||
// Key & Button names
|
||||
|
|
341
Core/KeyMapDefaults.cpp
Normal file
341
Core/KeyMapDefaults.cpp
Normal file
|
@ -0,0 +1,341 @@
|
|||
#if defined(SDL)
|
||||
#include <SDL_keyboard.h>
|
||||
#elif defined(USING_WIN_UI)
|
||||
#include "CommonWindows.h"
|
||||
#endif
|
||||
|
||||
#include "ppsspp_config.h"
|
||||
|
||||
#include "Common/CommonFuncs.h"
|
||||
#include "Common/Input/KeyCodes.h"
|
||||
#include "Common/Input/InputState.h"
|
||||
#include "Core/KeyMapDefaults.h"
|
||||
#include "Core/KeyMap.h"
|
||||
|
||||
#include "Core/HLE/sceCtrl.h"
|
||||
|
||||
namespace KeyMap {
|
||||
|
||||
struct DefMappingStruct {
|
||||
int pspKey;
|
||||
int key;
|
||||
int direction;
|
||||
};
|
||||
|
||||
const DefMappingStruct defaultQwertyKeyboardKeyMap[] = {
|
||||
{CTRL_SQUARE, NKCODE_A},
|
||||
{CTRL_TRIANGLE, NKCODE_S},
|
||||
{CTRL_CIRCLE, NKCODE_X},
|
||||
{CTRL_CROSS, NKCODE_Z},
|
||||
{CTRL_LTRIGGER, NKCODE_Q},
|
||||
{CTRL_RTRIGGER, NKCODE_W},
|
||||
|
||||
{CTRL_START, NKCODE_SPACE},
|
||||
#ifdef _WIN32
|
||||
{CTRL_SELECT, NKCODE_V},
|
||||
#else
|
||||
{CTRL_SELECT, NKCODE_ENTER},
|
||||
#endif
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_RIGHT, NKCODE_DPAD_RIGHT},
|
||||
{VIRTKEY_AXIS_Y_MAX, NKCODE_I},
|
||||
{VIRTKEY_AXIS_Y_MIN, NKCODE_K},
|
||||
{VIRTKEY_AXIS_X_MIN, NKCODE_J},
|
||||
{VIRTKEY_AXIS_X_MAX, NKCODE_L},
|
||||
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
|
||||
{VIRTKEY_FASTFORWARD, NKCODE_TAB},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
|
||||
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND , NKCODE_DEL},
|
||||
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
|
||||
};
|
||||
|
||||
const DefMappingStruct defaultAzertyKeyboardKeyMap[] = {
|
||||
{CTRL_SQUARE, NKCODE_Q},
|
||||
{CTRL_TRIANGLE, NKCODE_S},
|
||||
{CTRL_CIRCLE, NKCODE_X},
|
||||
{CTRL_CROSS, NKCODE_W},
|
||||
{CTRL_LTRIGGER, NKCODE_A},
|
||||
{CTRL_RTRIGGER, NKCODE_Z},
|
||||
|
||||
{CTRL_START, NKCODE_SPACE},
|
||||
#ifdef _WIN32
|
||||
{CTRL_SELECT, NKCODE_V},
|
||||
#else
|
||||
{CTRL_SELECT, NKCODE_ENTER},
|
||||
#endif
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_RIGHT, NKCODE_DPAD_RIGHT},
|
||||
{VIRTKEY_AXIS_Y_MAX, NKCODE_I},
|
||||
{VIRTKEY_AXIS_Y_MIN, NKCODE_K},
|
||||
{VIRTKEY_AXIS_X_MIN, NKCODE_J},
|
||||
{VIRTKEY_AXIS_X_MAX, NKCODE_L},
|
||||
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
|
||||
{VIRTKEY_FASTFORWARD, NKCODE_TAB},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
|
||||
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND , NKCODE_DEL},
|
||||
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
|
||||
};
|
||||
|
||||
const DefMappingStruct defaultQwertzKeyboardKeyMap[] = {
|
||||
{CTRL_SQUARE, NKCODE_A},
|
||||
{CTRL_TRIANGLE, NKCODE_S},
|
||||
{CTRL_CIRCLE, NKCODE_X},
|
||||
{CTRL_CROSS, NKCODE_Y},
|
||||
{CTRL_LTRIGGER, NKCODE_Q},
|
||||
{CTRL_RTRIGGER, NKCODE_W},
|
||||
|
||||
{CTRL_START, NKCODE_SPACE},
|
||||
#ifdef _WIN32
|
||||
{CTRL_SELECT, NKCODE_V},
|
||||
#else
|
||||
{CTRL_SELECT, NKCODE_ENTER},
|
||||
#endif
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_RIGHT, NKCODE_DPAD_RIGHT},
|
||||
{VIRTKEY_AXIS_Y_MAX, NKCODE_I},
|
||||
{VIRTKEY_AXIS_Y_MIN, NKCODE_K},
|
||||
{VIRTKEY_AXIS_X_MIN, NKCODE_J},
|
||||
{VIRTKEY_AXIS_X_MAX, NKCODE_L},
|
||||
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
|
||||
{VIRTKEY_FASTFORWARD, NKCODE_TAB},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
|
||||
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND , NKCODE_DEL},
|
||||
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
|
||||
};
|
||||
|
||||
const DefMappingStruct default360KeyMap[] = {
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, -1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, +1},
|
||||
{CTRL_CROSS , NKCODE_BUTTON_A},
|
||||
{CTRL_CIRCLE , NKCODE_BUTTON_B},
|
||||
{CTRL_SQUARE , NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_START , NKCODE_BUTTON_START},
|
||||
{CTRL_SELECT , NKCODE_BUTTON_SELECT},
|
||||
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_FASTFORWARD , JOYSTICK_AXIS_RTRIGGER, +1},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_BUTTON_THUMBR},
|
||||
{VIRTKEY_PAUSE , JOYSTICK_AXIS_LTRIGGER, +1},
|
||||
{VIRTKEY_PAUSE, NKCODE_HOME},
|
||||
};
|
||||
|
||||
const DefMappingStruct defaultShieldKeyMap[] = {
|
||||
{CTRL_CROSS, NKCODE_BUTTON_A},
|
||||
{CTRL_CIRCLE ,NKCODE_BUTTON_B},
|
||||
{CTRL_SQUARE ,NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE ,NKCODE_BUTTON_Y},
|
||||
{CTRL_START, NKCODE_BUTTON_START},
|
||||
{CTRL_SELECT, JOYSTICK_AXIS_LTRIGGER, +1},
|
||||
{CTRL_LTRIGGER, NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER, NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
|
||||
{CTRL_LEFT, JOYSTICK_AXIS_HAT_X, -1},
|
||||
{CTRL_RIGHT, JOYSTICK_AXIS_HAT_X, +1},
|
||||
{CTRL_UP, JOYSTICK_AXIS_HAT_Y, -1},
|
||||
{CTRL_DOWN, JOYSTICK_AXIS_HAT_Y, +1},
|
||||
{VIRTKEY_SPEED_TOGGLE, JOYSTICK_AXIS_LTRIGGER, +1 },
|
||||
{VIRTKEY_FASTFORWARD, JOYSTICK_AXIS_RTRIGGER, +1 },
|
||||
{VIRTKEY_PAUSE, NKCODE_BACK },
|
||||
};
|
||||
|
||||
const DefMappingStruct defaultMOQI7SKeyMap[] = {
|
||||
{CTRL_CROSS, NKCODE_BUTTON_A},
|
||||
{CTRL_CIRCLE, NKCODE_BUTTON_B},
|
||||
{CTRL_SQUARE, NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE, NKCODE_BUTTON_Y},
|
||||
{CTRL_START, JOYSTICK_AXIS_Z, +1},
|
||||
{CTRL_SELECT, JOYSTICK_AXIS_Z, -1},
|
||||
{CTRL_LTRIGGER, NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER, NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
|
||||
{CTRL_LEFT, JOYSTICK_AXIS_HAT_X, -1},
|
||||
{CTRL_RIGHT, JOYSTICK_AXIS_HAT_X, +1},
|
||||
{CTRL_UP, JOYSTICK_AXIS_HAT_Y, -1},
|
||||
{CTRL_DOWN, JOYSTICK_AXIS_HAT_Y, +1},
|
||||
{VIRTKEY_FASTFORWARD, JOYSTICK_AXIS_RZ, +1 },
|
||||
{VIRTKEY_PAUSE, NKCODE_BACK },
|
||||
};
|
||||
|
||||
const DefMappingStruct defaultPadMap[] = {
|
||||
#if PPSSPP_PLATFORM(ANDROID)
|
||||
{CTRL_CROSS , NKCODE_BUTTON_A},
|
||||
{CTRL_CIRCLE , NKCODE_BUTTON_B},
|
||||
{CTRL_SQUARE , NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
|
||||
// The hat for DPAD is standard for bluetooth pads, which is the most likely pads on Android I think.
|
||||
{CTRL_LEFT , JOYSTICK_AXIS_HAT_X, -1},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_RIGHT , JOYSTICK_AXIS_HAT_X, +1},
|
||||
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
|
||||
{CTRL_UP , JOYSTICK_AXIS_HAT_Y, -1},
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_DOWN , JOYSTICK_AXIS_HAT_Y, +1},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_START , NKCODE_BUTTON_START},
|
||||
{CTRL_SELECT , NKCODE_BACK},
|
||||
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_FASTFORWARD , NKCODE_BUTTON_R2},
|
||||
{VIRTKEY_PAUSE , JOYSTICK_AXIS_LTRIGGER, +1},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_BUTTON_L2},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
|
||||
#else
|
||||
{CTRL_CROSS , NKCODE_BUTTON_2},
|
||||
{CTRL_CIRCLE , NKCODE_BUTTON_3},
|
||||
{CTRL_SQUARE , NKCODE_BUTTON_4},
|
||||
{CTRL_TRIANGLE , NKCODE_BUTTON_1},
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_START , NKCODE_BUTTON_10},
|
||||
{CTRL_SELECT , NKCODE_BUTTON_9},
|
||||
{CTRL_LTRIGGER , NKCODE_BUTTON_7},
|
||||
{CTRL_RTRIGGER , NKCODE_BUTTON_8},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
|
||||
{VIRTKEY_PAUSE , JOYSTICK_AXIS_LTRIGGER, +1},
|
||||
#endif
|
||||
};
|
||||
|
||||
const DefMappingStruct defaultOuyaMap[] = {
|
||||
{CTRL_CROSS , NKCODE_BUTTON_A},
|
||||
{CTRL_CIRCLE , NKCODE_BUTTON_B},
|
||||
{CTRL_SQUARE , NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_START , NKCODE_BUTTON_R2},
|
||||
{CTRL_SELECT , NKCODE_BUTTON_L2},
|
||||
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_FASTFORWARD , NKCODE_BUTTON_THUMBL},
|
||||
{VIRTKEY_PAUSE , NKCODE_BUTTON_THUMBR},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, +1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, -1},
|
||||
};
|
||||
|
||||
const DefMappingStruct defaultXperiaPlay[] = {
|
||||
{CTRL_CROSS , NKCODE_BUTTON_CROSS},
|
||||
{CTRL_CIRCLE , NKCODE_BUTTON_CIRCLE},
|
||||
{CTRL_SQUARE , NKCODE_BUTTON_X},
|
||||
{CTRL_TRIANGLE , NKCODE_BUTTON_Y},
|
||||
{CTRL_UP , NKCODE_DPAD_UP},
|
||||
{CTRL_RIGHT , NKCODE_DPAD_RIGHT},
|
||||
{CTRL_DOWN , NKCODE_DPAD_DOWN},
|
||||
{CTRL_LEFT , NKCODE_DPAD_LEFT},
|
||||
{CTRL_START , NKCODE_BUTTON_START},
|
||||
{CTRL_SELECT , NKCODE_BUTTON_SELECT},
|
||||
{CTRL_LTRIGGER , NKCODE_BUTTON_L1},
|
||||
{CTRL_RTRIGGER , NKCODE_BUTTON_R1},
|
||||
{VIRTKEY_AXIS_X_MIN, JOYSTICK_AXIS_X, -1},
|
||||
{VIRTKEY_AXIS_X_MAX, JOYSTICK_AXIS_X, +1},
|
||||
{VIRTKEY_AXIS_Y_MIN, JOYSTICK_AXIS_Y, -1},
|
||||
{VIRTKEY_AXIS_Y_MAX, JOYSTICK_AXIS_Y, +1},
|
||||
};
|
||||
|
||||
static void SetDefaultKeyMap(int deviceId, const DefMappingStruct *array, size_t count, bool replace) {
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
if (array[i].direction == 0)
|
||||
SetKeyMapping(array[i].pspKey, KeyDef(deviceId, array[i].key), replace);
|
||||
else
|
||||
SetAxisMapping(array[i].pspKey, deviceId, array[i].key, array[i].direction, replace);
|
||||
}
|
||||
g_seenDeviceIds.insert(deviceId);
|
||||
}
|
||||
|
||||
void SetDefaultKeyMap(DefaultMaps dmap, bool replace) {
|
||||
switch (dmap) {
|
||||
case DEFAULT_MAPPING_KEYBOARD:
|
||||
{
|
||||
bool azerty = false;
|
||||
bool qwertz = false;
|
||||
#if defined(SDL)
|
||||
char q, w, y;
|
||||
q = SDL_GetKeyFromScancode(SDL_SCANCODE_Q);
|
||||
w = SDL_GetKeyFromScancode(SDL_SCANCODE_W);
|
||||
y = SDL_GetKeyFromScancode(SDL_SCANCODE_Y);
|
||||
if (q == 'a' && w == 'z' && y == 'y')
|
||||
azerty = true;
|
||||
else if (q == 'q' && w == 'w' && y == 'z')
|
||||
qwertz = true;
|
||||
#elif defined(USING_WIN_UI)
|
||||
HKL localeId = GetKeyboardLayout(0);
|
||||
// TODO: Is this list complete enough?
|
||||
switch ((int)(intptr_t)localeId & 0xFFFF) {
|
||||
case 0x407:
|
||||
qwertz = true;
|
||||
break;
|
||||
case 0x040c:
|
||||
case 0x080c:
|
||||
case 0x1009:
|
||||
azerty = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (azerty) {
|
||||
SetDefaultKeyMap(DEVICE_ID_KEYBOARD, defaultAzertyKeyboardKeyMap, ARRAY_SIZE(defaultAzertyKeyboardKeyMap), replace);
|
||||
} else if (qwertz) {
|
||||
SetDefaultKeyMap(DEVICE_ID_KEYBOARD, defaultQwertzKeyboardKeyMap, ARRAY_SIZE(defaultQwertzKeyboardKeyMap), replace);
|
||||
} else {
|
||||
SetDefaultKeyMap(DEVICE_ID_KEYBOARD, defaultQwertyKeyboardKeyMap, ARRAY_SIZE(defaultQwertyKeyboardKeyMap), replace);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DEFAULT_MAPPING_X360:
|
||||
SetDefaultKeyMap(DEVICE_ID_X360_0, default360KeyMap, ARRAY_SIZE(default360KeyMap), replace);
|
||||
break;
|
||||
case DEFAULT_MAPPING_SHIELD:
|
||||
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultShieldKeyMap, ARRAY_SIZE(defaultShieldKeyMap), replace);
|
||||
break;
|
||||
case DEFAULT_MAPPING_MOQI_I7S:
|
||||
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultMOQI7SKeyMap, ARRAY_SIZE(defaultMOQI7SKeyMap), replace);
|
||||
break;
|
||||
case DEFAULT_MAPPING_PAD:
|
||||
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultPadMap, ARRAY_SIZE(defaultPadMap), replace);
|
||||
break;
|
||||
case DEFAULT_MAPPING_OUYA:
|
||||
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultOuyaMap, ARRAY_SIZE(defaultOuyaMap), replace);
|
||||
break;
|
||||
case DEFAULT_MAPPING_XPERIA_PLAY:
|
||||
SetDefaultKeyMap(DEVICE_ID_DEFAULT, defaultXperiaPlay, ARRAY_SIZE(defaultXperiaPlay), replace);
|
||||
break;
|
||||
}
|
||||
|
||||
UpdateNativeMenuKeys();
|
||||
}
|
||||
|
||||
} // namespace KeyMap
|
13
Core/KeyMapDefaults.h
Normal file
13
Core/KeyMapDefaults.h
Normal file
|
@ -0,0 +1,13 @@
|
|||
#pragma once
|
||||
|
||||
enum DefaultMaps {
|
||||
DEFAULT_MAPPING_KEYBOARD,
|
||||
DEFAULT_MAPPING_PAD,
|
||||
DEFAULT_MAPPING_X360,
|
||||
DEFAULT_MAPPING_SHIELD,
|
||||
DEFAULT_MAPPING_OUYA,
|
||||
DEFAULT_MAPPING_XPERIA_PLAY,
|
||||
DEFAULT_MAPPING_MOQI_I7S,
|
||||
};
|
||||
|
||||
void SetDefaultKeyMap(DefaultMaps dmap, bool replace);
|
|
@ -527,6 +527,7 @@
|
|||
<ClInclude Include="..\..\Core\HW\SimpleAudioDec.h" />
|
||||
<ClInclude Include="..\..\Core\HW\StereoResampler.h" />
|
||||
<ClInclude Include="..\..\Core\KeyMap.h" />
|
||||
<ClInclude Include="..\..\Core\KeyMapDefaults.h" />
|
||||
<ClInclude Include="..\..\Core\Loaders.h" />
|
||||
<ClInclude Include="..\..\Core\MemFault.h" />
|
||||
<ClInclude Include="..\..\Core\MemMap.h" />
|
||||
|
@ -757,6 +758,7 @@
|
|||
<ClCompile Include="..\..\Core\HW\SimpleAudioDec.cpp" />
|
||||
<ClCompile Include="..\..\Core\HW\StereoResampler.cpp" />
|
||||
<ClCompile Include="..\..\Core\KeyMap.cpp" />
|
||||
<ClCompile Include="..\..\Core\KeyMapDefaults.cpp" />
|
||||
<ClCompile Include="..\..\Core\Loaders.cpp" />
|
||||
<ClCompile Include="..\..\Core\MemFault.cpp" />
|
||||
<ClCompile Include="..\..\Core\MemMap.cpp" />
|
||||
|
|
|
@ -1108,6 +1108,7 @@
|
|||
<ClCompile Include="..\..\Core\KeyMap.cpp" />
|
||||
<ClCompile Include="..\..\Core\ThreadPools.cpp" />
|
||||
<ClCompile Include="..\..\Core\ControlMapper.cpp" />
|
||||
<ClCompile Include="..\..\Core\KeyMapDefaults.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h" />
|
||||
|
@ -1747,6 +1748,7 @@
|
|||
<ClInclude Include="..\..\Core\KeyMap.h" />
|
||||
<ClInclude Include="..\..\Core\ThreadPools.h" />
|
||||
<ClInclude Include="..\..\Core\ControlMapper.h" />
|
||||
<ClInclude Include="..\..\Core\KeyMapDefaults.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\ext\gason\LICENSE">
|
||||
|
|
|
@ -387,6 +387,7 @@ EXEC_AND_LIB_FILES := \
|
|||
$(SRC)/Core/HDRemaster.cpp \
|
||||
$(SRC)/Core/Instance.cpp \
|
||||
$(SRC)/Core/KeyMap.cpp \
|
||||
$(SRC)/Core/KeyMapDefaults.cpp \
|
||||
$(SRC)/Core/Host.cpp \
|
||||
$(SRC)/Core/Loaders.cpp \
|
||||
$(SRC)/Core/PSPLoaders.cpp \
|
||||
|
|
|
@ -433,6 +433,7 @@ SOURCES_CXX += \
|
|||
$(COREDIR)/Core.cpp \
|
||||
$(COREDIR)/WaveFile.cpp \
|
||||
$(COREDIR)/KeyMap.cpp \
|
||||
$(COREDIR)/KeyMapDefaults.cpp \
|
||||
$(COREDIR)/FileLoaders/HTTPFileLoader.cpp \
|
||||
$(COREDIR)/FileLoaders/CachingFileLoader.cpp \
|
||||
$(COREDIR)/FileLoaders/DiskCachingFileLoader.cpp \
|
||||
|
|
Loading…
Add table
Reference in a new issue