Files
Dylan DeverillandClaude Opus 5 5796177be9 Track the pad-type hold by process, not by profile selection
Two fixes to the hold, both found by forcing paths that do not occur on
this machine.

The liveness fallback never released. It asked whether the pid could be
opened and read success as proof of life, but a pid stays valid for as
long as anything holds a handle to the process object — and a launcher or
an anti-cheat service generally does. Measured against Fortnite with the
fallback forced: the game exited, the pid stayed openable, and the hold
stood forever, leaving a PlayStation pad that never went back to Xbox.
It now asks whether the process has exited rather than whether it can be
opened. Both remaining ways to fool it — an exit code of 259, or pid
reuse between two checks — leave a hold standing too long, which costs
the deferred rebuild rather than causing a wrong one.

The hold was also gated on the profile selection changing, having been
written behind the early return that skips a foreground change selecting
the profile already selected. But a hold follows a process and a
selection follows a profile, and those do not change together: a loader
handing off to the game it launched is the same profile wearing a new
pid, so the selection does not change, the return fires, and the hold
stays on the old process. When that one exits the pad rebuilds under a
game that has only just started.

Both liveness paths are now confirmed on hardware — Marathon and Fortnite
by handle, Fortnite by pid with the fallback forced — holding across
alt-tabs and releasing within the poll interval of the game closing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 23:33:38 -07:00

35 lines
458 B
Plaintext

# Build output
build/
# Loose binaries committed by mistake
*.exe
*.dll
*.lib
*.pdb
# Claude Code local settings
.claude/
# Reverse engineering session data
Results/
HIDInfo
HIDReportDescriptor.rtf
# Claude Design files
ClaudeDesign/
# CMake user files
CMakeSettings.json
CMakeUserPresets.json
# Local-only debug tools (not for distribution)
src/probe/HapticTester.cpp
# Visual Studio
.vs/
*.user
*.suo
# Built installers and packaged output
Output/