diff --git a/include/SDL3/SDL_gamepad.h b/include/SDL3/SDL_gamepad.h index 2d0e83440a..363ec7dbe6 100644 --- a/include/SDL3/SDL_gamepad.h +++ b/include/SDL3/SDL_gamepad.h @@ -122,6 +122,7 @@ typedef enum SDL_GamepadType SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT, SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR, SDL_GAMEPAD_TYPE_GAMECUBE, + SDL_GAMEPAD_TYPE_STEAM, SDL_GAMEPAD_TYPE_COUNT } SDL_GamepadType; diff --git a/src/SDL_utils.c b/src/SDL_utils.c index a4a0d77614..153803adc1 100644 --- a/src/SDL_utils.c +++ b/src/SDL_utils.c @@ -548,6 +548,9 @@ char *SDL_CreateDeviceName(Uint16 vendor, Uint16 product, const char *vendor_nam case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_PRO: name = SDL_strdup("Nintendo Switch Pro Controller"); break; + case SDL_GAMEPAD_TYPE_STEAM: + name = SDL_strdup("Steam Controller"); + break; default: len = (6 + 1 + 6 + 1); name = (char *)SDL_malloc(len); diff --git a/src/joystick/SDL_gamepad.c b/src/joystick/SDL_gamepad.c index b9c3ade4f0..6dab310b80 100644 --- a/src/joystick/SDL_gamepad.c +++ b/src/joystick/SDL_gamepad.c @@ -1494,7 +1494,8 @@ static const char *map_StringForGamepadType[] = { "joyconleft", "joyconright", "joyconpair", - "gamecube" + "gamecube", + "steam" }; SDL_COMPILE_TIME_ASSERT(map_StringForGamepadType, SDL_arraysize(map_StringForGamepadType) == SDL_GAMEPAD_TYPE_COUNT); diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c index 746cb04690..3e3fb95d5b 100644 --- a/src/joystick/SDL_joystick.c +++ b/src/joystick/SDL_joystick.c @@ -3173,6 +3173,14 @@ SDL_GamepadType SDL_GetGamepadTypeFromVIDPID(Uint16 vendor, Uint16 product, cons type = SDL_GAMEPAD_TYPE_STANDARD; } break; + case k_eControllerType_SteamController: + case k_eControllerType_SteamControllerV2: + case k_eControllerType_SteamControllerNeptune: + case k_eControllerType_SteamControllerTriton: + case k_eControllerType_HoriSteamController: + case k_eControllerType_UnknownSteamController: + type = SDL_GAMEPAD_TYPE_STEAM; + break; default: break; } diff --git a/test/gamepadutils.c b/test/gamepadutils.c index d7fa1c5a45..0d61596b0e 100644 --- a/test/gamepadutils.c +++ b/test/gamepadutils.c @@ -3643,6 +3643,8 @@ const char *GetGamepadTypeString(SDL_GamepadType type) return "Joy-Con Pair"; case SDL_GAMEPAD_TYPE_GAMECUBE: return "GameCube"; + case SDL_GAMEPAD_TYPE_STEAM: + return "Steam"; default: return ""; }