mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-10-07 02:43:32 +00:00
iOS gamepad mapping: Better mapping, better defaults. Fixes the start button problem.
controller.controllerPausedHandler should not be set.
This commit is contained in:
parent
044451d557
commit
d46a7ed228
@ -741,6 +741,8 @@ void RestoreDefault() {
|
|||||||
} else {
|
} else {
|
||||||
SetDefaultKeyMap(DEFAULT_MAPPING_ANDROID_PAD, false);
|
SetDefaultKeyMap(DEFAULT_MAPPING_ANDROID_PAD, false);
|
||||||
}
|
}
|
||||||
|
#elif PPSSPP_PLATFORM(IOS)
|
||||||
|
SetDefaultKeyMap(DEFAULT_MAPPING_IOS_PAD, false);
|
||||||
#else
|
#else
|
||||||
SetDefaultKeyMap(DEFAULT_MAPPING_KEYBOARD, true);
|
SetDefaultKeyMap(DEFAULT_MAPPING_KEYBOARD, true);
|
||||||
SetDefaultKeyMap(DEFAULT_MAPPING_PAD, false);
|
SetDefaultKeyMap(DEFAULT_MAPPING_PAD, false);
|
||||||
|
@ -275,6 +275,27 @@ static const DefMappingStruct defaultPadMap[] = {
|
|||||||
{VIRTKEY_PAUSE , NKCODE_BUTTON_L2 },
|
{VIRTKEY_PAUSE , NKCODE_BUTTON_L2 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const DefMappingStruct defaultPadMapIOS[] = {
|
||||||
|
{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_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},
|
||||||
|
{VIRTKEY_PAUSE , NKCODE_BUTTON_THUMBL },
|
||||||
|
{VIRTKEY_FASTFORWARD , JOYSTICK_AXIS_RTRIGGER, +1},
|
||||||
|
};
|
||||||
|
|
||||||
static const DefMappingStruct defaultOuyaMap[] = {
|
static const DefMappingStruct defaultOuyaMap[] = {
|
||||||
{CTRL_CROSS , NKCODE_BUTTON_A},
|
{CTRL_CROSS , NKCODE_BUTTON_A},
|
||||||
{CTRL_CIRCLE , NKCODE_BUTTON_B},
|
{CTRL_CIRCLE , NKCODE_BUTTON_B},
|
||||||
@ -382,6 +403,9 @@ void SetDefaultKeyMap(DefaultMaps dmap, bool replace) {
|
|||||||
case DEFAULT_MAPPING_ANDROID_PAD:
|
case DEFAULT_MAPPING_ANDROID_PAD:
|
||||||
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultPadMapAndroid, ARRAY_SIZE(defaultPadMapAndroid), replace);
|
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultPadMapAndroid, ARRAY_SIZE(defaultPadMapAndroid), replace);
|
||||||
break;
|
break;
|
||||||
|
case DEFAULT_MAPPING_IOS_PAD:
|
||||||
|
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultPadMapIOS, ARRAY_SIZE(defaultPadMapIOS), replace);
|
||||||
|
break;
|
||||||
case DEFAULT_MAPPING_OUYA:
|
case DEFAULT_MAPPING_OUYA:
|
||||||
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultOuyaMap, ARRAY_SIZE(defaultOuyaMap), replace);
|
SetDefaultKeyMap(DEVICE_ID_PAD_0, defaultOuyaMap, ARRAY_SIZE(defaultOuyaMap), replace);
|
||||||
break;
|
break;
|
||||||
|
@ -6,6 +6,7 @@ enum DefaultMaps {
|
|||||||
DEFAULT_MAPPING_KEYBOARD,
|
DEFAULT_MAPPING_KEYBOARD,
|
||||||
DEFAULT_MAPPING_PAD,
|
DEFAULT_MAPPING_PAD,
|
||||||
DEFAULT_MAPPING_ANDROID_PAD,
|
DEFAULT_MAPPING_ANDROID_PAD,
|
||||||
|
DEFAULT_MAPPING_IOS_PAD,
|
||||||
DEFAULT_MAPPING_XINPUT,
|
DEFAULT_MAPPING_XINPUT,
|
||||||
DEFAULT_MAPPING_ANDROID_XBOX, // XBox controller or similar on Android
|
DEFAULT_MAPPING_ANDROID_XBOX, // XBox controller or similar on Android
|
||||||
DEFAULT_MAPPING_SHIELD,
|
DEFAULT_MAPPING_SHIELD,
|
||||||
|
@ -15,20 +15,20 @@ static void controllerButtonPressed(BOOL pressed, InputKeyCode keyCode) {
|
|||||||
NativeKey(key);
|
NativeKey(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void analogTriggerPressed(InputAxis axis, float value) {
|
||||||
|
AxisInput axisInput;
|
||||||
|
axisInput.deviceId = DEVICE_ID_PAD_0;
|
||||||
|
axisInput.axisId = axis;
|
||||||
|
axisInput.value = value;
|
||||||
|
NativeAxis(&axisInput, 1);
|
||||||
|
}
|
||||||
|
|
||||||
bool SetupController(GCController *controller) {
|
bool SetupController(GCController *controller) {
|
||||||
GCExtendedGamepad *extendedProfile = controller.extendedGamepad;
|
GCExtendedGamepad *extendedProfile = controller.extendedGamepad;
|
||||||
if (extendedProfile == nil) {
|
if (extendedProfile == nil) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
controller.controllerPausedHandler = ^(GCController *controller) {
|
|
||||||
KeyInput key;
|
|
||||||
key.flags = KEY_DOWN;
|
|
||||||
key.keyCode = NKCODE_ESCAPE;
|
|
||||||
key.deviceId = DEVICE_ID_KEYBOARD;
|
|
||||||
NativeKey(key);
|
|
||||||
};
|
|
||||||
|
|
||||||
extendedProfile.buttonA.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
extendedProfile.buttonA.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||||
controllerButtonPressed(pressed, NKCODE_BUTTON_2); // Cross
|
controllerButtonPressed(pressed, NKCODE_BUTTON_2); // Cross
|
||||||
};
|
};
|
||||||
@ -46,11 +46,11 @@ bool SetupController(GCController *controller) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
extendedProfile.leftShoulder.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
extendedProfile.leftShoulder.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||||
controllerButtonPressed(pressed, NKCODE_BUTTON_7); // LTrigger
|
controllerButtonPressed(pressed, NKCODE_BUTTON_L1); // LTrigger
|
||||||
};
|
};
|
||||||
|
|
||||||
extendedProfile.rightShoulder.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
extendedProfile.rightShoulder.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||||
controllerButtonPressed(pressed, NKCODE_BUTTON_8); // RTrigger
|
controllerButtonPressed(pressed, NKCODE_BUTTON_R1); // RTrigger
|
||||||
};
|
};
|
||||||
|
|
||||||
extendedProfile.dpad.up.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
extendedProfile.dpad.up.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||||
@ -70,34 +70,36 @@ bool SetupController(GCController *controller) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
extendedProfile.leftTrigger.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
extendedProfile.leftTrigger.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||||
controllerButtonPressed(pressed, NKCODE_BUTTON_9); // Select
|
INFO_LOG(SYSTEM, "ltrigger: %f %d", value, (int)pressed);
|
||||||
|
analogTriggerPressed(JOYSTICK_AXIS_LTRIGGER, value);
|
||||||
};
|
};
|
||||||
|
|
||||||
extendedProfile.rightTrigger.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
extendedProfile.rightTrigger.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||||
controllerButtonPressed(pressed, NKCODE_BUTTON_10); // Start
|
INFO_LOG(SYSTEM, "rtrigger: %f %d", value, (int)pressed);
|
||||||
|
analogTriggerPressed(JOYSTICK_AXIS_RTRIGGER, value);
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(__IPHONE_12_1) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_1
|
#if defined(__IPHONE_12_1) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_1
|
||||||
if ([extendedProfile respondsToSelector:@selector(leftThumbstickButton)] && extendedProfile.leftThumbstickButton != nil) {
|
if ([extendedProfile respondsToSelector:@selector(leftThumbstickButton)] && extendedProfile.leftThumbstickButton != nil) {
|
||||||
extendedProfile.leftThumbstickButton.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
extendedProfile.leftThumbstickButton.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||||
controllerButtonPressed(pressed, NKCODE_BUTTON_11);
|
controllerButtonPressed(pressed, NKCODE_BUTTON_THUMBL);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if ([extendedProfile respondsToSelector:@selector(rightThumbstickButton)] && extendedProfile.rightThumbstickButton != nil) {
|
if ([extendedProfile respondsToSelector:@selector(rightThumbstickButton)] && extendedProfile.rightThumbstickButton != nil) {
|
||||||
extendedProfile.rightThumbstickButton.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
extendedProfile.rightThumbstickButton.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||||
controllerButtonPressed(pressed, NKCODE_BUTTON_12);
|
controllerButtonPressed(pressed, NKCODE_BUTTON_THUMBR);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0
|
#if defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0
|
||||||
if ([extendedProfile respondsToSelector:@selector(buttonOptions)] && extendedProfile.buttonOptions != nil) {
|
if ([extendedProfile respondsToSelector:@selector(buttonOptions)] && extendedProfile.buttonOptions != nil) {
|
||||||
extendedProfile.buttonOptions.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
extendedProfile.buttonOptions.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||||
controllerButtonPressed(pressed, NKCODE_BUTTON_13);
|
controllerButtonPressed(pressed, NKCODE_BUTTON_SELECT);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if ([extendedProfile respondsToSelector:@selector(buttonMenu)] && extendedProfile.buttonMenu != nil) {
|
if ([extendedProfile respondsToSelector:@selector(buttonMenu)] && extendedProfile.buttonMenu != nil) {
|
||||||
extendedProfile.buttonMenu.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
extendedProfile.buttonMenu.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||||
controllerButtonPressed(pressed, NKCODE_BUTTON_14);
|
controllerButtonPressed(pressed, NKCODE_BUTTON_START);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user