DirectInput to XInput wrapper
MIT License
If you have an older or not supported game controller (gamepad, wheel, joystick, etc.), but XBox 360 controllers are supported you can use this software and enjoy gaming with your controller.
XOutput is a software that can convert DirectInput into XInput. DirectInput data is read and sent to a virtual XInput (Xbox 360 Controller) device. XInput is the new standard game controller input on windows, and DirectInput can no longer be used with Universal Windows Platform software, but with this tool you can use DirectInput devices as well.
If you have any questions or feature requests feel free to create Github Issue.
Any contribution is welcome, open your Pull request.
To join the discussion or just say hi, there is a discord channel.
This version is currently under development. Please use 3.x version for stable features
Version | State | Support |
---|---|---|
4.x | Under development (no releases yet) | Development with new features |
3.x | Stable | Bugfixes only |
2.x | Old version (superseeded by 3.x) | Expired at Mar 7 2018 |
1.x | Old version (superseeded by 3.x) | Expired at Mar 7 2018 |
Install one of the two libraries. ViGEm (preferred) or SCPToolkit (unsupported, legacy)
Software | State | Download |
---|---|---|
ViGEmBus | Deprecated since Nov 2, 2023 | ViGEmBus |
ScpToolkit | Deprecated since Mar 20, 2023 | ScpToolkit |
Install:
Download the application:
conf
directorySoftware | State | Download |
---|---|---|
HidHide | Active development | HidHide |
HidGuardian | Deprecated since Jul 27, 2023 | HidGuardian |
Affected devices and whitelist can be managed by the application, but it needs administrator priviledges.
Add affected device manually (use this method only, if you want to hide non recognized HID devices):
regedit
and go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HidGuardian\Parameters
multi-string
value with the name AffectedDevices
Hardware ID
and copy string that looks like HID\VID_046D&PID_C219&REV_0200
and HID\VID_046D&PID_C219
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HidGuardian\Parameters
Manage process whitelist manually (use this method only, if you want to use HidGuardian for other applications):
regedit
and go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HidGuardian\Parameters\Whitelist
Problem visualisation
graph TD
subgraph XInput
X1(Xbox controller 1) -->|Read hardware input| XD[Xbox controller driver - xusb22.sys]
X2(Xbox controller 2) -->|Read hardware input| XD
XD -->|Read input| XR[XInput handler - xinput1_3.dll]
end
subgraph DirectInput
D1(fa:fa-gamepad Older controller) -->|Read hardware input| D1D[Controller driver]
D2(Joystick) -->|Read hardware input| D2D[Joystick driver]
D3(Gaming wheel) -->|Read hardware input| D3D[Gaming wheel driver]
D1D -->|Read input| DR[Direct input handler - dinput8.dll]
D2D -->|Read input| DR
D3D -->|Read input| DR
end
subgraph Games
XR -->|Read XInput| NG[Newer games]
XR -->|Read XInput| CG[Compatible games]
DR -->|Read DInput| CG[Compatible games]
DR -->|Read DInput| OG[Older games]
end
Offered solution
graph TD
subgraph XInput
X1(Xbox controller 1) -->|Read hardware input| XD[Xbox controller driver - xusb22.sys]
X2(Xbox controller 2) -->|Read hardware input| XD
XD -->|Read input| XR[XInput handler - xinput1_3.dll]
end
subgraph DirectInput
D1(fa:fa-gamepad Older controller) -->|Read hardware input| D1D[Controller driver]
D2(Joystick) -->|Read hardware input| D2D[Joystick driver]
D3(Gaming wheel) -->|Read hardware input| D3D[Gaming wheel driver]
D1D -->|Read input| DR[Direct input handler - dinput8.dll]
D2D -->|Read input| DR
D3D -->|Read input| DR
end
DR -->|Read DInput| XOA[XOutput.App]
subgraph Solution
DR -->|Read HTML5 gamepad API| B[Browser]
B -->|Browser| XOS[XOutput.Server]
XOA -->|Sends input| XOS[XOutput.Server]
XOS -->|Control emulation| V[ViGEm]
end
V -->|Emulate controller| XD
subgraph Games
XR -->|Read XInput| NG[Newer games]
XR -->|Read XInput| CG[Compatible games]
DR -->|Read DInput| CG[Compatible games]
DR -->|Read DInput| OG[Older games]
end
Component | Implementation | Description |
---|---|---|
Device emualation | ViGEm | External software that emulates XBox and DS4 controllers |
Device emualation | SCP toolkit | Legacy external software that emulates XBox controllers |
Backend | XOutput.Server | Server that collects data from clients and sends to the emulation software |
Client | XOutput.App | Desktop application that collects data from the devices and sends to the backend |
Client | Web controller | Web application that allows to emulate a device |
Client | Web client | Web application that uses the Gamepad API |