Fixed detecting the paddles on the Xbox Elite Series 1 controller
parent
69e9b2acee
commit
85235985fb
|
@ -585,11 +585,8 @@ static ControllerMapping_t *SDL_CreateMappingForHIDAPIController(SDL_JoystickGUI
|
||||||
if (SDL_IsJoystickXboxOneSeriesX(vendor, product)) {
|
if (SDL_IsJoystickXboxOneSeriesX(vendor, product)) {
|
||||||
/* XBox One Series X Controllers have a share button under the guide button */
|
/* XBox One Series X Controllers have a share button under the guide button */
|
||||||
SDL_strlcat(mapping_string, "misc1:b15,", sizeof(mapping_string));
|
SDL_strlcat(mapping_string, "misc1:b15,", sizeof(mapping_string));
|
||||||
} else if (SDL_IsJoystickXboxOneElite(vendor, product) &&
|
} else if (SDL_IsJoystickXboxOneElite(vendor, product)) {
|
||||||
!SDL_IsJoystickXboxOneEliteSeries1(vendor, product)) {
|
/* XBox One Elite Controllers have 4 back paddle buttons */
|
||||||
/* XBox One Elite Controllers have 4 back paddle buttons
|
|
||||||
* The Series 1 controller has paddles but they can't be unmapped
|
|
||||||
*/
|
|
||||||
SDL_strlcat(mapping_string, "paddle1:b15,paddle2:b17,paddle3:b16,paddle4:b18,", sizeof(mapping_string));
|
SDL_strlcat(mapping_string, "paddle1:b15,paddle2:b17,paddle3:b16,paddle4:b18,", sizeof(mapping_string));
|
||||||
} else if (SDL_IsJoystickSteamController(vendor, product)) {
|
} else if (SDL_IsJoystickSteamController(vendor, product)) {
|
||||||
/* Steam controllers have 2 back paddle buttons */
|
/* Steam controllers have 2 back paddle buttons */
|
||||||
|
|
|
@ -1914,29 +1914,6 @@ SDL_IsJoystickXboxOneElite(Uint16 vendor_id, Uint16 product_id)
|
||||||
return SDL_FALSE;
|
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_bool
|
||||||
SDL_IsJoystickXboxOneSeriesX(Uint16 vendor_id, Uint16 product_id)
|
SDL_IsJoystickXboxOneSeriesX(Uint16 vendor_id, Uint16 product_id)
|
||||||
{
|
{
|
||||||
|
|
|
@ -64,8 +64,6 @@ extern SDL_GameControllerType SDL_GetJoystickGameControllerType(const char *name
|
||||||
|
|
||||||
/* Function to return whether a joystick is an Xbox One Elite controller */
|
/* 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_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 */
|
/* Function to return whether a joystick is an Xbox One Series X controller */
|
||||||
extern SDL_bool SDL_IsJoystickXboxOneSeriesX(Uint16 vendor_id, Uint16 product_id);
|
extern SDL_bool SDL_IsJoystickXboxOneSeriesX(Uint16 vendor_id, Uint16 product_id);
|
||||||
|
|
|
@ -530,7 +530,7 @@ HIDAPI_DriverXboxOne_HandleStatePacket(SDL_Joystick *joystick, SDL_DriverXboxOne
|
||||||
button4_bit = 0x04;
|
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 */
|
/* 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) */ {
|
} else /* if (size == 38) */ {
|
||||||
/* XBox One Elite Series 2 */
|
/* XBox One Elite Series 2 */
|
||||||
|
|
Loading…
Reference in New Issue