UCR (Universal Control Remapper) Guide: Any Input to vJoy

Some games only understand a joystick, while the control you actually want to use is a keyboard, a mouse or a racing wheel. Universal Control Remapper — UCR — exists for exactly that mismatch. It takes almost any input device and remaps it onto a virtual output device, and when that output is vJoy, the game sees a standard DirectInput joystick no matter what you are really holding. This guide explains how UCR’s provider system works, why the vJoy output is the one most readers here need, and how to build your first mapping.

What UCR does

UCR, by Snoothy, is a rewrite of the original evilC/UCR project. In its own words it can remap any inputs — keyboards, mice, joysticks, racing wheels and even eye trackers — to virtual output devices. It does this through provider plugins: a provider is the piece that knows how to talk to one kind of virtual device. Two providers matter for this site. The vJoy provider makes UCR output a DirectInput joystick, which is the right choice for flight sims, older games and anything else that reads DirectInput controllers. The ViGEm provider makes UCR output an Xbox controller instead, for games that only accept XInput gamepads.

That choice — vJoy output or ViGEm output — is the first decision in every UCR setup, and it is decided by the game, not by preference. Check what your game binds: if it lists generic joysticks and lets you assign axes freely, it is reading DirectInput and you want the vJoy provider. If it only ever shows an Xbox pad, you want the ViGEm provider. Picking the wrong one produces the classic symptom of a perfect mapping that the game completely ignores.

Install order: the virtual device first

  1. For vJoy output, install vJoy first from our download page and configure a device in vJoyConf with the axes and buttons your mapping will use. UCR can only write to a vJoy device that already exists.
  2. For Xbox output, the ViGEm virtual gamepad driver is the equivalent prerequisite; UCR’s ViGEm provider writes to it the same way the vJoy provider writes to vJoy.
  3. Install and start UCR, and confirm it lists your physical input devices. If an input device is missing here, fix that before building mappings on top of it.
  4. Keep UCR running while you play — like every feeder, it only produces output while it is active.

Core setup steps

  1. Create a profile in UCR for your game, so mappings for different games never interfere with each other.
  2. Add your input device — a keyboard, mouse, wheel or stick — and the input you want to use, such as a pair of keys, mouse movement or a wheel axis.
  3. Add the output: choose the vJoy output provider for DirectInput games, select your configured vJoy device, and pick the virtual axis or button this input should drive.
  4. Connect the input to the output. A keyboard example: two keys become the two ends of a virtual steering axis. A mouse example: mouse movement becomes a virtual stick axis for camera control.
  5. Test outside the game first with the vJoy monitor: every input should move exactly the virtual control you assigned, and nothing else.
  6. Start the game and bind the vJoy device controls. If the game shows nothing, revisit the provider choice — a DirectInput game cannot see a ViGEm Xbox output and vice versa.

Start with one mapping and prove it works before adding the rest. A profile with a single keyboard-to-axis remap that you have watched moving in the monitor is a solid foundation; a profile with thirty untested mappings is a debugging session waiting to happen.

Best use case

UCR is the general-purpose option in this hub. Where Joystick Gremlin specialises in merging flight hardware, UCR shines when the input is not a joystick at all: steering a DirectInput driving or flight game from a keyboard, flying with mouse movement written to a virtual stick, or pressing wheel buttons into service as extra virtual buttons. It is also the practical pick when your collection of games is split — some DirectInput, some Xbox-only — because one remapper with two output providers covers both, as long as each profile uses the provider its game understands. Sim setups that use it this way are collected in our games and sims hub.

A simple first profile to copy

If you are not sure where to start, build the smallest useful profile first: two keyboard keys driving one steering axis. Map the left key to the negative end of a vJoy axis and the right key to the positive end, then watch the axis in the vJoy monitor as you press and release each key — it should jump cleanly to each end and return to centre when neither key is held. That ten-minute exercise teaches you UCR’s whole model: input on the left, output provider on the right, profile holding the pair together. From there, real setups are just more pairs — a mouse axis here, a wheel button there — each tested the same way before the next is added.

Limitations

  • The output provider must match the game. vJoy output is DirectInput; it does not emulate XInput. ViGEm output is the Xbox route. There is no provider that makes one virtual device be both at once.
  • The Xbox side rests on an unmaintained driver. ViGEmBus is archived software — its final release is v1.22.0 — so the ViGEm provider depends on a finished, unmaintained project. It is widely installed and works, but nobody is fixing it.
  • UCR feeds nothing by itself. Without vJoy (or ViGEm) installed and a device configured, the remapper has no output to write to. Driver first, remapper second, always.
  • Complex profiles take iteration. Layering many inputs onto one virtual device invites conflicts; build and test in small steps.

Next steps: install the driver from the download page, see the full feeder list in the vJoy feeder tools hub, and compare UCR with the merging specialist in our Joystick Gremlin guide, the sibling tool most readers choose between.

Similar Posts