diff options
author | Narr the Reg <juangerman-13@hotmail.com> | 2022-09-06 18:20:53 +0200 |
---|---|---|
committer | Narr the Reg <juangerman-13@hotmail.com> | 2022-09-06 18:21:28 +0200 |
commit | 2898be69f414a2735b8693c58e039097853f5ec7 (patch) | |
tree | dc91ebee52e562781cbe1f58cdeedb4ba468438f | |
parent | Merge pull request #8843 from Kelebek1/SILENCE_WENCH (diff) | |
download | yuzu-2898be69f414a2735b8693c58e039097853f5ec7.tar yuzu-2898be69f414a2735b8693c58e039097853f5ec7.tar.gz yuzu-2898be69f414a2735b8693c58e039097853f5ec7.tar.bz2 yuzu-2898be69f414a2735b8693c58e039097853f5ec7.tar.lz yuzu-2898be69f414a2735b8693c58e039097853f5ec7.tar.xz yuzu-2898be69f414a2735b8693c58e039097853f5ec7.tar.zst yuzu-2898be69f414a2735b8693c58e039097853f5ec7.zip |
-rw-r--r-- | src/common/input.h | 5 | ||||
-rw-r--r-- | src/core/hid/input_converter.cpp | 3 | ||||
-rw-r--r-- | src/input_common/input_poller.cpp | 1 | ||||
-rw-r--r-- | src/yuzu/configuration/configure_input_player.cpp | 6 |
4 files changed, 15 insertions, 0 deletions
diff --git a/src/common/input.h b/src/common/input.h index 213aa2384..825b0d650 100644 --- a/src/common/input.h +++ b/src/common/input.h @@ -102,6 +102,8 @@ struct AnalogProperties { float offset{}; // Invert direction of the sensor data bool inverted{}; + // Press once to activate, press again to release + bool toggle{}; }; // Single analog sensor data @@ -115,8 +117,11 @@ struct AnalogStatus { struct ButtonStatus { Common::UUID uuid{}; bool value{}; + // Invert value of the button bool inverted{}; + // Press once to activate, press again to release bool toggle{}; + // Internal lock for the toggle status bool locked{}; }; diff --git a/src/core/hid/input_converter.cpp b/src/core/hid/input_converter.cpp index 68d143a01..52fb69e9c 100644 --- a/src/core/hid/input_converter.cpp +++ b/src/core/hid/input_converter.cpp @@ -52,6 +52,9 @@ Common::Input::ButtonStatus TransformToButton(const Common::Input::CallbackStatu Common::Input::ButtonStatus status{}; switch (callback.type) { case Common::Input::InputType::Analog: + status.value = TransformToTrigger(callback).pressed.value; + status.toggle = callback.analog_status.properties.toggle; + break; case Common::Input::InputType::Trigger: status.value = TransformToTrigger(callback).pressed.value; break; diff --git a/src/input_common/input_poller.cpp b/src/input_common/input_poller.cpp index 133422d5c..ffb9b945e 100644 --- a/src/input_common/input_poller.cpp +++ b/src/input_common/input_poller.cpp @@ -824,6 +824,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", "+") == "-", + .toggle = static_cast<bool>(params.Get("toggle", false)), }; input_engine->PreSetController(identifier); input_engine->PreSetAxis(identifier, axis); diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index 109689c88..972c311f6 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -382,6 +382,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("Toggle axis"), [&] { + const bool toggle_value = !param.Get("toggle", false); + param.Set("toggle", toggle_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); |