vJoy vs ViGEmBus vs XOutput: Which Virtual Controller Do You Need?
Three names, three different jobs — and most confusion in this niche comes from treating them as rivals. vJoy creates DirectInput joysticks. ViGEmBus creates Xbox 360 and DualShock 4 gamepads. XOutput converts DirectInput controllers into XInput ones, using ViGEmBus underneath. This page is a decision tree: answer one question about your game, and you will know which of the three you need — if any.
Step one: does your game want a joystick or a gamepad?
If the game speaks DirectInput and expects a joystick — flight sims, space sims, older titles, anything where you bind “Joystick Button 47” — you need a virtual joystick, and that is vJoy. Each vJoy device offers up to 8 axes, up to 128 buttons, and up to 4 POV hats across up to 16 devices, fed by an application such as Joystick Gremlin or UCR. No gamepad emulator gives you that device shape.
If the game speaks XInput and expects an Xbox-style pad — most modern action games — a vJoy device will often be invisible or unusable, because vJoy does not emulate XInput. That is the gamepad side of the fence, and it belongs to ViGEmBus and the tools built on it.
| Your game expects… | You need… | Tool |
|---|---|---|
| A generic joystick (DirectInput), many buttons/axes | A virtual DirectInput joystick + a feeder | vJoy (+ Gremlin / UCR) |
| An Xbox 360 / DS4 pad (XInput) | A virtual gamepad driver | ViGEmBus (via an app that uses it) |
| To turn a real DirectInput stick/pad into an Xbox pad | A converter on top of the gamepad driver | XOutput (via ViGEmBus or ScpVBus) |
| An Xbox pad from a DirectInput virtual joystick | Chain both worlds | Feeder → vJoy → x360ce |
ViGEmBus: complementary, archived, and final
ViGEmBus, by nefarius, is the driver that lets applications present virtual Xbox 360 and DualShock 4 controllers to Windows. It is complementary to vJoy, not a rival driver: vJoy covers the generic DirectInput joystick, ViGEm covers the console gamepad. Many setups quietly use both — UCR, for example, uses vJoy as its DirectInput output provider and ViGEm as its Xbox provider, choosing per profile.
Its status must be stated honestly: the ViGEmBus repository is archived, and the final release is v1.22.0 — a release literally titled “It’s dead, Jim.” It remains widely installed and still works for a great many people, but it is unmaintained and final. Software that depends on it inherits that status. Anyone who tells you ViGEmBus is actively developed is out of date; anyone who tells you it stopped working everywhere is also wrong. Plan accordingly: fine to use, wrong to build a long-term stack assuming updates.
XOutput: the converter, not a driver
XOutput does one focused job: it takes DirectInput controllers — real sticks, wheels, and pads that modern XInput-only games ignore — and presents them as XInput controllers. Underneath, it outputs through ViGEmBus (or the older ScpVBus). XOutput is therefore not an alternative to vJoy either. If your physical hardware already exists and merely speaks the wrong API, XOutput is the bridge. If you need a virtual device with no physical original — merged sticks, scripted axes, 100+ buttons — you are back in vJoy territory, because there is nothing physical for XOutput to convert.
The chain that confuses everyone: feeder → vJoy → x360ce
There is one more combination worth naming, because forum posts garble it constantly. x360ce is a separate XInput-emulation layer that works at the game level. The classic chain is: a feeder application writes to vJoy (DirectInput), and x360ce then presents that virtual joystick to a specific game as an Xbox 360 controller. So the full stack reads feeder → vJoy → x360ce → game. vJoy and x360ce are not substitutes; they occupy different links in the same chain. If you only need the gamepad end result for modern games, a ViGEm-based route is usually simpler today. If you need the merged, many-button virtual joystick first and XInput second, the chain still earns its place.
Two mistakes this decision tree prevents
The first mistake is installing everything. Newcomers often install vJoy, ViGEmBus, XOutput, and x360ce in one afternoon because four guides each mentioned one of them, then debug conflicts that a single correct tool would never have created. Work backwards from the game instead: check what controller type the game binds. If the binding screen names joystick buttons and axes, stop at vJoy and a feeder. If it shows an Xbox pad diagram, stop at the ViGEm-based route. Add a converter only when a real physical device needs translating, and add x360ce only for the specific game that needs the chain.
The second mistake is ignoring Steam Input. For Steam games, Valve’s built-in remapping layer is the first thing to try — it creates a virtual controller for that game without any of the three tools on this page. vJoy’s remaining home ground is precisely where Steam Input does not reach: non-Steam simulators, DirectInput merging of several physical devices into one, and scripted or hardware feeders. Naming that boundary honestly shrinks nobody’s install list — it just stops gamepad players installing a sim driver they never needed, and stops sim players expecting a gamepad tool to merge their sticks.
Verdict
Joystick-shaped problem: vJoy. Gamepad-shaped problem: ViGEmBus-based tools. Wrong-API hardware: XOutput. Both shapes in sequence: the vJoy → x360ce chain. Install vJoy from the download page (and pick the right build with Which vJoy Build Should You Download?), choose your feeder via Joystick Gremlin vs UCR, and see the Alternatives & Comparisons hub for how vJoy compares with the paid remapper reWASD and its predecessor PPJoy.
