From 6195bd193de9a38e3fa7f4b3ad6d4fb241260f87 Mon Sep 17 00:00:00 2001 From: qloak Date: Mon, 14 Sep 2026 17:54:37 -0700 Subject: [PATCH] fix: pad 0 signed in when keyboard focused (KBM without gamepad) --- 4J_Input/Windows64/4J_Input.cpp | 5 +++++ 4J_Input/Windows64/INP_Keyboard.h | 1 + 4J_Profile/Windows64/PRO_Sys.cpp | 10 ++++++++-- Headers/Windows64/4J_Input.h | 1 + 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/4J_Input/Windows64/4J_Input.cpp b/4J_Input/Windows64/4J_Input.cpp index 8daa0a1..e12fa3b 100644 --- a/4J_Input/Windows64/4J_Input.cpp +++ b/4J_Input/Windows64/4J_Input.cpp @@ -344,6 +344,11 @@ bool C_4JInput::IsMouseCaptured() const return InternalKeyboard.IsMouseCaptured(); } +bool C_4JInput::IsWindowFocused() const +{ + return InternalKeyboard.IsWindowFocused(); +} + void C_4JInput::SetMousePos(int x, int y) { InternalKeyboard.SetMousePos(x, y); diff --git a/4J_Input/Windows64/INP_Keyboard.h b/4J_Input/Windows64/INP_Keyboard.h index 92e3191..2855538 100644 --- a/4J_Input/Windows64/INP_Keyboard.h +++ b/4J_Input/Windows64/INP_Keyboard.h @@ -90,6 +90,7 @@ public: void SetMouseCaptured(bool captured); void SetWindowFocused(bool focused); bool IsMouseCaptured() const { return m_mouseCaptured; } + bool IsWindowFocused() const { return m_windowFocused; } void SetMousePos(int x, int y) { m_mouseX = x; m_mouseY = y; } diff --git a/4J_Profile/Windows64/PRO_Sys.cpp b/4J_Profile/Windows64/PRO_Sys.cpp index 1be86c8..554ac86 100644 --- a/4J_Profile/Windows64/PRO_Sys.cpp +++ b/4J_Profile/Windows64/PRO_Sys.cpp @@ -7,12 +7,18 @@ wchar_t fakeGamerTagW[16] = L"PlayerName"; bool CSys::IsSignedIn(int iQuadrant) { - return InputManager.IsPadConnected(iQuadrant); //str1k3r - since we dont sign in like consoles just check if the pad is connected + if (InputManager.IsPadConnected(iQuadrant)) + return true; + //str1k3r - since we dont sign in like consoles just check if the pad is connected + //kbm - pad 0 also counts as signed in when the keyboard is available + return iQuadrant == 0 && InputManager.IsWindowFocused(); } bool CSys::IsSignedInLive(int iProf) { - return InputManager.IsPadConnected(iProf); + if (InputManager.IsPadConnected(iProf)) + return true; + return iProf == 0 && InputManager.IsWindowFocused(); } //str1k3r - set every pad that isnt pad 0 as a guest diff --git a/Headers/Windows64/4J_Input.h b/Headers/Windows64/4J_Input.h index dbbccb2..51081dd 100644 --- a/Headers/Windows64/4J_Input.h +++ b/Headers/Windows64/4J_Input.h @@ -190,6 +190,7 @@ public: void SetMouseCaptured(bool captured); void SetWindowFocused(bool focused); bool IsMouseCaptured() const; + bool IsWindowFocused() const; void SetMousePos(int x, int y);