A SteamVR driver that exposes a conventional XInput gamepad as a synthesized Index-style controller, so users without working motion controllers can still navigate the SteamVR dashboard and play gamepad-friendly VR games.
Replaces SteamVR's built-in driver_gamepad.
- Trigger (LT or RT) emulates the right VR controller's trigger — clicks UI elements, pulls in-game triggers.
- Left analog stick navigates SteamVR menus and dashboard lists.
- Guide / Xbox button tap opens or closes the SteamVR dashboard.
- Guide / Xbox button hold (≥0.5s) recenters the seated/standing view.
Requires Windows, MSVC with C++17, CMake ≥ 3.20.
git clone https://github.com/AJBats/pad-vr padVR
cd padVR
git clone https://github.com/ValveSoftware/openvr third_party/openvr
cmake -S . -B build -A x64
cmake --build build --config ReleaseOutputs:
driver/padvr/bin/win64/driver_padvr.dllbuild/companion/Release/padvr_companion.exe
Register the driver with SteamVR:
"C:/Program Files (x86)/Steam/steamapps/common/SteamVR/bin/win64/vrpathreg.exe" \
adddriver "<absolute-path-to>/padVR/driver/padvr"Disable SteamVR's built-in gamepad driver so it can't fight padVR. In
C:\Program Files (x86)\Steam\config\steamvr.vrsettings, find:
"driver_gamepad" : { "enable" : true }and change true to false.
Restart SteamVR, then run build/companion/Release/padvr_companion.exe.
Leave it running whenever you want padVR active - it stays fully passive
when SteamVR isn't running, so it's safe to leave on 24/7.
The companion runs silently with no tray icon by design. Manage it with Task Manager.
- Press
Win+R, typeshell:startup, hit Enter - opens%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup. - Right-click in the folder → New → Shortcut → browse to your
build\companion\Release\padvr_companion.exe→ finish.
To disable, just delete the shortcut.
If you play any game through UEVR (or UEVRDeluxe), you must disable UEVR's VR-controller mode for each game, or padVR's synth controller will hijack input and the game will stop responding to the gamepad after a button or two. UEVR auto-switches into motion-controller mode the moment it sees a VR controller in SteamVR, and padVR's synth controller looks like one.
For each UEVR game, edit %APPDATA%\UnrealVRMod\<GameName>\config.txt and
set:
VR_ControllersAllowed=false
(The line will already exist as VR_ControllersAllowed=true - just flip
the value.) Re-inject UEVR / restart the game. The gamepad will now drive
the game directly via UEVR's normal pass-through, and padVR continues to
handle SteamVR dashboard navigation.
- Real motion controllers won't work alongside an active XInput pad. While the companion sees a powered-on gamepad, padVR's synth controller is live and steals the right-hand role. Fully power down your gamepad (not just put it to sleep) to let real Sense / Touch / Index controllers take over.
"C:/Program Files (x86)/Steam/steamapps/common/SteamVR/bin/win64/vrpathreg.exe" \
removedriver "<absolute-path-to>/padVR/driver/padvr"Re-enable driver_gamepad in steamvr.vrsettings if you want SteamVR's
default gamepad behavior back. Restart SteamVR.
Unlicense - public domain.