diff --git a/4J_Input/Windows64/4J_Input.cpp b/4J_Input/Windows64/4J_Input.cpp index 8fec45d..48fa6da 100644 --- a/4J_Input/Windows64/4J_Input.cpp +++ b/4J_Input/Windows64/4J_Input.cpp @@ -165,6 +165,10 @@ void C_4JInput::GetText(uint16_t *UTF16String) InternalKeyboard.GetText(UTF16String); } +const char* C_4JInput::PollControllerType(int ipad) { + return InternalInputManager.GetGamepadType(ipad); +} + bool C_4JInput::VerifyStrings(WCHAR **pwStringA, int iStringC, int (*Func)(LPVOID, STRING_VERIFY_RESPONSE *), LPVOID lpParam) { return true; diff --git a/4J_Input/Windows64/INP_Main.cpp b/4J_Input/Windows64/INP_Main.cpp index 14ce41d..9577e98 100644 --- a/4J_Input/Windows64/INP_Main.cpp +++ b/4J_Input/Windows64/INP_Main.cpp @@ -317,6 +317,16 @@ unsigned int CInput::GetGameJoypadMaps(unsigned char ucMap, unsigned char ucActi return m_JoypadMap[ucMap][ucAction]; } +const char* CInput::GetGamepadType(int iPad) +{ + if (!m_Joypads[iPad].m_pGamepad) + { + return "UNKNOWN"; + } + + return GamepadTypeName(SDL_GetGamepadType(m_Joypads[iPad].m_pGamepad)); +} + void CInput::SetJoypadMapVal(int iPad, unsigned char ucMap) { m_bJoypadMapArrayIsSetup = true; diff --git a/4J_Input/Windows64/INP_Main.h b/4J_Input/Windows64/INP_Main.h index 1fb8ede..30e09b6 100644 --- a/4J_Input/Windows64/INP_Main.h +++ b/4J_Input/Windows64/INP_Main.h @@ -31,6 +31,25 @@ SOFTWARE. class CInput { +private: + const char* GamepadTypeName(SDL_GamepadType type) + { + switch (type) + { + case SDL_GAMEPAD_TYPE_UNKNOWN: return "UNKNOWN"; + case SDL_GAMEPAD_TYPE_STANDARD: return "STANDARD"; + case SDL_GAMEPAD_TYPE_XBOX360: return "XBOX360"; + case SDL_GAMEPAD_TYPE_XBOXONE: return "XBOXONE"; + case SDL_GAMEPAD_TYPE_PS3: return "PS3"; + case SDL_GAMEPAD_TYPE_PS4: return "PS4"; + case SDL_GAMEPAD_TYPE_PS5: return "PS5"; + case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_PRO: return "SWITCH_PRO"; + case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT: return "JOYCON_L"; + case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT: return "JOYCON_R"; + case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR: return "JOYCON_PAIR"; + default: return "UNKNOWN"; + } + } public: struct JOYPAD { @@ -101,6 +120,7 @@ public: void SetGameJoypadMaps(unsigned char ucMap, unsigned char ucAction, unsigned int uiActionVal); unsigned int GetGameJoypadMaps(unsigned char ucMap, unsigned char ucAction); + const char* GetGamepadType(int iPad); void SetJoypadMapVal(int iPad, unsigned char ucMap); unsigned char GetJoypadMapVal(int iPad); diff --git a/Headers/Windows64/4J_Input.h b/Headers/Windows64/4J_Input.h index 900c43b..48e1a9a 100644 --- a/Headers/Windows64/4J_Input.h +++ b/Headers/Windows64/4J_Input.h @@ -135,6 +135,7 @@ public: EKeyboardResult RequestKeyboard(LPCWSTR Title, LPCWSTR Text, DWORD dwPad, UINT uiMaxChars, int( *Func)(LPVOID,const bool),LPVOID lpParam,C_4JInput::EKeyboardMode eMode); void DestroyKeyboard(); void GetText(uint16_t *UTF16String); + const char* PollControllerType(int ipad); void SetLostInputControlCallback(void( *Func)(LPVOID, bool),LPVOID lpParam);