Repository navigation
Controller support without Steam: Seaglass's own Xbox controller (ViGEmBus + HidHide) - #60
Merged
Merged
Conversation
Built: internal/vpad, pad Bridge mode, launch route and controller step, settings, UI, mock, bindings, docs. Checks pass locally (go test, -race, npm check/test, notices). Unfinished: wails3 build not run, mock UI not reviewed in both themes or at narrow width, live ViGEm test not run, HidHide v1.5.230 lacks the session block list (decision pending), main-session review of the diff, PR.
Found with the live test on a real ViGEmBus 1.22: the bus ends a report submit with other errors while the report still arrives, so only access denied counts. Older buses without the wait-ready request still work, and the rumble loop only ends on unplug or Close.
… Settings No HidHide release has the per-process list yet, so Seaglass uses the saved block list. It notes what it adds in hidden-controllers.json first and takes exactly those off at game end, start, quit and from Unhide controller. Auto without ViGEmBus starts directly with the setup hint (no Steam fallback).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Seaglass now gives Xbox-only games its own virtual Xbox controller, so a DualSense, DS4 or Switch Pro works in them without Steam.
pad.Bridgemode.internal/vpad, no cgo) plugs in a virtual Xbox 360 pad and passes rumble back.The design and the options considered are in
docs/design/controller-without-steam.md.How it behaves
padMode: "xbox"). Native and Steam Input stay.padTranslator: "steam"in Settings still routes Auto through Steam Input.%APPDATA%\Seaglass\hidden-controllers.jsonbefore adding it.Checks run (claude-dev)
go vet ./internal/...: passes.CGO_ENABLED=1 go test -race -count=1 ./...: passes. In one earlier runinternal/libraryTestConcurrentFlushfailed on a temp-dir cleanup (The directory is not empty). That is a Windows flake in a package this PR only touches in a comment; it passed 5/5 on rerun.npm --prefix frontend run check(0 errors) andnpm --prefix frontend test(85 passed).go run ./tools/notices -check: passes.wails3 build: passes.WL_REAL_VIGEM=1 go test -run RealViGEm -v ./internal/vpadpasses.XInputGetStatereturns exactly the buttons, sticks and triggers fed in, and the slot disconnects on unplug.How to test on a real PC (needs a real controller)
ViGEmBus on claude-dev (left installed for now)
ViGEmBus_1.22.0_x64_x86_arm64.exe /qn /norestart(SHA-25689220a78…014c6a, signed by Nefarius Software Solutions e.U.).Known limits
vpad.Bridgeif a Windows update breaks it.