summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgerman77 <juangerman-13@hotmail.com>2021-07-15 23:43:51 -0500
committergerman77 <juangerman-13@hotmail.com>2021-07-15 23:56:57 -0500
commit240019fecae5224d0532d0057650f27de017ebad (patch)
tree4aa109425266a762f812ab22bf762287de35c2b9 /src
parent3cd3230295a4752c57df1364bc14b17ffdcde762 (diff)
input_common: Make button threshold customizable
Diffstat (limited to 'src')
-rw-r--r--src/input_common/sdl/sdl_impl.cpp6
-rw-r--r--src/yuzu/configuration/configure_input_player.cpp10
2 files changed, 13 insertions, 3 deletions
diff --git a/src/input_common/sdl/sdl_impl.cpp b/src/input_common/sdl/sdl_impl.cpp
index 68672a92b..2f7ccdd37 100644
--- a/src/input_common/sdl/sdl_impl.cpp
+++ b/src/input_common/sdl/sdl_impl.cpp
@@ -660,7 +660,8 @@ public:
if (params.Has("axis")) {
const int axis = params.Get("axis", 0);
- const float threshold = params.Get("threshold", 0.5f);
+ // Convert range from (0.0, 1.0) to (-1.0, 1.0)
+ const float threshold = (params.Get("threshold", 0.5f) - 0.5f) * 2.0f;
const std::string direction_name = params.Get("direction", "");
bool trigger_if_greater;
if (direction_name == "+") {
@@ -933,12 +934,11 @@ Common::ParamPackage BuildAnalogParamPackageForButton(int port, std::string guid
params.Set("port", port);
params.Set("guid", std::move(guid));
params.Set("axis", axis);
+ params.Set("threshold", "0.5");
if (value > 0) {
params.Set("direction", "+");
- params.Set("threshold", "0.5");
} else {
params.Set("direction", "-");
- params.Set("threshold", "-0.5");
}
return params;
}
diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp
index d5d624b96..0d98e0986 100644
--- a/src/yuzu/configuration/configure_input_player.cpp
+++ b/src/yuzu/configuration/configure_input_player.cpp
@@ -313,6 +313,16 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i
buttons_param[button_id].Set("toggle", toggle_value);
button_map[button_id]->setText(ButtonToText(buttons_param[button_id]));
});
+ if (buttons_param[button_id].Has("threshold")) {
+ context_menu.addAction(tr("Set threshold"), [&] {
+ const int button_threshold = static_cast<int>(
+ buttons_param[button_id].Get("threshold", 0.5f) * 100.0f);
+ const int new_threshold = QInputDialog::getInt(
+ this, tr("Set threshold"), tr("Choose a value between 0% and 100%"),
+ button_threshold, 0, 100);
+ buttons_param[button_id].Set("threshold", new_threshold / 100.0f);
+ });
+ }
context_menu.exec(button_map[button_id]->mapToGlobal(menu_location));
ui->controllerFrame->SetPlayerInput(player_index, buttons_param, analogs_param);
});