-
feat(controller): DualShock/DualSense/Steam pads, slot panel, Sunshine pad type
release / Build Windows .zip (push) Canceled after 0sreleased this
2026-10-07 08:59:18 +03:00 | 17 commits to main since this releaseNot released; verified in the Win11 ARM64 VM as far as possible without
real pads (see decision 0037 for the hardware experiments still to run).Launcher input: internal/controller reduces every source to a Frame —
XInput (4 slots, unchanged backends) plus DualShock 4 / DualSense / Steam
Controller read directly over HID (overlapped ReadFile, shared, read-only)
— merges them (OR buttons, farthest axis; this also de-dupes a pad mirrored
by Steam Input / DS4Windows) and drives one platform-free Engine (unit
tests on any OS). Report layouts from SDL's hidapi drivers. While a game
runs every HID handle is closed, same red line as XInput polling.
cmd/gs-hid lists HID interfaces and dumps raw reports for checking against
real hardware.UI: controller:state carries the pad kind; shell hints switch to
✕○□△ / L1 R1 / Options / Share for a PlayStation pad. Settings «Геймпады»
shows the four XInput slots with VID:PID (XInputGetCapabilitiesEx #108),
the HID pads being read and running virtual-pad creators. Read-only: no
automatic slot reshuffling.Sunshine: choose the emulated pad (x360 / ds4; xseries / ds5 / switch
with the Virtual HID driver). /api/config POST replaces sunshine.conf, so
the file is read, one key changed and posted back whole, then
/api/restart; sunshine.conf is backed up first. No UAC — works from the
shell with a gamepad. Verified: other keys kept, service back in ~20 s.Regression pass in the VM (desktop + shell): dashboard, drawer, manual
backup, restore with pre-restore snapshot, exe launch with minimize /
restore and playtime, crash dialog (0xC0000135), Sunshine deep-link
timeout dialog, shell settings with Scan focused.Docs: decisions 0036 (Sunshine) and 0037 (HID pads), CLAUDE.md module
map + red line, windows-syscalls.md HID section.Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Downloads