Disable system gestures on MFi controllers while they're open, so we get access to the back button, etc.

This commit is contained in:
Sam Lantinga 2021-03-22 19:19:01 -07:00
parent 1133ea0349
commit 0bdf4f95bf
1 changed files with 25 additions and 1 deletions

View File

@ -89,6 +89,7 @@ static id disconnectObserver = nil;
#define ENABLE_MFI_RUMBLE #define ENABLE_MFI_RUMBLE
#define ENABLE_MFI_LIGHT #define ENABLE_MFI_LIGHT
#define ENABLE_MFI_SENSORS #define ENABLE_MFI_SENSORS
#define ENABLE_MFI_SYSTEM_GESTURE_STATE
#define ENABLE_PHYSICAL_INPUT_PROFILE #define ENABLE_PHYSICAL_INPUT_PROFILE
#endif #endif
@ -656,6 +657,18 @@ IOS_JoystickOpen(SDL_Joystick *joystick, int device_index)
} }
#endif /* ENABLE_MFI_SENSORS */ #endif /* ENABLE_MFI_SENSORS */
#ifdef ENABLE_MFI_SYSTEM_GESTURE_STATE
if (@available(macOS 11.0, iOS 14.0, tvOS 14.0, *)) {
GCController *controller = joystick->hwdata->controller;
if (controller.extendedGamepad) {
GCExtendedGamepad *gamepad = controller.extendedGamepad;
if ([gamepad.buttonOptions isBoundToSystemGesture]) {
gamepad.buttonOptions.preferredSystemGestureState = GCSystemGestureStateDisabled;
}
}
}
#endif /* ENABLE_MFI_SYSTEM_GESTURE_STATE */
#endif /* SDL_JOYSTICK_MFI */ #endif /* SDL_JOYSTICK_MFI */
} }
} }
@ -1331,7 +1344,18 @@ IOS_JoystickClose(SDL_Joystick *joystick)
GCController *controller = device->controller; GCController *controller = device->controller;
controller.controllerPausedHandler = nil; controller.controllerPausedHandler = nil;
controller.playerIndex = -1; controller.playerIndex = -1;
#endif
#ifdef ENABLE_MFI_SYSTEM_GESTURE_STATE
if (@available(macOS 11.0, iOS 14.0, tvOS 14.0, *)) {
GCController *controller = joystick->hwdata->controller;
if (controller.extendedGamepad) {
GCExtendedGamepad *gamepad = controller.extendedGamepad;
gamepad.buttonOptions.preferredSystemGestureState = GCSystemGestureStateEnabled;
}
}
#endif /* ENABLE_MFI_SYSTEM_GESTURE_STATE */
#endif /* SDL_JOYSTICK_MFI */
} }
} }
if (device->remote) { if (device->remote) {