Steam Controller not seen as SDL2 Joystick/Gamepad


I was experimenting yesterday and the Steam Controller connected (and working on Windows 10 - ie right touch disc moving mouse) was not seen by ‘SDL_NumJoysticks()’ and thus was not usable via the GameController functions.

I believe that there may be some feature where SteamController ‘Joystick’ is only usable when Game/EXE is added to Steam as ‘non-steam game’, is there a reference detailing this and any controls?

Ideally I would want to ‘hijack’ the controller with a util running outside of Steam, whilst reading the analogue controls and injecting data into SteamVR via VRidge API (1). Obviously very DIY and not anything Steam themselves might like to support.

I could add my app via ‘non-steam game’, but not sure how it would behave if window focus is changed…

Is there a way to manually de-register the Steam Controller to Steam App? De-registration under Steam seemed to be related to User preferences/controls being linked to Steam user, not to Steam itself.




Did some further ‘coding’ (with pySDL) and can confirm that the Steam Controller does not show as a Joystick regardless whether Steam app is running or not. Code works OK with Playstation DS4 connected.

Under Linux I could use ‘steamcontroller’ (1) to bring up a ‘/dev/js0’ interface, seen by jstest but not by my SDL code.

Which leads me to the question, how does this patch work…? What am I missing?




I wonder if you just have the “Desktop” profile selected in Steam’s Big Picture mode, where the Steam controller emulates a keyboard and mouse?

I think the Steam Controller will only be detected as a joystick if you select one of the “joystick” profiles in the Big Picture settings screen. Try enabling one of those, the minimize Big Picture, and run your sdl2 app.