Explorar el Código

gamepad: Add SDL_GAMEPAD_TYPE_STEAM for Steam Controllers

Cameron Gutman hace 2 días
padre
commit
6d3404e4bb

+ 1 - 0
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;
 

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

+ 2 - 1
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);
 

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

+ 2 - 0
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 "";
     }