From 57e5c7f6ee525c16ebe6c95b365235c79f09cc59 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Wed, 15 Nov 2023 22:09:09 -0800
Subject: [PATCH] We'll just use the legacy names for face buttons in the
mappings
This fixes being able to accidentally rebind the face buttons in testcontroller
---
src/joystick/SDL_gamepad.c | 57 +++++++++++++-------------------------
test/gamepadutils.c | 24 ----------------
2 files changed, 19 insertions(+), 62 deletions(-)
diff --git a/src/joystick/SDL_gamepad.c b/src/joystick/SDL_gamepad.c
index 689816abd370..d190aac80bda 100644
--- a/src/joystick/SDL_gamepad.c
+++ b/src/joystick/SDL_gamepad.c
@@ -1066,10 +1066,10 @@ const char *SDL_GetGamepadStringForAxis(SDL_GamepadAxis axis)
}
static const char *map_StringForGamepadButton[] = {
- "s",
- "e",
- "w",
- "n",
+ "a",
+ "b",
+ "x",
+ "y",
"back",
"guide",
"start",
@@ -1103,43 +1103,24 @@ SDL_GamepadButton SDL_PrivateGetGamepadButtonFromString(const char *str, SDL_boo
for (i = 0; i < SDL_arraysize(map_StringForGamepadButton); ++i) {
if (SDL_strcasecmp(str, map_StringForGamepadButton[i]) == 0) {
+ if (baxy) {
+ /* Need to swap face buttons */
+ switch (i) {
+ case SDL_GAMEPAD_BUTTON_SOUTH:
+ return SDL_GAMEPAD_BUTTON_EAST;
+ case SDL_GAMEPAD_BUTTON_EAST:
+ return SDL_GAMEPAD_BUTTON_SOUTH;
+ case SDL_GAMEPAD_BUTTON_WEST:
+ return SDL_GAMEPAD_BUTTON_NORTH;
+ case SDL_GAMEPAD_BUTTON_NORTH:
+ return SDL_GAMEPAD_BUTTON_WEST;
+ default:
+ break;
+ }
+ }
return (SDL_GamepadButton)i;
}
}
-
- if (SDL_strcasecmp(str, "a") == 0) {
- if (baxy) {
- return SDL_GAMEPAD_BUTTON_EAST;
- } else {
- return SDL_GAMEPAD_BUTTON_SOUTH;
- }
- } else if (SDL_strcasecmp(str, "b") == 0) {
- if (baxy) {
- return SDL_GAMEPAD_BUTTON_SOUTH;
- } else {
- return SDL_GAMEPAD_BUTTON_EAST;
- }
- } else if (SDL_strcasecmp(str, "x") == 0) {
- if (baxy) {
- return SDL_GAMEPAD_BUTTON_NORTH;
- } else {
- return SDL_GAMEPAD_BUTTON_WEST;
- }
- } else if (SDL_strcasecmp(str, "y") == 0) {
- if (baxy) {
- return SDL_GAMEPAD_BUTTON_WEST;
- } else {
- return SDL_GAMEPAD_BUTTON_NORTH;
- }
- } else if (SDL_strcasecmp(str, "cross") == 0) {
- return SDL_GAMEPAD_BUTTON_SOUTH;
- } else if (SDL_strcasecmp(str, "circle") == 0) {
- return SDL_GAMEPAD_BUTTON_EAST;
- } else if (SDL_strcasecmp(str, "square") == 0) {
- return SDL_GAMEPAD_BUTTON_WEST;
- } else if (SDL_strcasecmp(str, "triangle") == 0) {
- return SDL_GAMEPAD_BUTTON_NORTH;
- }
return SDL_GAMEPAD_BUTTON_INVALID;
}
SDL_GamepadButton SDL_GetGamepadButtonFromString(const char *str)
diff --git a/test/gamepadutils.c b/test/gamepadutils.c
index a404591a16e9..01641ea3c6de 100644
--- a/test/gamepadutils.c
+++ b/test/gamepadutils.c
@@ -2292,33 +2292,9 @@ static void ConvertBAXYMapping(MappingParts *parts)
}
}
-static void UseLegacyButtonNames(MappingParts *parts)
-{
- int i;
-
- for (i = 0; i < parts->num_elements; ++i) {
- char *key = parts->keys[i];
-
- if (SDL_strcmp(key, "s") == 0) {
- parts->keys[i] = SDL_strdup("a");
- SDL_free(key);
- } else if (SDL_strcmp(key, "e") == 0) {
- parts->keys[i] = SDL_strdup("b");
- SDL_free(key);
- } else if (SDL_strcmp(key, "w") == 0) {
- parts->keys[i] = SDL_strdup("x");
- SDL_free(key);
- } else if (SDL_strcmp(key, "n") == 0) {
- parts->keys[i] = SDL_strdup("y");
- SDL_free(key);
- }
- }
-}
-
static void UpdateLegacyElements(MappingParts *parts)
{
ConvertBAXYMapping(parts);
- UseLegacyButtonNames(parts);
}
static SDL_bool CombineMappingAxes(MappingParts *parts)