浏览代码

Fixed Joy-Con gyro axes in mini-gamepad mode

Sam Lantinga 3 年之前
父节点
当前提交
d58bec72a0
共有 1 个文件被更改,包括 16 次插入0 次删除
  1. 16 0
      src/joystick/hidapi/SDL_hidapi_switch.c

+ 16 - 0
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);
 }