From 570752a7a5714abc292470f9c2220a2bd26a275d Mon Sep 17 00:00:00 2001 From: str1k3r <115313679+S1l3ntStr1ke87@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:13:52 -0400 Subject: [PATCH] fix: checking for touchpad on all controllers --- 4J_Input/Windows64/INP_ForceFeedback.cpp | 3 ++- 4J_Input/Windows64/INP_Main.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/4J_Input/Windows64/INP_ForceFeedback.cpp b/4J_Input/Windows64/INP_ForceFeedback.cpp index 02fa3b4..c9b6e18 100644 --- a/4J_Input/Windows64/INP_ForceFeedback.cpp +++ b/4J_Input/Windows64/INP_ForceFeedback.cpp @@ -23,6 +23,7 @@ SOFTWARE. */ #include "INP_ForceFeedback.h" +#include "INP_Main.h" void CForceFeedback::Initialise(int iInputStateC, unsigned char ucMapC, unsigned char ucActionC, unsigned char ucMenuActionC) { @@ -109,7 +110,7 @@ void CForceFeedback::Tick(void) while (pRumbleNode) { RUMBLE_EFFECT *pRumble = pRumbleNode->GetDataAs(); - SDL_Gamepad* m_pGamepad = SDL_GetGamepadFromPlayerIndex(pRumble->m_Pad); + SDL_Gamepad* m_pGamepad = InternalInputManager.m_Joypads[pRumble->m_Pad].m_pGamepad; if (pRumble->m_TimeLeft <= qwCurrentTime.QuadPart) { diff --git a/4J_Input/Windows64/INP_Main.cpp b/4J_Input/Windows64/INP_Main.cpp index 7435bd4..736559e 100644 --- a/4J_Input/Windows64/INP_Main.cpp +++ b/4J_Input/Windows64/INP_Main.cpp @@ -148,9 +148,13 @@ void CInput::SetJoypadValues(JOYPAD *pThisPad) pThisPad->m_uiButtons |= _360_JOY_BUTTON_BACK; } - if (SDL_GetGamepadButton(pGamePad, SDL_GAMEPAD_BUTTON_TOUCHPAD)) + //str1k3r - Only check the touchpad if we have one + if (SDL_GetNumGamepadTouchpads(pGamePad) > 0) { - pThisPad->m_uiButtons |= _PS_JOY_BUTTON_TOUCHPAD; + if (SDL_GetGamepadButton(pGamePad, SDL_GAMEPAD_BUTTON_TOUCHPAD)) + { + pThisPad->m_uiButtons |= _PS_JOY_BUTTON_TOUCHPAD; + } } if (SDL_GetGamepadButton(pGamePad, SDL_GAMEPAD_BUTTON_LEFT_STICK))