[Feature Request] Steam Controller support on Linux #473

Closed
opened 2026-11-08 04:34:48 +00:00 by Desmondchaser27 · 3 comments
Desmondchaser27 commented 2026-11-08 04:34:48 +00:00 (Migrated from github.com)

The idea

Steam Controller doesn't appear to work past pressing start (popping up the title screen text). I presume some kind of setup could be used where Steam is running the app and thus Steam Controller goes through that, but emulators and other recompilations use SDL 3.x (some later version) and Steam Controller is supported with gyro out of the box with no issues. Didn't know if that was something we could expect here or not. No rush/worries if not. I've tried it on CachyOS (7.3.1.1 kernel version). The controller doesn't appear to work at all by default.

Anything else

No response

### The idea Steam Controller doesn't appear to work past pressing start (popping up the title screen text). I presume some kind of setup could be used where Steam is running the app and thus Steam Controller goes through that, but emulators and other recompilations use SDL 3.x (some later version) and Steam Controller is supported with gyro out of the box with no issues. Didn't know if that was something we could expect here or not. No rush/worries if not. I've tried it on CachyOS (7.3.1.1 kernel version). The controller doesn't appear to work at all by default. ### Anything else _No response_
Nikoroq commented 2026-11-08 05:48:30 +00:00 (Migrated from github.com)

Yes, running as a non-steam game totally works and so does OpenPuck emulation of other controllers (Steam Controller appears as Nintendo/Sony/Xbox controller to the system).

OpenPuck is a bit advanced to setup though, so yeah, add the game as a non-steam title, run it via steam and share the results

Yes, running as a non-steam game totally works and so does OpenPuck emulation of other controllers (Steam Controller appears as Nintendo/Sony/Xbox controller to the system). OpenPuck is a bit advanced to setup though, so yeah, add the game as a non-steam title, run it via steam and share the results
t0masz407 commented 2026-11-08 17:06:22 +00:00 (Migrated from github.com)

A data point for the new Steam Controller (2026, wireless puck 28de:1304) on Linux, NixOS, without Steam Input:

  • The SDL2 the AppImage ships (2.32.10) does not see it at all: a minimal SDL2 program with SDL_JOYSTICK_HIDAPI_STEAM=1 lists 0 joysticks. SDL2 only knows the original Steam Controller's ids (0x1102/0x1142), so there is no hint to set from Hookshot's side.
  • SDL3 3.4.18 (nixpkgs) lists it right away: gamepad 0: Steam Controller (vid 28de pid 1304), through its own driver (SDL_hidapi_steam_triton.c, added in libsdl-org/SDL@1998b65045 "Added support for the new Steam Controller", in every 3.4 release).

So for this controller the fix is SDL3, i.e. #328 and the follow-up that ships SDL3 in the AppImage. Until then, adding the game to Steam as a non-Steam game works (Steam Input), as said above. Hidraw access needs the usual Valve udev rule (KERNEL=="hidraw*", ATTRS{idVendor}=="28de", MODE="0666" or TAG+="uaccess").

I have not tested the buttons through Hookshot with SDL3 yet, only that SDL3 enumerates the controller as a gamepad.

🤖 Tested and written with Claude Code

A data point for the **new** Steam Controller (2026, wireless puck `28de:1304`) on Linux, NixOS, without Steam Input: - The SDL2 the AppImage ships (2.32.10) does not see it at all: a minimal SDL2 program with `SDL_JOYSTICK_HIDAPI_STEAM=1` lists **0 joysticks**. SDL2 only knows the original Steam Controller's ids (`0x1102`/`0x1142`), so there is no hint to set from Hookshot's side. - SDL3 3.4.18 (nixpkgs) lists it right away: `gamepad 0: Steam Controller (vid 28de pid 1304)`, through its own driver (`SDL_hidapi_steam_triton.c`, added in libsdl-org/SDL@1998b65045 "Added support for the new Steam Controller", in every 3.4 release). So for this controller the fix is SDL3, i.e. #328 and the follow-up that ships SDL3 in the AppImage. Until then, adding the game to Steam as a non-Steam game works (Steam Input), as said above. Hidraw access needs the usual Valve udev rule (`KERNEL=="hidraw*", ATTRS{idVendor}=="28de", MODE="0666"` or `TAG+="uaccess"`). I have not tested the buttons through Hookshot with SDL3 yet, only that SDL3 enumerates the controller as a gamepad. 🤖 Tested and written with [Claude Code](https://claude.com/claude-code)
NotRexed commented 2026-11-09 05:49:54 +00:00 (Migrated from github.com)

Thanks for the idea. Feature requests are now collected in #1007, which lists this one with a link back here, so closing it in favour of that list (this is not a decision against the idea).

Thanks for the idea. Feature requests are now collected in #1007, which lists this one with a link back here, so closing it in favour of that list (this is not a decision against the idea).
Commenting is not possible because the repository is archived.
No milestone
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Hookshot#473
No description provided.