Sfoglia il codice sorgente

Fixed detecting the paddles on the Xbox Elite Series 1 controller

Sam Lantinga 4 anni fa
parent
commit
85235985fb

+ 2 - 5
src/joystick/SDL_gamecontroller.c

@@ -585,11 +585,8 @@ static ControllerMapping_t *SDL_CreateMappingForHIDAPIController(SDL_JoystickGUI
         if (SDL_IsJoystickXboxOneSeriesX(vendor, product)) {
             /* XBox One Series X Controllers have a share button under the guide button */
             SDL_strlcat(mapping_string, "misc1:b15,", sizeof(mapping_string));
-        } else if (SDL_IsJoystickXboxOneElite(vendor, product) &&
-                   !SDL_IsJoystickXboxOneEliteSeries1(vendor, product)) {
-            /* XBox One Elite Controllers have 4 back paddle buttons
-             * The Series 1 controller has paddles but they can't be unmapped
-             */
+        } else if (SDL_IsJoystickXboxOneElite(vendor, product)) {
+            /* XBox One Elite Controllers have 4 back paddle buttons */
             SDL_strlcat(mapping_string, "paddle1:b15,paddle2:b17,paddle3:b16,paddle4:b18,", sizeof(mapping_string));
         } else if (SDL_IsJoystickSteamController(vendor, product)) {
             /* Steam controllers have 2 back paddle buttons */

+ 0 - 23
src/joystick/SDL_joystick.c

@@ -1914,29 +1914,6 @@ SDL_IsJoystickXboxOneElite(Uint16 vendor_id, Uint16 product_id)
     return SDL_FALSE;
 }
 
-SDL_bool
-SDL_IsJoystickXboxOneEliteSeries1(Uint16 vendor_id, Uint16 product_id)
-{
-    if (vendor_id == USB_VENDOR_MICROSOFT) {
-        if (product_id == USB_PRODUCT_XBOX_ONE_ELITE_SERIES_1) {
-            return SDL_TRUE;
-        }
-    }
-    return SDL_FALSE;
-}
-
-SDL_bool
-SDL_IsJoystickXboxOneEliteSeries2(Uint16 vendor_id, Uint16 product_id)
-{
-    if (vendor_id == USB_VENDOR_MICROSOFT) {
-        if (product_id == USB_PRODUCT_XBOX_ONE_ELITE_SERIES_2 ||
-            product_id == USB_PRODUCT_XBOX_ONE_ELITE_SERIES_2_BLUETOOTH) {
-            return SDL_TRUE;
-        }
-    }
-    return SDL_FALSE;
-}
-
 SDL_bool
 SDL_IsJoystickXboxOneSeriesX(Uint16 vendor_id, Uint16 product_id)
 {

+ 0 - 2
src/joystick/SDL_joystick_c.h

@@ -64,8 +64,6 @@ extern SDL_GameControllerType SDL_GetJoystickGameControllerType(const char *name
 
 /* Function to return whether a joystick is an Xbox One Elite controller */
 extern SDL_bool SDL_IsJoystickXboxOneElite(Uint16 vendor_id, Uint16 product_id);
-extern SDL_bool SDL_IsJoystickXboxOneEliteSeries1(Uint16 vendor_id, Uint16 product_id);
-extern SDL_bool SDL_IsJoystickXboxOneEliteSeries2(Uint16 vendor_id, Uint16 product_id);
 
 /* Function to return whether a joystick is an Xbox One Series X controller */
 extern SDL_bool SDL_IsJoystickXboxOneSeriesX(Uint16 vendor_id, Uint16 product_id);

+ 1 - 1
src/joystick/hidapi/SDL_hidapi_xboxone.c

@@ -530,7 +530,7 @@ HIDAPI_DriverXboxOne_HandleStatePacket(SDL_Joystick *joystick, SDL_DriverXboxOne
             button4_bit = 0x04;
 
             /* The mapped controller state is at offset 4, the raw state is at offset 18, compare them to see if the paddles are mapped */
-            paddles_mapped = (SDL_memcmp(&data[4], &data[18], 14) != 0);
+            paddles_mapped = (SDL_memcmp(&data[4], &data[18], 2) != 0);
 
         } else /* if (size == 38) */ {
             /* XBox One Elite Series 2 */