From 1ee7c7db235140762aafa3bd687e13179811a974 Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Wed, 29 Apr 2026 09:52:22 -0700 Subject: [PATCH] Rework PADSetScancodeBinding --- include/dolphin/pad.h | 2 +- lib/dolphin/pad/pad.cpp | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/include/dolphin/pad.h b/include/dolphin/pad.h index ec2400e..8b0195c 100644 --- a/include/dolphin/pad.h +++ b/include/dolphin/pad.h @@ -155,7 +155,7 @@ const char* PADGetName(u32 port); // To set a key value the top bit of the scancode must be set. void PADSetButtonMapping(u32 port, PADButtonMapping mapping); void PADSetAllButtonMappings(u32 port, PADButtonMapping buttons[PAD_BUTTON_COUNT]); -void PADSetScancodeBinding(u32 port, PADButton, u16 scancode); +BOOL PADSetScancodeBinding(u32 port, PADButton, u16 scancode); PADButtonMapping* PADGetButtonMappings(u32 port, u32* buttonCount); void PADSetAxisMapping(u32 port, PADAxisMapping mapping); void PADSetAllAxisMappings(u32 port, PADAxisMapping axes[PAD_AXIS_COUNT]); diff --git a/lib/dolphin/pad/pad.cpp b/lib/dolphin/pad/pad.cpp index 6ce9e32..2313397 100644 --- a/lib/dolphin/pad/pad.cpp +++ b/lib/dolphin/pad/pad.cpp @@ -907,13 +907,18 @@ BOOL PADIsGCAdapter(u32 port) { return ctrl->m_isGameCube; } -void PADSetScancodeBinding(u32 port, PADButton button, s32 scancode) { +BOOL PADSetScancodeBinding(u32 port, PADButton button, s32 scancode) { auto* ctrl = aurora::input::get_controller_for_player(port); if (ctrl == nullptr) { - return; + return FALSE; } - auto* mapping = - std::find_if(ctrl->m_buttonMapping.begin(), ctrl->m_buttonMapping.end(), - [&button](const PADButtonMapping& mapping) { return mapping.padButton == button; }); - mapping->nativeButton = scancode | PAD_KEY_MASK; + + for (auto& mapping : ctrl->m_buttonMapping) { + if (mapping.padButton == button) { + mapping.nativeButton = scancode | PAD_KEY_MASK; + return TRUE; + } + } + + return FALSE; } \ No newline at end of file