From d7ad994fb624e7fc0371c4e0c8a7124b48b41e69 Mon Sep 17 00:00:00 2001 From: Dima Katashov <476302-ufnd@users.noreply.gitlab.com> Date: Fri, 5 Dec 2025 05:12:35 +0200 Subject: [PATCH] Add support for modern SDL controller buttons (Touchpad, Misc1, Paddles) --- apps/openmw/mwinput/controllermanager.cpp | 6 ++++++ apps/openmw/mwlua/inputbindings.cpp | 7 +++++++ components/sdlutil/sdlmappings.cpp | 12 ++++++++++++ files/lua_api/openmw/input.lua | 6 ++++++ 4 files changed, 31 insertions(+) diff --git a/apps/openmw/mwinput/controllermanager.cpp b/apps/openmw/mwinput/controllermanager.cpp index c1f73ae7c9..ddf8c1c8b0 100644 --- a/apps/openmw/mwinput/controllermanager.cpp +++ b/apps/openmw/mwinput/controllermanager.cpp @@ -546,6 +546,12 @@ namespace MWInput return "textures/omw_psx_button_triangle.dds"; return "textures/omw_steam_button_y.dds"; case SDL_CONTROLLER_BUTTON_GUIDE: + case SDL_CONTROLLER_BUTTON_MISC1: + case SDL_CONTROLLER_BUTTON_PADDLE1: + case SDL_CONTROLLER_BUTTON_PADDLE2: + case SDL_CONTROLLER_BUTTON_PADDLE3: + case SDL_CONTROLLER_BUTTON_PADDLE4: + case SDL_CONTROLLER_BUTTON_TOUCHPAD: default: return {}; } diff --git a/apps/openmw/mwlua/inputbindings.cpp b/apps/openmw/mwlua/inputbindings.cpp index 167d234f0e..0bd1f9e6f8 100644 --- a/apps/openmw/mwlua/inputbindings.cpp +++ b/apps/openmw/mwlua/inputbindings.cpp @@ -345,6 +345,13 @@ namespace MWLua { "DPadDown", SDL_CONTROLLER_BUTTON_DPAD_DOWN }, { "DPadLeft", SDL_CONTROLLER_BUTTON_DPAD_LEFT }, { "DPadRight", SDL_CONTROLLER_BUTTON_DPAD_RIGHT }, + { "Misc1", SDL_CONTROLLER_BUTTON_MISC1 }, + { "Paddle1", SDL_CONTROLLER_BUTTON_PADDLE1 }, + { "Paddle2", SDL_CONTROLLER_BUTTON_PADDLE2 }, + { "Paddle3", SDL_CONTROLLER_BUTTON_PADDLE3 }, + { "Paddle4", SDL_CONTROLLER_BUTTON_PADDLE4 }, + { "Touchpad", SDL_CONTROLLER_BUTTON_TOUCHPAD }, + { "Max", SDL_CONTROLLER_BUTTON_MAX }, })); api["CONTROLLER_AXIS"] = LuaUtil::makeStrictReadOnly(LuaUtil::tableFromPairs(lua, diff --git a/components/sdlutil/sdlmappings.cpp b/components/sdlutil/sdlmappings.cpp index 8a82206c33..a9d8d617fe 100644 --- a/components/sdlutil/sdlmappings.cpp +++ b/components/sdlutil/sdlmappings.cpp @@ -33,12 +33,24 @@ namespace SDLUtil return "Left Shoulder"; case SDL_CONTROLLER_BUTTON_LEFTSTICK: return "Left Stick Button"; + case SDL_CONTROLLER_BUTTON_MISC1: + return "Misc 1"; + case SDL_CONTROLLER_BUTTON_PADDLE1: + return "Paddle 1"; + case SDL_CONTROLLER_BUTTON_PADDLE2: + return "Paddle 2"; + case SDL_CONTROLLER_BUTTON_PADDLE3: + return "Paddle 3"; + case SDL_CONTROLLER_BUTTON_PADDLE4: + return "Paddle 4"; case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER: return "Right Shoulder"; case SDL_CONTROLLER_BUTTON_RIGHTSTICK: return "Right Stick Button"; case SDL_CONTROLLER_BUTTON_START: return "Start Button"; + case SDL_CONTROLLER_BUTTON_TOUCHPAD: + return "Touchpad"; case SDL_CONTROLLER_BUTTON_X: return "X Button"; case SDL_CONTROLLER_BUTTON_Y: diff --git a/files/lua_api/openmw/input.lua b/files/lua_api/openmw/input.lua index d5973022af..ae23a84c72 100644 --- a/files/lua_api/openmw/input.lua +++ b/files/lua_api/openmw/input.lua @@ -200,6 +200,12 @@ -- @field [parent=#CONTROLLER_BUTTON] #number DPadDown -- @field [parent=#CONTROLLER_BUTTON] #number DPadLeft -- @field [parent=#CONTROLLER_BUTTON] #number DPadRight +-- @field [parent=#CONTROLLER_BUTTON] #number Misc1 +-- @field [parent=#CONTROLLER_BUTTON] #number Paddle1 +-- @field [parent=#CONTROLLER_BUTTON] #number Paddle2 +-- @field [parent=#CONTROLLER_BUTTON] #number Paddle3 +-- @field [parent=#CONTROLLER_BUTTON] #number Paddle4 +-- @field [parent=#CONTROLLER_BUTTON] #number Touchpad --- -- Values that can be passed to onControllerButtonPress/onControllerButtonRelease engine handlers.