From f55416bf000fcf17b19b85fa3d318cd12f90a464 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Wed, 13 May 2026 10:01:50 -0700
Subject: [PATCH] Added controller sensor support for GameInput v3
Verified working with the DualSense controller
(cherry picked from commit 0defb4ddfc29c7201c57d5dc8cceb07e29e07f62)
---
src/joystick/gdk/SDL_gameinputjoystick.cpp | 19 +++++++------------
1 file changed, 7 insertions(+), 12 deletions(-)
diff --git a/src/joystick/gdk/SDL_gameinputjoystick.cpp b/src/joystick/gdk/SDL_gameinputjoystick.cpp
index 5d373a25504b5..895f081bdfa91 100644
--- a/src/joystick/gdk/SDL_gameinputjoystick.cpp
+++ b/src/joystick/gdk/SDL_gameinputjoystick.cpp
@@ -34,11 +34,6 @@
#define SDL_GAMEINPUT_DEFAULT false
#endif
-// Enable sensor support in GameInput 2.0, once we have a device that can be used for testing
-#if GAMEINPUT_API_VERSION >= 2
-//#define GAMEINPUT_SENSOR_SUPPORT
-#endif
-
enum
{
SDL_GAMEPAD_BUTTON_GAMEINPUT_SHARE = 11
@@ -647,17 +642,17 @@ static bool GAMEINPUT_JoystickOpen(SDL_Joystick *joystick, int device_index)
SDL_SetBooleanProperty(SDL_GetJoystickProperties(joystick), SDL_PROP_JOYSTICK_CAP_TRIGGER_RUMBLE_BOOLEAN, true);
}
-#ifdef GAMEINPUT_SENSOR_SUPPORT
+#if GAMEINPUT_API_VERSION >= 3
if (info->supportedInput & GameInputKindSensors) {
- // FIXME: What's the sensor update rate?
if (info->sensorsInfo->supportedSensors & GameInputSensorsGyrometer) {
- SDL_PrivateJoystickAddSensor(joystick, SDL_SENSOR_GYRO, 250.0f);
+ SDL_PrivateJoystickAddSensor(joystick, SDL_SENSOR_GYRO, 60.0f);
}
if (info->sensorsInfo->supportedSensors & GameInputSensorsAccelerometer) {
- SDL_PrivateJoystickAddSensor(joystick, SDL_SENSOR_ACCEL, 250.0f);
+ SDL_PrivateJoystickAddSensor(joystick, SDL_SENSOR_ACCEL, 60.0f);
}
}
-#endif
+#endif // GAMEINPUT_API_VERSION >= 3
+
return true;
}
@@ -901,7 +896,7 @@ static void GAMEINPUT_JoystickUpdate(SDL_Joystick *joystick)
GAMEINPUT_ControllerUpdate(joystick, reading, timestamp);
}
-#ifdef GAMEINPUT_SENSOR_SUPPORT
+#if GAMEINPUT_API_VERSION >= 3
if (hwdata->report_sensors) {
GameInputSensorsState sensor_state;
@@ -924,7 +919,7 @@ static void GAMEINPUT_JoystickUpdate(SDL_Joystick *joystick)
}
}
}
-#endif // GAMEINPUT_SENSOR_SUPPORT
+#endif // GAMEINPUT_API_VERSION >= 3
reading->Release();