From d58bec72a0d3bf5b892c1a082b5331b1ff047bd4 Mon Sep 17 00:00:00 2001 From: Sam Lantinga 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 35c5dedef..1fee00212 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); }