From f4ce5b77e95d1f2a681055644e2931358b0038c7 Mon Sep 17 00:00:00 2001 From: codepuncher Date: Mon, 18 May 2026 20:21:36 +0100 Subject: [PATCH 1/4] chore: remove redundant explicit move-deletes --- src/InputHandler.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/InputHandler.h b/src/InputHandler.h index e53f892..ca26d3a 100644 --- a/src/InputHandler.h +++ b/src/InputHandler.h @@ -8,9 +8,7 @@ class InputHandler : static InputHandler* GetSingleton(); InputHandler(const InputHandler&) = delete; - InputHandler(InputHandler&&) = delete; InputHandler& operator=(const InputHandler&) = delete; - InputHandler& operator=(InputHandler&&) = delete; RE::BSEventNotifyControl ProcessEvent( RE::InputEvent* const* a_events, From ab79814d259cf9118ac0fe6f9b7b82adeb474255 Mon Sep 17 00:00:00 2001 From: codepuncher Date: Mon, 18 May 2026 20:39:37 +0100 Subject: [PATCH 2/4] chore: compute held duration only when needed --- src/InputHandler.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/InputHandler.cpp b/src/InputHandler.cpp index e6efeed..09d7dba 100644 --- a/src/InputHandler.cpp +++ b/src/InputHandler.cpp @@ -105,16 +105,15 @@ bool InputHandler::ProcessButton(const RE::ButtonEvent* btn) } if (btn->IsUp() && _pressTime) { - const auto held = std::chrono::duration( - std::chrono::steady_clock::now() - *_pressTime) - .count(); - _pressTime.reset(); - if (_mapTriggered) { _mapTriggered = false; } else { + const auto held = std::chrono::duration( + std::chrono::steady_clock::now() - *_pressTime) + .count(); DispatchShortPress(held); } + _pressTime.reset(); return true; } From a7ff9a2d556aa00b6c2cf691b0270aa95f3b76fb Mon Sep 17 00:00:00 2001 From: codepuncher Date: Mon, 18 May 2026 21:13:24 +0100 Subject: [PATCH 3/4] chore: use ButtonDef as ReadButton return type --- src/Plugin.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Plugin.cpp b/src/Plugin.cpp index d2c717f..1a8eae9 100644 --- a/src/Plugin.cpp +++ b/src/Plugin.cpp @@ -38,7 +38,7 @@ struct ButtonDef std::string displayName; }; -std::pair ReadButton(const CSimpleIniA& a_ini) +ButtonDef ReadButton(const CSimpleIniA& a_ini) { using Key = RE::BSWin32GamepadDevice::Key; @@ -56,10 +56,10 @@ std::pair ReadButton(const CSimpleIniA& a_ini) const auto it = kButtonMap.find(lower); if (it == kButtonMap.end()) { logger::warn("sButton '{}' is not a recognised button (valid: Start, Back) — using Start", raw); - return { InputHandler::kDefaultButton, "Start" }; + return { .keyCode = InputHandler::kDefaultButton, .displayName = "Start" }; } - return { it->second.keyCode, it->second.displayName }; + return it->second; } void OnInputLoaded() From 18651ba3851df4d78137b6bb25324c9613afa333 Mon Sep 17 00:00:00 2001 From: codepuncher Date: Mon, 18 May 2026 21:19:15 +0100 Subject: [PATCH 4/4] chore: mark SetButton noexcept --- src/InputHandler.cpp | 2 +- src/InputHandler.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/InputHandler.cpp b/src/InputHandler.cpp index 09d7dba..249ef91 100644 --- a/src/InputHandler.cpp +++ b/src/InputHandler.cpp @@ -10,7 +10,7 @@ InputHandler* InputHandler::GetSingleton() return &instance; } -void InputHandler::SetButton(std::uint32_t a_keyCode, std::string a_name) +void InputHandler::SetButton(std::uint32_t a_keyCode, std::string a_name) noexcept { buttonKeyCode = a_keyCode; buttonName = std::move(a_name); diff --git a/src/InputHandler.h b/src/InputHandler.h index ca26d3a..17dd7c4 100644 --- a/src/InputHandler.h +++ b/src/InputHandler.h @@ -24,7 +24,7 @@ class InputHandler : }; void SetHoldDuration(float a_duration) noexcept { holdDuration = a_duration; } - void SetButton(std::uint32_t a_keyCode, std::string a_name); + void SetButton(std::uint32_t a_keyCode, std::string a_name) noexcept; // Queries ControlMap for the user event bound to the configured button and caches it. // Call at kInputLoaded, kPostLoadGame, and kNewGame.