Skip to content

DirectInput hid_joystick_enum_device fails to enumerate gamepad, breaking XInput entirely — reproducible standalone with joy.cpl, no Steam involved #10160

Description

@citrussilver

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:

  1. Quit Steam completely (verified via pgrep, zero Steam processes).
  2. Create a fresh Wine prefix using Proton's own bundled wine directly: WINEPREFIX=/path/to/fresh/prefix "/files/bin/wine" wineboot -i
  3. Launch Proton's own controller diagnostic tool: WINEDEBUG=+xinput,+dinput,+joystick WINEPREFIX=/path/to/fresh/prefix "/files/bin/wine" control joy.cpl
  4. Joysticks tab correctly lists the controller under "Connected (XInput devices)". "Enable SDL" is checked by default.
  5. XInput tab's live test panel shows: "No user detected on slot Plans for contributing back to upstream? #1... make sure your gamepad is plugged in, and not overridden for DInput in the Joysticks tab."
  6. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions