From d58bec72a0d3bf5b892c1a082b5331b1ff047bd4 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 8 Aug 2022 17:19:12 -0700
Subject: [PATCH] Fixed Joy-Con gyro axes in mini-gamepad mode
---
src/joystick/hidapi/SDL_hidapi_switch.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/src/joystick/hidapi/SDL_hidapi_switch.c b/src/joystick/hidapi/SDL_hidapi_switch.c
index 35c5dedef9e..1fee002125f 100644
--- a/src/joystick/hidapi/SDL_hidapi_switch.c
+++ b/src/joystick/hidapi/SDL_hidapi_switch.c
@@ -1747,6 +1747,22 @@ static void SendSensorUpdate(SDL_Joystick *joystick, SDL_DriverSwitch_Context *c
data[1] = -data[1];
}
+ if (ctx->m_eControllerType == k_eSwitchDeviceInfoControllerType_JoyConLeft &&
+ !ctx->device->parent) {
+ /* Mini-gamepad mode, swap some axes around */
+ float tmp = data[2];
+ data[2] = -data[0];
+ data[0] = tmp;
+ }
+
+ if (ctx->m_eControllerType == k_eSwitchDeviceInfoControllerType_JoyConRight &&
+ !ctx->device->parent) {
+ /* Mini-gamepad mode, swap some axes around */
+ float tmp = data[2];
+ data[2] = data[0];
+ data[0] = -tmp;
+ }
+
SDL_PrivateJoystickSensor(joystick, type, data, 3);
}