Skip to content

Commit

Permalink
SDL: plumb previously unused digital trigger bits for PS4 controllers…
Browse files Browse the repository at this point in the history
…. Victrix fight stick only sets these bits and doesn't send the analog values

CR: SamL
  • Loading branch information
slouken committed Mar 30, 2020
1 parent f4a56d7 commit 3154d92
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/joystick/hidapi/SDL_hidapi_ps4.c
Expand Up @@ -423,6 +423,15 @@ HIDAPI_DriverPS4_HandleStatePacket(SDL_Joystick *joystick, hid_device *dev, SDL_
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_RIGHTSTICK, (data & 0x80) ? SDL_PRESSED : SDL_RELEASED);
}

/* Some fightsticks, ex: Victrix FS Pro will only this these digital trigger bits and not the analog values so this needs to run whenever the
trigger is evaluated
*/
if ((packet->rgucButtonsHatAndCounter[1] & 0x0C) != 0) {
Uint8 data = packet->rgucButtonsHatAndCounter[1];
packet->ucTriggerLeft = (data & 0x04) ? 255 : packet->ucTriggerLeft;
packet->ucTriggerRight = (data & 0x08) ? 255 : packet->ucTriggerRight;
}

if (ctx->last_state.rgucButtonsHatAndCounter[2] != packet->rgucButtonsHatAndCounter[2]) {
Uint8 data = (packet->rgucButtonsHatAndCounter[2] & 0x03);

Expand Down

0 comments on commit 3154d92

Please sign in to comment.