On a Steam Deck with the new Steam Controller also connected, ISteamInput::GetInputTypeForHandle() returns k_ESteamInputType_SteamDeckController (14) for both the built-in Deck controls and the external Steam Controller. There appears to be no way, given an InputHandle_t, to tell the two apart.
What I'm trying to do
Fold the Deck's touchscreen input into the right player — e.g. the one holding the Deck itself vs. the one holding the (external) Steam Controller. To do that I need to identify specifically the built-in Deck pad among the connected handles.
The problem
GetInputTypeForHandle() → 14 (SteamDeckController) for both controllers.
I don't see VID/PID, serial, or any "is internal/built-in" indicator exposed on any ISteamInput method or callback struct (SteamInputDeviceConnected_t, SteamInputConfigurationLoaded_t, SteamInputGamepadSlotChange_t).
At the evdev level they are clearly distinct: built-in Deck = 28DE:1205, new Steam Controller = 28DE:1303.
Question
Is there a supported way, via Steam Input (or a correlatable SDL path such as SDL_GetGamepadSteamHandle() + SDL_GetGamepadVendor/SDL_GetGamepadProduct), to distinguish the internal Deck controller from an external Steam Controller? What's the recommended approach?
Summary
On a Steam Deck with the new Steam Controller also connected,
ISteamInput::GetInputTypeForHandle()returnsk_ESteamInputType_SteamDeckController(14) for both the built-in Deck controls and the external Steam Controller. There appears to be no way, given anInputHandle_t, to tell the two apart.What I'm trying to do
Fold the Deck's touchscreen input into the right player — e.g. the one holding the Deck itself vs. the one holding the (external) Steam Controller. To do that I need to identify specifically the built-in Deck pad among the connected handles.
The problem
GetInputTypeForHandle()→14(SteamDeckController) for both controllers.ISteamInputmethod or callback struct (SteamInputDeviceConnected_t,SteamInputConfigurationLoaded_t,SteamInputGamepadSlotChange_t).28DE:1205, new Steam Controller =28DE:1303.Question
Is there a supported way, via Steam Input (or a correlatable SDL path such as
SDL_GetGamepadSteamHandle()+SDL_GetGamepadVendor/SDL_GetGamepadProduct), to distinguish the internal Deck controller from an external Steam Controller? What's the recommended approach?Environment
k_ESteamInputType_SteamDeckController(added SDK 153)