From 30db1a71fd6e62ea91856df3ff99b4f760c6392a Mon Sep 17 00:00:00 2001 From: David Griswold Date: Wed, 1 Apr 2026 16:31:21 +0300 Subject: [PATCH] Add "Press A (right) button" command to input automap that will map in nintendo layout if the user has a nintendo layout / prefers to match letters rather than position. --- .../icons/256x256/automap_face_buttons.png | Bin 0 -> 26330 bytes dist/qt_themes/default/theme_default.qrc | 1 + .../configuration/configure_input.cpp | 12 +++-- src/input_common/main.cpp | 4 +- src/input_common/sdl/sdl_impl.cpp | 45 ++++++++++++++++-- src/input_common/sdl/sdl_impl.h | 2 +- 6 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 dist/qt_themes/default/icons/256x256/automap_face_buttons.png diff --git a/dist/qt_themes/default/icons/256x256/automap_face_buttons.png b/dist/qt_themes/default/icons/256x256/automap_face_buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..581192664cd0c88fc9de1545fd278ed755e9f36f GIT binary patch literal 26330 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 af&T}p;j`U~>0yZg0000icons/48x48/sd_card.png icons/128x128/cartridge.png icons/256x256/azahar.png + icons/256x256/automap_face_buttons.png icons/48x48/star.png icons/256x256/plus_folder.png diff --git a/src/citra_qt/configuration/configure_input.cpp b/src/citra_qt/configuration/configure_input.cpp index 196ad8788..6f072a7ad 100644 --- a/src/citra_qt/configuration/configure_input.cpp +++ b/src/citra_qt/configuration/configure_input.cpp @@ -531,9 +531,15 @@ void ConfigureInput::MapFromButton(const Common::ParamPackage& params) { void ConfigureInput::AutoMap() { ui->buttonAutoMap->setEnabled(false); - if (QMessageBox::information(this, tr("Information"), - tr("After pressing OK, press any button on your joystick"), - QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Cancel) { + QMessageBox box(this); + box.setWindowTitle(tr("Auto map Controller")); + box.setText(tr("After pressing OK, press the A (right) button on your gamepad")); + box.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); + QPixmap pixmap(QStringLiteral(":/icons/default/256x256/automap_face_buttons.png")); + pixmap = pixmap.scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation); + box.setIconPixmap(pixmap); + int result = box.exec(); + if (result == QMessageBox::Cancel) { ui->buttonAutoMap->setEnabled(true); return; } diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp index 3af010902..3288e6979 100644 --- a/src/input_common/main.cpp +++ b/src/input_common/main.cpp @@ -202,8 +202,8 @@ Common::ParamPackage GetControllerButtonBinds(const Common::ParamPackage& params const auto native_button{static_cast(button)}; const auto engine{params.Get("engine", "")}; if (engine == "sdl") { - return dynamic_cast(sdl.get())->GetSDLControllerButtonBind( - params.Get("guid", "0"), params.Get("port", 0), native_button); + return dynamic_cast(sdl.get())->GetSDLControllerButtonBind(params, + native_button); } #ifdef ENABLE_GCADAPTER if (engine == "gcpad") { diff --git a/src/input_common/sdl/sdl_impl.cpp b/src/input_common/sdl/sdl_impl.cpp index 8f246f641..29a972f74 100644 --- a/src/input_common/sdl/sdl_impl.cpp +++ b/src/input_common/sdl/sdl_impl.cpp @@ -169,6 +169,27 @@ constexpr std::array + nintendo_to_3ds_mapping = {{ + SDL_CONTROLLER_BUTTON_A, + SDL_CONTROLLER_BUTTON_B, + SDL_CONTROLLER_BUTTON_X, + SDL_CONTROLLER_BUTTON_Y, + SDL_CONTROLLER_BUTTON_DPAD_UP, + SDL_CONTROLLER_BUTTON_DPAD_DOWN, + SDL_CONTROLLER_BUTTON_DPAD_LEFT, + SDL_CONTROLLER_BUTTON_DPAD_RIGHT, + SDL_CONTROLLER_BUTTON_LEFTSHOULDER, + SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, + SDL_CONTROLLER_BUTTON_START, + SDL_CONTROLLER_BUTTON_BACK, + SDL_CONTROLLER_BUTTON_INVALID, + SDL_CONTROLLER_BUTTON_INVALID, + SDL_CONTROLLER_BUTTON_INVALID, + SDL_CONTROLLER_BUTTON_INVALID, + SDL_CONTROLLER_BUTTON_GUIDE, + SDL_CONTROLLER_BUTTON_INVALID, + }}; const std::map axis_names = { {SDL_CONTROLLER_AXIS_LEFTX, "Left Stick X"}, @@ -249,13 +270,31 @@ std::shared_ptr SDLState::GetSDLJoystickBySDLID(SDL_JoystickID sdl_ return nullptr; } -Common::ParamPackage SDLState::GetSDLControllerButtonBind(const std::string& guid, int port, - Settings::NativeButton::Values button) { +/** + * Return the button binds param package for the button assuming the params passed in is for the + * n3ds "A" button to determine whether this is xbox or nintendo layout. If the passed in button + * is neither A nor B, default to xbox layout as the most common on desktop. + */ +Common::ParamPackage SDLState::GetSDLControllerButtonBind( + const Common::ParamPackage a_button_params, Settings::NativeButton::Values button) { + auto guid = a_button_params.Get("guid", 0); + auto port = a_button_params.Get("port", 0); + auto a_button = a_button_params.Get("button", -1); + auto api = a_button_params.Get("api", "joystick"); + // for xinputs, the "A" or right button would normally register as the B button. But if the + // user is either using a nintendo-layout controller or using xinput but would rather the labels + // match than the icons, they can press the button that appears as "A" and trigger nintendo + // automap + bool is_nintendo_layout = + api == "controller" && a_button == SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_A; + Common::ParamPackage params({{"engine", "sdl"}}); params.Set("guid", guid); params.Set("port", port); - auto mapped_button = xinput_to_3ds_mapping[static_cast(button)]; + auto mapped_button = is_nintendo_layout ? nintendo_to_3ds_mapping[static_cast(button)] + : xinput_to_3ds_mapping[static_cast(button)]; + params.Set("api", "controller"); if (button == Settings::NativeButton::Values::ZL) { params.Set("axis", SDL_CONTROLLER_AXIS_TRIGGERLEFT); diff --git a/src/input_common/sdl/sdl_impl.h b/src/input_common/sdl/sdl_impl.h index 7de96c3f0..3331312ce 100644 --- a/src/input_common/sdl/sdl_impl.h +++ b/src/input_common/sdl/sdl_impl.h @@ -36,7 +36,7 @@ public: const std::string& guid); std::shared_ptr GetSDLJoystickBySDLID(SDL_JoystickID sdl_id); - Common::ParamPackage GetSDLControllerButtonBind(const std::string& guid, int port, + Common::ParamPackage GetSDLControllerButtonBind(const Common::ParamPackage a_button_params, Settings::NativeButton::Values button); Common::ParamPackage GetSDLControllerAnalogBindByGUID(const std::string& guid, int port, Settings::NativeAnalog::Values analog);