|
@@ -1083,9 +1083,17 @@ HIDAPI_DriverPS5_HandleSimpleStatePacket(SDL_Joystick *joystick, SDL_hid_device
|
|
|
SDL_PrivateJoystickButton(joystick, 15, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
|
|
}
|
|
|
|
|
|
- axis = ((int)packet->ucTriggerLeft * 257) - 32768;
|
|
|
+ if (packet->ucTriggerLeft == 0 && (packet->rgucButtonsHatAndCounter[1] & 0x04)) {
|
|
|
+ axis = SDL_JOYSTICK_AXIS_MAX;
|
|
|
+ } else {
|
|
|
+ axis = ((int)packet->ucTriggerLeft * 257) - 32768;
|
|
|
+ }
|
|
|
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_TRIGGERLEFT, axis);
|
|
|
- axis = ((int)packet->ucTriggerRight * 257) - 32768;
|
|
|
+ if (packet->ucTriggerRight == 0 && (packet->rgucButtonsHatAndCounter[1] & 0x08)) {
|
|
|
+ axis = SDL_JOYSTICK_AXIS_MAX;
|
|
|
+ } else {
|
|
|
+ axis = ((int)packet->ucTriggerRight * 257) - 32768;
|
|
|
+ }
|
|
|
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_TRIGGERRIGHT, axis);
|
|
|
axis = ((int)packet->ucLeftJoystickX * 257) - 32768;
|
|
|
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_LEFTX, axis);
|
|
@@ -1178,13 +1186,13 @@ HIDAPI_DriverPS5_HandleStatePacketCommon(SDL_Joystick *joystick, SDL_hid_device
|
|
|
SDL_PrivateJoystickButton(joystick, 16, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
|
|
}
|
|
|
|
|
|
- if (packet->rgucButtonsAndHat[1] & 0x04) {
|
|
|
+ if (packet->ucTriggerLeft == 0 && (packet->rgucButtonsAndHat[1] & 0x04)) {
|
|
|
axis = SDL_JOYSTICK_AXIS_MAX;
|
|
|
} else {
|
|
|
axis = ((int)packet->ucTriggerLeft * 257) - 32768;
|
|
|
}
|
|
|
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_TRIGGERLEFT, axis);
|
|
|
- if (packet->rgucButtonsAndHat[1] & 0x08) {
|
|
|
+ if (packet->ucTriggerRight == 0 && (packet->rgucButtonsAndHat[1] & 0x08)) {
|
|
|
axis = SDL_JOYSTICK_AXIS_MAX;
|
|
|
} else {
|
|
|
axis = ((int)packet->ucTriggerRight * 257) - 32768;
|