|
@@ -488,14 +488,18 @@ HIDAPI_DriverXboxOne_HandleStatePacket(SDL_Joystick *joystick, SDL_DriverXboxOne
|
|
|
}
|
|
|
|
|
|
if (ctx->has_share_button) {
|
|
|
- /* Version 1 of the firmware for Xbox One Series X */
|
|
|
- if (ctx->last_state[18] != data[18]) {
|
|
|
- SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_MISC1, (data[18] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
|
|
- }
|
|
|
-
|
|
|
- /* Version 2 of the firmware for Xbox One Series X */
|
|
|
- if (ctx->last_state[22] != data[22]) {
|
|
|
- SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_MISC1, (data[22] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
|
|
+ /* Xbox Series X firmware version 5.0, report is 36 bytes, share button is in byte 18
|
|
|
+ * Xbox Series X firmware version 5.1, report is 44 bytes, share button is in byte 18
|
|
|
+ * Xbox Series X firmware version 5.5, report is 48 bytes, share button is in byte 22
|
|
|
+ */
|
|
|
+ if (size < 48) {
|
|
|
+ if (ctx->last_state[18] != data[18]) {
|
|
|
+ SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_MISC1, (data[18] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (ctx->last_state[22] != data[22]) {
|
|
|
+ SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_MISC1, (data[22] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|