From 2b7b3d8729b4695cb4c5d7683fd4d2207d62f0da Mon Sep 17 00:00:00 2001 From: Stenzek Date: Tue, 7 Jan 2025 13:01:36 +1000 Subject: [PATCH] SDLInputSource: Allow inverting pad axes Not really sure where this would happen, but whatever. --- src/util/sdl_input_source.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/util/sdl_input_source.cpp b/src/util/sdl_input_source.cpp index b59d7b4cc6..f0468eeaa5 100644 --- a/src/util/sdl_input_source.cpp +++ b/src/util/sdl_input_source.cpp @@ -412,7 +412,7 @@ std::optional SDLInputSource::ParseKeyString(std::string_view d else if (binding[0] == '+' || binding[0] == '-') { // likely an axis - const std::string_view axis_name(binding.substr(1)); + std::string_view axis_name(binding.substr(1)); if (axis_name.starts_with("Axis")) { @@ -426,6 +426,13 @@ std::optional SDLInputSource::ParseKeyString(std::string_view d return key; } } + + if (!axis_name.empty() && axis_name.back() == '~') + { + axis_name = axis_name.substr(0, axis_name.size() - 1); + key.invert = true; + } + for (u32 i = 0; i < std::size(s_sdl_axis_names); i++) { if (axis_name == s_sdl_axis_names[i]) @@ -505,7 +512,8 @@ TinyString SDLInputSource::ConvertKeyToString(InputBindingKey key) (key.modifier == InputModifier::FullAxis ? "Full" : (key.modifier == InputModifier::Negate ? "-" : "+")); if (key.data < std::size(s_sdl_axis_names)) { - ret.format("SDL-{}/{}{}", static_cast(key.source_index), modifier, s_sdl_axis_names[key.data]); + ret.format("SDL-{}/{}{}{}", static_cast(key.source_index), modifier, s_sdl_axis_names[key.data], + key.invert ? "~" : ""); } else {