From 1d9bdd99c9a761852fad44cfe1c3851b44cac5ef Mon Sep 17 00:00:00 2001 From: SSimco <37044560+SSimco@users.noreply.github.com> Date: Sat, 9 May 2026 17:06:20 +0300 Subject: [PATCH] input: add methods to override button and axis values --- src/input/emulated/EmulatedController.cpp | 22 ++++++++++++++++++++++ src/input/emulated/EmulatedController.h | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/src/input/emulated/EmulatedController.cpp b/src/input/emulated/EmulatedController.cpp index 1e4db92a..7e9722bd 100644 --- a/src/input/emulated/EmulatedController.cpp +++ b/src/input/emulated/EmulatedController.cpp @@ -264,6 +264,12 @@ void EmulatedController::clear_controllers() float EmulatedController::get_axis_value(uint64 mapping) const { std::shared_lock lock(m_mutex); + const auto overriddenAxisMappingIt = m_overriddenAxisMappings.find(mapping); + if (overriddenAxisMappingIt != m_overriddenAxisMappings.cend() && overriddenAxisMappingIt->second != 0.0f) + { + return overriddenAxisMappingIt->second; + } + const auto it = m_mappings.find(mapping); if (it != m_mappings.cend()) { @@ -275,9 +281,25 @@ float EmulatedController::get_axis_value(uint64 mapping) const return 0; } +void EmulatedController::set_button_value(uint64 mapping, bool value) +{ + m_overriddenButtonMappings[mapping] = value; + +} +void EmulatedController::set_axis_value(uint64 mapping, float value) +{ + m_overriddenAxisMappings[mapping] = value; +} + bool EmulatedController::is_mapping_down(uint64 mapping) const { std::shared_lock lock(m_mutex); + const auto overriddenButtonMappingIt = m_overriddenButtonMappings.find(mapping); + if (overriddenButtonMappingIt != m_overriddenButtonMappings.cend() && overriddenButtonMappingIt->second) + { + return true; + } + const auto it = m_mappings.find(mapping); if (it != m_mappings.cend()) { diff --git a/src/input/emulated/EmulatedController.h b/src/input/emulated/EmulatedController.h index 41baffb9..11042c47 100644 --- a/src/input/emulated/EmulatedController.h +++ b/src/input/emulated/EmulatedController.h @@ -101,6 +101,8 @@ public: bool was_home_button_down() { return std::exchange(m_homebutton_down, false); } virtual bool set_default_mapping(const std::shared_ptr& controller) { return false; } + void set_button_value(uint64 mapping, bool value); + void set_axis_value(uint64 mapping, float value); protected: size_t m_player_index; @@ -118,6 +120,8 @@ protected: uint64 button; }; std::unordered_map m_mappings; + std::unordered_map m_overriddenButtonMappings; + std::unordered_map m_overriddenAxisMappings; bool m_homebutton_down = false; };