gamepad: Add SDL_GAMEPAD_TYPE_STEAM for Steam Controllers

This commit is contained in:
Cameron Gutman
2026-05-16 16:29:07 -05:00
committed by Sam Lantinga
parent f76b736e28
commit 6d3404e4bb
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_PAIR,
SDL_GAMEPAD_TYPE_GAMECUBE,
SDL_GAMEPAD_TYPE_STEAM,
SDL_GAMEPAD_TYPE_COUNT
} 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:
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);

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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 "";
}