ValveSoftware / ValveSoftware/Proton
DirectInput hid_joystick_enum_device fails to enumerate gamepad, breaking XInput entirely — reproducible standalone with joy.cpl, no Steam involved
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 32.8k
- Forks
- 1.6k
- PR merge metrics
- PR metrics pending
Description
System: CachyOS (Arch-based), kernel 7.2.6-1-cachyos, Hyprland (Wayland).
Controller: Generic gamepad presenting as 054c:05c5 (Sony DualShock 4 spoof) in one mode, 4131:3519 in another (force-bound to the xpad kernel driver, since it's not in xpad's default ID table).
Proton version: Proton 11.0-2, Proton - Experimental
Minimal reproduction - no Steam client, no specific game required:
- Quit Steam completely (verified via pgrep, zero Steam processes).
- Create a fresh Wine prefix using Proton's own bundled wine directly: WINEPREFIX=/path/to/fresh/prefix "/files/bin/wine" wineboot -i
- Launch Proton's own controller diagnostic tool: WINEDEBUG=+xinput,+dinput,+joystick WINEPREFIX=/path/to/fresh/prefix "/files/bin/wine" control joy.cpl
- Joysticks tab correctly lists the controller under "Connected (XInput devices)". "Enable SDL" is checked by default.
- XInput tab's live test panel shows: "No user detected on slot #1... make sure your gamepad is plugged in, and not overridden for DInput in the Joysticks tab."
- The WINEDEBUG log shows: warn:dinput:hid_joystick_enum_device index 0 not found, the trigger for the failed detection.
This reproduces with zero Steam involvement — no client running, no game, no Steamworks — ruling out Steam-side interference as the cause (see ValveSoftware/steam-for-linux#12231, closed by its author after concluding an identically-shaped symptom was actually this exact Proton-side bug).
Also reproduced in-game across three separate titles (Steamworks and non-Steamworks) and three different Proton builds (Proton - Experimental, Proton 11.0-2, GE-Proton11-7), so it isn't tied to one specific build either.
Intermittency note: oddly, the same setup can work correctly for weeks, then fail like this across every configuration for days, then recover with no changes — happy to provide more detail if useful for narrowing this down.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the failure with Proton's bundled wine and control joy.cpl, using WINEDEBUG=+xinput,+dinput,+joystick. Trace the hid_joystick_enum_device index 0 not found warning and compare the DirectInput and XInput enumeration paths. Done means the gamepad is detected by XInput and the live test panel recognizes it reliably.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, linux
- Domain
- operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100