gamepad: Add SDL_GAMEPAD_TYPE_STEAM for Steam Controllers

This commit is contained in:
Cameron Gutman 2026-05-16 16:29:07 -05:00
parent ae25abeb0d
commit 3b57e9e11f
5 changed files with 16 additions and 1 deletions

View file

@ -122,6 +122,7 @@ typedef enum SDL_GamepadType
SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT, SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT,
SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR, SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR,
SDL_GAMEPAD_TYPE_GAMECUBE, SDL_GAMEPAD_TYPE_GAMECUBE,
SDL_GAMEPAD_TYPE_STEAM,
SDL_GAMEPAD_TYPE_COUNT SDL_GAMEPAD_TYPE_COUNT
} SDL_GamepadType; } SDL_GamepadType;

View file

@ -548,6 +548,9 @@ char *SDL_CreateDeviceName(Uint16 vendor, Uint16 product, const char *vendor_nam
case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_PRO: case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_PRO:
name = SDL_strdup("Nintendo Switch Pro Controller"); name = SDL_strdup("Nintendo Switch Pro Controller");
break; break;
case SDL_GAMEPAD_TYPE_STEAM:
name = SDL_strdup("Steam Controller");
break;
default: default:
len = (6 + 1 + 6 + 1); len = (6 + 1 + 6 + 1);
name = (char *)SDL_malloc(len); name = (char *)SDL_malloc(len);

View file

@ -1494,7 +1494,8 @@ static const char *map_StringForGamepadType[] = {
"joyconleft", "joyconleft",
"joyconright", "joyconright",
"joyconpair", "joyconpair",
"gamecube" "gamecube",
"steam"
}; };
SDL_COMPILE_TIME_ASSERT(map_StringForGamepadType, SDL_arraysize(map_StringForGamepadType) == SDL_GAMEPAD_TYPE_COUNT); SDL_COMPILE_TIME_ASSERT(map_StringForGamepadType, SDL_arraysize(map_StringForGamepadType) == SDL_GAMEPAD_TYPE_COUNT);

View file

@ -3173,6 +3173,14 @@ SDL_GamepadType SDL_GetGamepadTypeFromVIDPID(Uint16 vendor, Uint16 product, cons
type = SDL_GAMEPAD_TYPE_STANDARD; type = SDL_GAMEPAD_TYPE_STANDARD;
} }
break; 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: default:
break; break;
} }

View file

@ -3643,6 +3643,8 @@ const char *GetGamepadTypeString(SDL_GamepadType type)
return "Joy-Con Pair"; return "Joy-Con Pair";
case SDL_GAMEPAD_TYPE_GAMECUBE: case SDL_GAMEPAD_TYPE_GAMECUBE:
return "GameCube"; return "GameCube";
case SDL_GAMEPAD_TYPE_STEAM:
return "Steam";
default: default:
return ""; return "";
} }