Skip to content

About

Use the 2026 Steam Controller as an Xbox (XInput) gamepad outside Steam - in the Xbox app, Game Pass titles and any XInput-only game. Publishes a virtual Xbox 360 pad via ViGEmBus, hands the controller to Steam Input for Steam games without ever closing Steam, and can stream audio to the trackpad haptics.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Steam Controller → Xbox Controller on Windows (outside Steam)

Use the 2026 Steam Controller as a normal Xbox controller on Windows — in the Xbox app, Xbox mode (the full screen experience), Game Pass games, and any game that expects an Xbox controller. The trackpads work as a mouse.

Important

This does not work while Steam is running.

  • When Steam opens, this switches itself off and Steam takes over the controller.
  • To get the Xbox controller back, exit Steam completely. Closing or minimising the Steam window is not enough — Steam keeps running in the background. Use Steam → Exit, or right-click the Steam icon next to the clock → Exit Steam.
  • It never closes Steam for you.

Steam and this can't share the controller: with both running, every button press goes to both apps at once.

How it works

Steam is… Your Steam Controller is…
Not running an Xbox controller, with the trackpads as a mouse
Running — even minimised, even with no game open Steam's. This is switched off.

A typical evening: play in the Xbox app → launch a Steam game (Steam opens and takes the controller) → finish → exit Steam → a few seconds later the Xbox controller is back.

What it fixes

  • Steam Controller not working outside Steam, in the Xbox app, or with Game Pass
  • Steam Controller has no XInput mode / only works when Steam is running
  • Steam Controller stuck in lizard mode (acting as a keyboard and mouse)
  • Steam Controller not detected by a game that expects an Xbox controller

With the optional patched build it also:

  • makes the "..." (Quick Access) button open the Windows touch keyboard
  • stops trackpad clicks turning into drags
  • plays your audio through the trackpad haptics instead of plain rumble

Install

You need: Windows 10 or 11 (64-bit), a 2026 Steam Controller, and administrator rights for the install.

  1. Download or clone this repository.

  2. Right-click Install-SteamPadBridge.ps1 → Run with PowerShell. It asks for administrator rights itself. Or, from an admin prompt:

    powershell -ExecutionPolicy Bypass -File .\Install-SteamPadBridge.ps1
  3. Do the one-time settings below.

The installer sets up SteamlessController (reads the controller) and ViGEmBus (the virtual Xbox controller driver) if they are missing, and registers a small background task — SteamPad Bridge Watchdog — that switches the bridge off when Steam starts and back on when Steam exits. It does not touch Steam's own settings.

Uninstall with -Uninstall. Re-run with -SkipInstall to refresh the configuration only.

One-time settings

Open SteamlessController from its icon next to the clock:

  1. Mode: "Off while Steam is running." Not Manual — the manual on/off switch is not saved, so the controller would be dead after every restart.
  2. Emulation type: Xbox 360.
  3. Turn off its own "Start with Windows". The background task starts it with administrator rights instead, which it needs for the trackpads to work over every window.
  4. Check the Steam button is set to the Xbox Guide button — that's what opens the Xbox overlay.

Steam starting with Windows is up to you — but if it does, the controller is Steam's until you exit Steam. If you mostly use the Xbox app, turn it off in Steam → Settings → Interface → "Run Steam when my computer starts".

Optional — boot straight into Xbox mode: Windows Settings → Gaming → Xbox mode (called "Full screen experience" on older builds): set Choose home app = Xbox and turn on Enter Xbox mode on startup.


Troubleshooting

Symptom Fix
The controller doesn't work in the Xbox app / Xbox mode Steam is almost certainly running. Look for its icon next to the clock and exit Steam (right-click → Exit Steam). The controller comes back a few seconds later.
Every button press does something in Steam and the Xbox app Steam and the bridge are both running. Set SteamlessController's mode to "Off while Steam is running" and exit Steam.
Steam keeps closing by itself An older version of this watchdog did that on purpose — 20 s after a game ended, or after 2 min of Steam idle in the background. Re-run the installer to update it. If this was the cause, %LOCALAPPDATA%\SteamPadBridge\logs\watchdog.log has lines reading Shutting Steam down (...).
Steam no longer starts with Windows Older versions deleted Steam's autostart entry, and kept deleting it. Turn it back on in Steam → Settings → Interface; it sticks now.
Popup: "Driver required" or "Xbox controller driver missing" — and the Steam button, the "..." button and the paddles all stopped working ViGEmBus is gone — most often removed by uninstalling an app that had installed it: Apollo, Sunshine, DS4Windows and others. SteamlessController's event log shows vigem_connect ... driverMissing=1. Reinstall ViGEmBus 1.22.0 from its releases page (the final release; the project is retired). The bridge retries every 30 seconds and picks it up without a restart. Installed on its own, it no longer belongs to the other app.
Controller is dead after a restart until you click the tray icon SteamlessController is on Manual. Set it to "Off while Steam is running" — the manual switch is never saved.
The Xbox app ignores the controller right after boot Either Steam started with Windows (see the first row), or the dongle appeared after the bridge started — unplug and replug it. -SelfTest (below) shows ControllerPresent: False in that case.
A trackpad click turns into a click-and-drag Use the patched build, which holds the pointer still while the pad is pressed and for 120 ms after.
The "..." button does nothing Standard SteamlessController never reads that button. The patched build makes it open the touch keyboard.
The on-screen keyboard appears but its keys can't be clicked with the trackpad That is osk.exe, which runs with higher privileges, so Windows discards clicks aimed at it. Use the touch keyboard instead — the "..." button in the patched build, or the Touch Keyboard binding.
The trackpad mouse stops working over some windows The bridge isn't running with administrator rights. Make sure the background task starts it, not its own "Start with Windows".
A Steam game starts but Steam doesn't see the controller The bridge let go a moment too late. Press the Steam button, or unplug and replug the dongle.
Scrolling does nothing in the Xbox app The wheel scrolls whatever is under the pointer, not the selected item. Move the pointer over the content first.
Scrolling in the Xbox app flies down the page One notch there is a whole row of content. Lower Scroll Speed for that pad in Customize Controls.
Every patched feature stops at once: haptics, the "..." button, click without drag A SteamlessController update replaced the patched program. Rebuild and copy it back.
Everything is dead The controller falls back to lizard mode, where the right trackpad is a mouse — you can always click your way out.
A controller firmware update breaks the bridge It has happened once (SteamlessController #40). Update SteamlessController before assuming this setup is at fault.

Reference

Everything below is detail. You don't need it to use the bridge.

Why a bridge is needed

The 2026 Steam Controller has no XInput mode at all — not even a button-combo fallback like 8BitDo pads have. Left alone it sits in "lizard mode", pretending to be a keyboard and mouse, and only becomes a gamepad when Steam is running and translating it.

Windows, the Xbox app and Game Pass titles speak XInput and Windows.Gaming.Input. Neither understands lizard mode, so out of the box the pad can't even move the selection in the Xbox UI.

Two 2026 changes help but don't solve it:

  • SDL 3 added a native driver (merged 14 May 2026), so SDL-based games see the pad without Steam. The Xbox app is not an SDL app, and many Game Pass titles are XInput-only.
  • Adding a non-Steam game to Steam works for Win32 games, but Microsoft Store / Game Pass titles are packaged apps that Steam Input can't attach to. This is the wall people hit with Forza Horizon 6 and friends.

So the bridge works at driver level: it reads the controller's raw HID reports and publishes a virtual Xbox 360 controller through ViGEmBus. Windows can't tell it from a real one.

Why it can't run alongside Steam

Steam takes an exclusive claim on the controller the moment it starts, which blocks the bridge. Launching Steam with -nocontroller does not release it — tested directly:

GAMEMODE: exclusive claim blocked - another process holds a write handle (Steam running)

Where the bridge falls back to shared access instead, both apps receive every press. Tested on hardware: with Steam open and the bridge active, pressing the Steam button brought Steam to the front, and both apps acted on the same input.

So SteamPadWatchdog.ps1 stops the bridge whenever Steam is running — game or no game — and starts it again once Steam exits. It never closes Steam. Earlier versions did, to get the controller back automatically: 20 seconds after a game ended, or after two minutes of Steam sitting in the background. From the outside that looked like Steam quitting at random, and they also deleted Steam's autostart entry. Both are gone.

Check it's working

powershell -ExecutionPolicy Bypass -File "$env:LOCALAPPDATA\SteamPadBridge\SteamPadWatchdog.ps1" -SelfTest

Shows whether the controller is attached, whether ViGEmBus is loaded and an Xbox controller is visible, whether the bridge and Steam are running, and where the log is. The log lives at %LOCALAPPDATA%\SteamPadBridge\logs\watchdog.log and records every handover.

The watchdog's decisions have their own tests, which need no controller, no Steam and no Xbox app:

powershell -ExecutionPolicy Bypass -File .\Test-WatchdogDecision.ps1

23 checks — including two that sweep every possible combination of inputs and prove that the watchdog can never close Steam, and can never leave the bridge running alongside Steam.

Controller layout

SteamlessController keeps no config file — every setting is a DWORD under HKCU\Software\SteamlessController, read once at startup. Changing one does nothing until the bridge restarts (quit it from the tray; the watchdog brings it back). Audio haptics are the exception: they are set from their own tab and apply live.

Control Behaviour Registry value
L4 X BackBtnL4 = 2
L5 B BackBtnL5 = 1
R4 Y BackBtnR4 = 3
R5 A BackBtnR5 = 0
Right trackpad mouse RightPadMode = 1
Right trackpad click left mouse button RightPadClick = 12
Left trackpad scroll wheel LeftPadMode = 2
Left trackpad click right mouse button LeftPadClick = 13
Scroll direction natural LeftPadScrollDir = 0 (1 reverses)
Steam button Xbox Guide fixed
"..." (Quick Access) button toggles the Windows touch keyboard fixed — patched build only; standard SteamlessController ignores this button

Value meanings, decoded from the MIT source because none of it is documented:

  • buttons / pad clicks — A=0 B=1 X=2 Y=3 LB=4 RB=5 LT=6 RT=7 DPadUp=8 DPadDown=9 DPadLeft=10 DPadRight=11 LeftMouseButton=12 RightMouseButton=13 None=14 Menu=15 View=16 L3=17 R3=18 TouchKeyboard=19
  • pad mode — None=0 MousePointer=1 ScrollWheel=2 DS4Touchpad=3 DirectionalPad=4 SingleButton=5
  • scroll direction — Natural=0 Reversed=1
  • emulated platform — Xbox=0 PlayStation=1
  • auto mode — Manual=0 OffWhileSteam=1 OffOnlyInGame=2 OffUnlessProfile=3 — use 1

This layout applies only while the bridge owns the controller — that is, while Steam is not running. While Steam runs, Steam Input's own configuration applies.

Matching the layout inside Steam games

Steam Input is not optional for this controller — a game's controller properties list it as "Enabled, always required", where every other pad type says "per-game override".

The paddles already match and need nothing. Steam names face buttons by diamond position (Button_Pad_Down=A, Button_Pad_Right=B, Button_Pad_Left=X, Button_Pad_Up=Y) and its default back-grip bindings are L4=Button_Pad_Left, L5=Button_Pad_Right, R4=Button_Pad_Up, R5=Button_Pad_Down — exactly L4=X, L5=B, R4=Y, R5=A.

Only the trackpads differ, because game layouts default the right pad to Right_Stick for aiming. That is a per-game decision, worth changing only where a pointer genuinely beats a stick.

Two things that cost real time if you don't know them:

  • Quick Settings can't do it. Its trackpad dropdown offers only stick options. The control that works is Edit Layout → Trackpads → Behavior (As Mouse, Scroll Wheel, Mouse Region, …). Set the pad's Click from the MOUSE tab of the binding picker.
  • There is no global default. Layouts are per game. Saving a personal template makes repeat visits quick.

Edited layouts live in Steam Cloud, not in userdata\<id>\241100\remote\controller_config\<appid>\, so an empty folder there neither means an edit was lost nor confirms one.

Tuning

The watchdog reads %LOCALAPPDATA%\SteamPadBridge\config.json at startup — edit it, then restart the task.

Key Default What it does
ReturnToXboxAfterGame true Bring the Xbox app back when a full screen game exits to the desktop.
BridgeStartDelaySeconds 3 Wait after Steam exits before starting the bridge. Raise to 5–6 if handovers are flaky.
PollMilliseconds 500 How often it checks.

GraceAfterGameSeconds, IdleBrowseSeconds, FocusXboxAfterSteam, CycleDeviceOnHandoff and KeepSteamAutostartOff belonged to the old Steam-closing behaviour and are gone. Left in an old config.json, they are ignored.

Trackpad feel (pointer, scroll wheel, scroll speed, directional pad) is set in SteamlessController's own Customize Controls window.

Optional: the patched SteamlessController

Everything above works with standard SteamlessController. The patched build is the current upstream release, 1.24, with a few additions. It only adds: new files and small hooks, with upstream's own code left as it is. None of these are in upstream as of 1.24:

  • Audio haptics: your system audio played through the trackpad actuators, optionally replacing game rumble, with an EQ, a delay to sync with your speakers, and a gate that lets it through only when the game asks for rumble. Set from a new Audio Haptics tab in Customize Controls. See below.
  • The "..." (Quick Access) button toggles the Windows touch keyboard. It's bit 0x10 of report byte 2, which standard SteamlessController never reads, so there the button does nothing at all.
  • Trackpad clicks no longer turn into drags. Pressing hard enough to click rolls the fingertip. The pointer now holds still while the pad is pressed, and for 120 ms after.
  • A clearer popup when ViGEmBus goes missing.

Two ways to get it. They're the same change:

Build instructions and the details of each change: steamlesscontroller-patches/README.md.

A SteamlessController update silently replaces the patched program. Everything reverts to standard with no error. Rebuild and copy it back.

Audio haptics

The patched build can stream your system audio to the controller's trackpad actuators as PCM and use it in place of game rumble — an EQ, a speaker-sync delay, and an option to gate it on the game's own rumble calls, so the game supplies the timing and the audio supplies the texture.

That work, the HID protocol it uses, and two hardware findings not documented anywhere else — only one of five vendor interfaces drives the actuators, and a write costs 4000 µs because it waits for the radio slot — are in docs/audio-haptics.md.

Known limitations

  • Not compatible with Steam running — see the top of this page. By design: the two can't share the controller.
  • In the Xbox UI and Game Pass titles the controller is a plain Xbox 360 controller: no gyro, no trackpad-as-joystick, no pressure sensitivity, no back-paddle profiles. XInput has no concept of those. You get them back inside Steam games, where Steam Input takes over.
  • Rumble works (or audio haptics, with the patched build). The second trackpad is a mouse, not a second stick.
  • ViGEmBus is end-of-life — still functional, and still what DS4Windows and everything else in this space uses. It is why GlosSI, the old way of doing this, was archived in November 2025.
  • This depends on a third-party tool. It is MIT-licensed and actively developed; if it ever stops being maintained, the SDL driver source documents the protocol well enough to rebuild the bridge.

Credits and licence

This repository is MIT-licensed — see LICENSE.

Use any of it, anywhere. Anyone may use any of the code here or in the fork in any of their own projects: copy one function, one file, or all of it. There is no need to fork this repository or branch from it, and no need to ask. Keep the licence notice with a substantial copy.

It installs and configures, but does not include, these projects:

  • SteamlessController by ddeverill (MIT) — reads the controller's raw HID reports. The patch in steamlesscontroller-patches/ and the fork are derivative works of that project and remain under its MIT licence.
  • ViGEmBus by Nefarius — the virtual controller driver.

Not affiliated with Valve, Microsoft or AMD. "Steam" and "Xbox" are trademarks of their respective owners.

Contributing

Issues and pull requests welcome. Particularly useful:

  • Testing on other Windows builds and Steam Controller firmware revisions
  • Upstreaming the parts that belong in SteamlessController itself. Decoding the "..." button is a small, self-contained start
  • Handover edge cases the watchdog gets wrong — attach %LOCALAPPDATA%\SteamPadBridge\logs\watchdog.log

Related searches

Steam Controller 2026 XInput · Steam Controller Xbox app · Steam Controller Game Pass · Steam Controller without Steam · Steam Controller lizard mode fix · Steam Controller ViGEmBus · Steam Controller virtual Xbox 360 controller · SteamlessController watchdog · Steam Controller Xbox full screen experience · Steam exclusive claim controller · Steam Controller stops working when Steam is open · Steam closes by itself · ViGEmBus removed after uninstalling Apollo · ViGEmBus uninstalled by Sunshine · GAMEMODE: ViGEm virtual controller failed (stage=vigem_connect, err=0xE0000001, driverMissing=1) · Steam Controller Quick Access button Windows · Steam Controller ellipsis button · Steam Controller touch keyboard · Steam Controller trackpad click drag · Steam Controller haptics audio · Steam Controller play music through haptics · Steam Controller PCM haptics

About

Use the 2026 Steam Controller as an Xbox (XInput) gamepad outside Steam - in the Xbox app, Game Pass titles and any XInput-only game. Publishes a virtual Xbox 360 pad via ViGEmBus, hands the controller to Steam Input for Steam games without ever closing Steam, and can stream audio to the trackpad haptics.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages