diff options
| -rw-r--r-- | src/common/input.h | 2 | ||||
| -rw-r--r-- | src/core/hid/input_converter.cpp | 1 | ||||
| -rw-r--r-- | src/input_common/input_poller.cpp | 1 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player.cpp | 10 | 
4 files changed, 12 insertions, 2 deletions
| diff --git a/src/common/input.h b/src/common/input.h index 51b277c1f..66fb15f0a 100644 --- a/src/common/input.h +++ b/src/common/input.h @@ -111,6 +111,8 @@ struct AnalogProperties {      float offset{};      // Invert direction of the sensor data      bool inverted{}; +    // Invert the state if it's converted to a button +    bool inverted_button{};      // Press once to activate, press again to release      bool toggle{};  }; diff --git a/src/core/hid/input_converter.cpp b/src/core/hid/input_converter.cpp index 7cee39a53..a38e3bb3f 100644 --- a/src/core/hid/input_converter.cpp +++ b/src/core/hid/input_converter.cpp @@ -54,6 +54,7 @@ Common::Input::ButtonStatus TransformToButton(const Common::Input::CallbackStatu      case Common::Input::InputType::Analog:          status.value = TransformToTrigger(callback).pressed.value;          status.toggle = callback.analog_status.properties.toggle; +        status.inverted = callback.analog_status.properties.inverted_button;          break;      case Common::Input::InputType::Trigger:          status.value = TransformToTrigger(callback).pressed.value; diff --git a/src/input_common/input_poller.cpp b/src/input_common/input_poller.cpp index 8c6a6521a..5c2c4a463 100644 --- a/src/input_common/input_poller.cpp +++ b/src/input_common/input_poller.cpp @@ -939,6 +939,7 @@ std::unique_ptr<Common::Input::InputDevice> InputFactory::CreateAnalogDevice(          .threshold = std::clamp(params.Get("threshold", 0.5f), 0.0f, 1.0f),          .offset = std::clamp(params.Get("offset", 0.0f), -1.0f, 1.0f),          .inverted = params.Get("invert", "+") == "-", +        .inverted_button = params.Get("inverted", false) != 0,          .toggle = params.Get("toggle", false) != 0,      };      input_engine->PreSetController(identifier); diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index 50b62293e..54f42e0c9 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -206,7 +206,7 @@ QString ConfigureInputPlayer::ButtonToText(const Common::ParamPackage& param) {          }          if (param.Has("axis")) {              const QString axis = QString::fromStdString(param.Get("axis", "")); -            return QObject::tr("%1%2Axis %3").arg(toggle, invert, axis); +            return QObject::tr("%1%2%3Axis %4").arg(toggle, inverted, invert, axis);          }          if (param.Has("axis_x") && param.Has("axis_y") && param.Has("axis_z")) {              const QString axis_x = QString::fromStdString(param.Get("axis_x", "")); @@ -229,7 +229,7 @@ QString ConfigureInputPlayer::ButtonToText(const Common::ParamPackage& param) {          return QObject::tr("%1%2%3Hat %4").arg(turbo, toggle, inverted, button_name);      }      if (param.Has("axis")) { -        return QObject::tr("%1%2Axis %3").arg(toggle, inverted, button_name); +        return QObject::tr("%1%2%3Axis %4").arg(toggle, inverted, invert, button_name);      }      if (param.Has("motion")) {          return QObject::tr("%1%2Axis %3").arg(toggle, inverted, button_name); @@ -410,6 +410,12 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i                              button_map[button_id]->setText(ButtonToText(param));                              emulated_controller->SetButtonParam(button_id, param);                          }); +                        context_menu.addAction(tr("Invert button"), [&] { +                            const bool invert_value = !param.Get("inverted", false); +                            param.Set("inverted", invert_value); +                            button_map[button_id]->setText(ButtonToText(param)); +                            emulated_controller->SetButtonParam(button_id, param); +                        });                          context_menu.addAction(tr("Set threshold"), [&] {                              const int button_threshold =                                  static_cast<int>(param.Get("threshold", 0.5f) * 100.0f); | 
