From e0b2c82b6b44d47b75c7e4e94fdcfd127489210e Mon Sep 17 00:00:00 2001 From: AL2009man <67606569+AL2009man@users.noreply.github.com> Date: Mon, 28 Apr 2025 23:35:20 -0400 Subject: [PATCH 1/6] Added addition HIDAPI Joystick driver support added HIDAPI Joystick driver for major Controller Types: * Nintendo Switch controllers (`SDL_HINT_JOYSTICK_HIDAPI_SWITCH`, `SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC`, `SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS`, `SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS`) * Steam Controller (`SDL_HINT_JOYSTICK_HIDAPI_STEAM`) * Steam Deck built-in (`SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK`) --- UnleashedRecomp/hid/driver/sdl_hid.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/UnleashedRecomp/hid/driver/sdl_hid.cpp b/UnleashedRecomp/hid/driver/sdl_hid.cpp index aa0e477..c7a7f6b 100644 --- a/UnleashedRecomp/hid/driver/sdl_hid.cpp +++ b/UnleashedRecomp/hid/driver/sdl_hid.cpp @@ -324,13 +324,19 @@ void hid::Init() { SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE, "1"); + SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_WII, "1"); + SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_SWITCH, "1"); + SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC, "1"); + SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS, "1"); + SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS3, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS4, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS5, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE, "1"); - SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_WII, "1"); + SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_STEAM, "1"); + SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK, "1"); SDL_SetHint(SDL_HINT_XINPUT_ENABLED, "1"); SDL_SetHint(SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS, "0"); // Uses Button Labels. This hint is disabled for Nintendo Controllers. From 2afc09295d211631ce34b347c3420ce42cb3b839 Mon Sep 17 00:00:00 2001 From: AL2009man <67606569+AL2009man@users.noreply.github.com> Date: Tue, 29 Apr 2025 00:10:53 -0400 Subject: [PATCH 2/6] remove Nintendo Switch Online Classics hid --- UnleashedRecomp/hid/driver/sdl_hid.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/UnleashedRecomp/hid/driver/sdl_hid.cpp b/UnleashedRecomp/hid/driver/sdl_hid.cpp index c7a7f6b..876f6d4 100644 --- a/UnleashedRecomp/hid/driver/sdl_hid.cpp +++ b/UnleashedRecomp/hid/driver/sdl_hid.cpp @@ -326,7 +326,6 @@ void hid::Init() SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_WII, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_SWITCH, "1"); - SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS3, "1"); From ec13b6f0f6c98941f600ba418409af89c4365fdf Mon Sep 17 00:00:00 2001 From: AL2009man <67606569+AL2009man@users.noreply.github.com> Date: Wed, 18 Jun 2025 23:00:30 -0400 Subject: [PATCH 3/6] added SDL_GameControllerDB support added `SDL_GameControllerAddMappingsFromFile` to allow support for SDL_GameControllerDB as a option, for those who prefer Community-driven Gamepad database (tends to be far more up-to-date than main SDL) --- UnleashedRecomp/hid/driver/sdl_hid.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/UnleashedRecomp/hid/driver/sdl_hid.cpp b/UnleashedRecomp/hid/driver/sdl_hid.cpp index 876f6d4..f9b8f60 100644 --- a/UnleashedRecomp/hid/driver/sdl_hid.cpp +++ b/UnleashedRecomp/hid/driver/sdl_hid.cpp @@ -344,6 +344,13 @@ void hid::Init() SDL_AddEventWatch(HID_OnSDLEvent, nullptr); SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER); + + // Load SDL_GameControllerDB mappings from file + const char* mappingFile = "gamecontrollerdb.txt"; + int mappingsAdded = SDL_GameControllerAddMappingsFromFile(mappingFile); + if (mappingsAdded > 0) { + LOGFN("Loaded {} controller mapping(s) from SDL_GameControllerDB file", mappingsAdded, mappingFile); + } } uint32_t hid::GetState(uint32_t dwUserIndex, XAMINPUT_STATE* pState) From d4f311da361ca5d03ecbe6a32164ae65312f1236 Mon Sep 17 00:00:00 2001 From: AL2009man <67606569+AL2009man@users.noreply.github.com> Date: Fri, 1 Aug 2025 14:39:35 -0400 Subject: [PATCH 4/6] simplified `SDL_GameControllerAddMappingsFromFile` code --- UnleashedRecomp/hid/driver/sdl_hid.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/UnleashedRecomp/hid/driver/sdl_hid.cpp b/UnleashedRecomp/hid/driver/sdl_hid.cpp index f9b8f60..1e6b637 100644 --- a/UnleashedRecomp/hid/driver/sdl_hid.cpp +++ b/UnleashedRecomp/hid/driver/sdl_hid.cpp @@ -345,11 +345,9 @@ void hid::Init() SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER); - // Load SDL_GameControllerDB mappings from file - const char* mappingFile = "gamecontrollerdb.txt"; - int mappingsAdded = SDL_GameControllerAddMappingsFromFile(mappingFile); - if (mappingsAdded > 0) { - LOGFN("Loaded {} controller mapping(s) from SDL_GameControllerDB file", mappingsAdded, mappingFile); + // Load controller mappings from SDL_GameControllerDB + if (int mappings = SDL_GameControllerAddMappingsFromFile("gamecontrollerdb.txt"); mappings > 0) { + LOGFN("Loaded {} controller mappings", mappings); } } From 135137d0a4fa5486a64e2a216aa1e6512aea403b Mon Sep 17 00:00:00 2001 From: AL2009man <67606569+AL2009man@users.noreply.github.com> Date: Fri, 1 Aug 2025 15:15:48 -0400 Subject: [PATCH 5/6] Changed LOGFN name to indicate SDL_GameControllerDB file is in use --- UnleashedRecomp/hid/driver/sdl_hid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnleashedRecomp/hid/driver/sdl_hid.cpp b/UnleashedRecomp/hid/driver/sdl_hid.cpp index 1e6b637..6563c20 100644 --- a/UnleashedRecomp/hid/driver/sdl_hid.cpp +++ b/UnleashedRecomp/hid/driver/sdl_hid.cpp @@ -347,7 +347,7 @@ void hid::Init() // Load controller mappings from SDL_GameControllerDB if (int mappings = SDL_GameControllerAddMappingsFromFile("gamecontrollerdb.txt"); mappings > 0) { - LOGFN("Loaded {} controller mappings", mappings); + LOGFN("Loaded {} controller mapping(s) from SDL_GameControllerDB file", mappings); } } From 12fe00ce73e2c797eca49025f615ad79a3b5a1b3 Mon Sep 17 00:00:00 2001 From: AL2009man <67606569+AL2009man@users.noreply.github.com> Date: Fri, 1 Aug 2025 15:24:34 -0400 Subject: [PATCH 6/6] changed LOGN mesaage, it now includes the db.txt file on the logfn --- UnleashedRecomp/hid/driver/sdl_hid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnleashedRecomp/hid/driver/sdl_hid.cpp b/UnleashedRecomp/hid/driver/sdl_hid.cpp index 6563c20..14b5209 100644 --- a/UnleashedRecomp/hid/driver/sdl_hid.cpp +++ b/UnleashedRecomp/hid/driver/sdl_hid.cpp @@ -347,7 +347,7 @@ void hid::Init() // Load controller mappings from SDL_GameControllerDB if (int mappings = SDL_GameControllerAddMappingsFromFile("gamecontrollerdb.txt"); mappings > 0) { - LOGFN("Loaded {} controller mapping(s) from SDL_GameControllerDB file", mappings); + LOGFN("Loaded {} controller mapping(s) from SDL_GameControllerDB ({})", mappings, "gamecontrollerdb.txt"); } }