From 2ada21dbacc6a811a076d6c3dd8263050f67e2fd Mon Sep 17 00:00:00 2001 From: Julio Centeno Date: Tue, 12 May 2026 17:08:02 -0300 Subject: [PATCH] Allow Mouse mapping --- src/dusk/ui/controller_config.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/dusk/ui/controller_config.cpp b/src/dusk/ui/controller_config.cpp index 2c1d815ceb..ed7f703d39 100644 --- a/src/dusk/ui/controller_config.cpp +++ b/src/dusk/ui/controller_config.cpp @@ -234,6 +234,14 @@ Rml::String keyboard_key_name(s32 scancode) { return "Mouse X1"; case PAD_KEY_MOUSE_X2: return "Mouse X2"; + case PAD_KEY_MOUSE_AXIS_X_POS: + return "Mouse X+"; + case PAD_KEY_MOUSE_AXIS_X_NEG: + return "Mouse X-"; + case PAD_KEY_MOUSE_AXIS_Y_POS: + return "Mouse Y+"; + case PAD_KEY_MOUSE_AXIS_Y_NEG: + return "Mouse Y-"; default: break; } @@ -284,6 +292,14 @@ s32 keyboard_key_pressed() { return -(btn + 1); // maps to PAD_KEY_MOUSE_LEFT (-2), etc. } } + float relX, relY; + SDL_GetRelativeMouseState(&relX, &relY); + if (std::abs(relX) > 5.0f) { + return relX > 0 ? PAD_KEY_MOUSE_AXIS_X_POS : PAD_KEY_MOUSE_AXIS_X_NEG; + } + if (std::abs(relY) > 5.0f) { + return relY > 0 ? PAD_KEY_MOUSE_AXIS_Y_POS : PAD_KEY_MOUSE_AXIS_Y_NEG; + } return PAD_KEY_INVALID; } @@ -974,6 +990,9 @@ void ControllerConfigWindow::poll_pending_binding() { if (!mPendingBindingArmed) { if (pending_input_neutral()) { mPendingBindingArmed = true; + // Flush any mouse movement that occurred during the click/arming process + float dummyX, dummyY; + SDL_GetRelativeMouseState(&dummyX, &dummyY); } return; }