Repository navigation
Support Steam Link virtual controllers in the Mac launcher - #874
thehobbit85 wants to merge 2 commits into
Conversation
|
@SupermanX2006 could you test this PR through your existing iPhone Steam Link → Mac M2 Max setup, with the PS5 controller connected to the iPhone? The draft adds a launcher-side reader for Steam's virtual controller and diagnostic information. I have validated it with synthetic input, but I cannot confirm your remote session from here. The games use a separate controller reader, so we need these results separately:
If both launcher and gameplay work with correct mapping, a fix within NX2Apple may be sufficient. If the launcher works but gameplay still fails, or diagnostics show a virtual device claimed by GameController without usable input, we will use that evidence to determine the engine changes needed. This PR deliberately does not change the engine or claim that #731 fixed Steam Link. |
|
Thanks for the work, @thehobbit85. We changed how the team works, so this pull request is now handled like any other outside contribution. A change to how the launcher works or looks starts as an issue, and a maintainer has to agree to the idea before the pull request is reviewed. Please open an issue for it. Until then I leave this pull request open without a milestone. Please also keep at most three pull requests open at the same time, so each one can be reviewed properly. |
|
The existing report and investigation are #797, currently in v1.3.2. Your earlier comment distinguishes Steam Link’s virtual controller from the physical Steam Controller and places the report in the controller milestone. The proposed launcher-side reader is linked there. This PR remains a draft pending both maintainer agreement on that approach and the reporter’s separate launcher/game test. I have not opened a duplicate report or treated the synthetic tests as an end-to-end fix. |
|
Thank you @thehobbit85. Your change is part of #1097, the launcher UI overhaul, with you as co-author. Closing this one in favor of it. Please have a look there if something of yours is missing or changed. |
Fix or feature
What and why
Addresses the launcher-side gap in #797. Draft pending the reporter's Steam Link test. This does not claim an end-to-end fix or close the issue.
The reporter adds NX2Apple to Steam as a non-Steam game and streams from a Mac to an iPhone with a PS5 controller. Local input works, but remote input does not. The issue was closed immediately before another comment describing the failure, with no linked fixing commit. It has been reopened.
The Mac launcher previously enumerated only Apple's GameController devices. Steam can instead expose a virtual Xbox 360 HID device. This PR adds a narrow, non-exclusive IOKit reader for virtual
045e:028edevices namedGamePad-N, with the known contiguous 15-button Mac Xbox layout and absolute X/Y axes. Physical controllers, GC synthetic devices, unknown layouts and devices claimed by GameController are excluded. No dependency or driver is installed.Accepted devices use the existing navigation, button-edge, capture and repeat handling. They appear in the existing controller inventory with Xbox prompts, unknown battery and no Identify capability. Focus loss and disconnect cancel repeats and queued input. Desktop, console and onboarding views share one active input route, including ordinary GC controllers.
Settings > Copy diagnostics now includes GC device count, HID manager result, accepted/skipped candidates, open failures and input-value counts. It does not record button histories, serial numbers or environment variables.
Findings and remaining boundary
GamePad-Nvirtual Xbox identity. The Mac Xbox mapping supplies the proposed button and axis interpretation. Applying that layout to the reporter's device is an inference awaiting their test. Unknown descriptor shapes are reported instead of guessed.Checked
swift build && swift test: 1,232 tests executed, 32 optional/environment-dependent skips, zero failures on Apple silicon, macOS 26.6.python3 -m unittest discover -s frontend-qt/tests: 353 tests executed, 44 environment-dependent skips, zero failures.git diff --checkpasses.Not checked: an actual Steam Link session, the reporter's HID descriptor, remote gameplay, physical reconnects, rumble or multiplayer player ordering. No game files were needed or used. The reporter's separate launcher/game test is required before marking this ready.
Screenshots
Controlled native SwiftUI fixtures in all six languages. These show the existing console Home and Controllers views before recognition (no GC controller) and after accepting one Steam virtual controller. They are illustrative state captures, not screenshots of a successful Steam Link session. There are no layout or translated-string changes.
English
Chinese
German
French
Italian
Swedish
Scope