From 74ff82f4a2a2676d7d03a43b127b9a3337c76604 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 5 Nov 2024 00:07:27 -0800 Subject: [PATCH] Support multiple joystick buttons bound to the same gamepad button (cherry picked from commit ed943318e2bac41aefbeab414d0e218e7a78793d) --- src/joystick/SDL_gamecontroller.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index 9bd89d0a7b..d3a4668a62 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -2364,23 +2364,19 @@ Uint8 SDL_GameControllerGetButton(SDL_GameController *gamecontroller, SDL_GameCo if (binding->input.axis.axis_min < binding->input.axis.axis_max) { valid_input_range = (value >= binding->input.axis.axis_min && value <= binding->input.axis.axis_max); if (valid_input_range) { - retval = (value >= threshold) ? SDL_PRESSED : SDL_RELEASED; - break; + retval |= (value >= threshold) ? SDL_PRESSED : SDL_RELEASED; } } else { valid_input_range = (value >= binding->input.axis.axis_max && value <= binding->input.axis.axis_min); if (valid_input_range) { - retval = (value <= threshold) ? SDL_PRESSED : SDL_RELEASED; - break; + retval |= (value <= threshold) ? SDL_PRESSED : SDL_RELEASED; } } } else if (binding->inputType == SDL_CONTROLLER_BINDTYPE_BUTTON) { - retval = SDL_JoystickGetButton(gamecontroller->joystick, binding->input.button); - break; + retval |= SDL_JoystickGetButton(gamecontroller->joystick, binding->input.button); } else if (binding->inputType == SDL_CONTROLLER_BINDTYPE_HAT) { int hat_mask = SDL_JoystickGetHat(gamecontroller->joystick, binding->input.hat.hat); - retval = (hat_mask & binding->input.hat.hat_mask) ? SDL_PRESSED : SDL_RELEASED; - break; + retval |= (hat_mask & binding->input.hat.hat_mask) ? SDL_PRESSED : SDL_RELEASED; } } }