What vJoy provides
vJoy is a Windows device driver that lets programs expecting a physical joystick receive input from non-joystick sources. It was originally created as a modern replacement for PPJoy and can translate keyboard (and similar) input into joystick events. The driver creates virtual joystick devices that applications see as standard hardware, while no actual physical joystick is required. Developers can use the supplied sample code or adapt it to fit their own projects.
Alternative option
- antimicro — a commonly suggested alternative for mapping keyboard/mouse inputs to virtual controller signals.
Editions and feature differences
-
Compatible / Configurable edition
Lets you choose the number of buttons and select which axes are enabled. Axis remapping isn’t available out of the box unless you make minor code edits. -
Compatible / Fixed edition
A simpler, very stable build that exposes a single virtual device with eight fixed axes and 32 buttons. It does not allow reconfiguration of axes. -
Incompatible (vJoy 2.x) edition
The most feature-rich branch: fully configurable, focused on security, and supports up to 16 virtual devices for advanced setups.
Installing and starting vJoy
The installation process is generally straightforward but can occasionally take longer than expected or fail on some systems. After installation completes you can run vJoy directly or open it from the Start menu. Once active, Windows will list the virtual devices like normal joystick hardware.
Mapping keys and configuring controls
To assign keyboard or mouse inputs to joystick controls you can:
- Choose an input from a dropdown/combo box to bind it to the selected joystick control.
- Or use the capture (three-dot) button to register a keypress directly from your keyboard.
- Repeat for each joystick input you need to map; vJoy supports many inputs per virtual device depending on the edition you chose.
Some builds expose two virtual joysticks with up to 30 inputs each, and each input can be mapped to a key or button.
When to pick each branch
- Choose the Incompatible/vJoy 2.x branch for maximum configurability and multi-device support.
- Pick the Compatible/Fixed edition for a simple, reliable single-device setup where the axis layout is constant.
- Use the Compatible/Configurable edition if you need to adjust button and axis counts but are able to tweak code for any axis remapping.
Final notes
vJoy is a practical solution when an application requires joystick input but you only have keyboard or mouse controls available. It ships with sample code to get developers started, and offers different branches depending on whether you need simplicity or extensive configurability. Installation hiccups can occur, so keep that in mind when deploying on multiple machines.
Technical
- Windows
- Free