Configure vJoy: vJoyConf Devices, Axes, Buttons and POV
Configure vJoy, the tool whose window title and executable name vJoyConf confuse so many new users, is where a vJoy installation becomes a usable setup. Installing the driver only makes virtual devices possible. vJoyConf decides how many devices exist, which device ID each one has, and exactly which axes, buttons, POV hats and force feedback features each device exposes. Games and feeders then work against that definition. A thoughtful five minutes in vJoyConf prevents the two classic complaints in this niche: a game that sees a device with the wrong controls, and a feeder writing to a device that was never configured to receive that data.
What vJoyConf actually controls
Every setting in vJoyConf describes the virtual hardware Windows will report. Device IDs run from 1 to 16, matching the documented limit of up to 16 virtual devices. For each device you can enable any combination of the 8 axes, named X, Y, Z, Rx, Ry, Rz, Sl0 and Sl1, set a button count up to 128 buttons, and enable up to 4 POV hat switches. You can also enable force feedback on a device where the build and feeder support it. Nothing here generates input by itself. vJoyConf defines the shape of the device; a feeder supplies the live values through vJoyInterface.dll, and Windows reports the result to DirectInput games.
Plan devices per feeder, not per game
The most reliable planning rule is one device per feeder. If Joystick Gremlin is merging your stick and throttle, give Gremlin its own device ID. If a second tool, such as a serial feeder or a FreePIE script, also writes virtual input, give that tool a different device ID. Two feeders writing to the same device will overwrite each other’s axis values many times per second, producing jitter and phantom movement that looks like a hardware fault. Games then bind to whichever device carries the inputs they need. This per-feeder plan also makes troubleshooting simple: disable one feeder and you know exactly which device should go quiet in JoyMonitor.
- Write down each feeder and the single device ID it will own.
- List the axes that feeder truly sends, in order.
- Count the buttons that feeder needs, then add modest headroom, not the maximum.
- Decide which device, if any, needs a POV hat or force feedback.
- Only then open vJoyConf and enter the plan.
Setting axes, buttons and POV step by step
- Open Configure vJoy from the Start menu and select the device ID you planned, starting with device 1.
- Tick only the axes your feeder writes. Leave unused axes disabled so games do not offer dead controls in binding screens.
- Set the button count to cover your feeder’s outputs. Buttons are reported as a block, so choose a number that includes what you need without defaulting to 128.
- Enable a POV only if your feeder sends hat data, and choose the number of POV hats, up to 4, that matches the feeder.
- If your setup uses force feedback, enable it on that device and note that FFB behaviour also depends on the build and the feeder, not on this tick box alone.
- Click Apply, then repeat for any further device IDs. Close vJoyConf and verify the result before opening a game.
After applying, verify twice. First, open joy.cpl, select the device, and confirm the Properties view shows the axes and button count you intended. A mismatch here means the configuration did not apply as expected, and it is far cheaper to discover that in joy.cpl than inside a simulator’s binding menu. Second, start your feeder and watch the device in JoyMonitor: every axis you enabled should move when the feeder writes it, and no axis you disabled should be expected anywhere. This two-stage check is the core skill of configuring vJoy well.
Force feedback: the honest note
vJoyConf can expose force feedback on a device, but enabling the option is only one link in a chain. The installed build matters: the njz3 2.2.1.1 fork exists specifically because of force feedback work, including multi-device fixes, while BrunnerInnovation 2.2.2.0 is the current general release. The feeder matters just as much, because FFB effects are passed between the game, the virtual device and the feeder’s physical hardware. If FFB does not behave on a 2.2.x build with your feeder, that is a known pattern rather than a personal failure: at least one feeder vendor documents 2.2.x as only partially supported, and 2.1.9.1 is the recognised compatibility fallback. Change one link at a time and retest.
Why lean devices bind better in games
Simulators and games list each vJoy device by the same name, vJoy Device, a limitation documented clearly in the Microsoft Flight Simulator community. If you create four identical maxed-out devices, a binding screen becomes a guessing game. Lean, distinct devices are recognisable: the device with two axes and no buttons is obviously the rudder feeder, while the device with many buttons is the button-box merger. Deliberately differing axis and button counts between devices is a practical workaround for the identical-name problem, and it starts here, in vJoyConf, not in the game.
Common mistakes
- Maxing everything. 8 axes, 128 buttons and 4 POVs on every device makes binding screens unreadable and hides real problems.
- Two feeders, one device. Give each feeder its own device ID, always.
- Configuring while a game is running. Many games enumerate devices at launch. Change configuration with games closed, then relaunch.
- Forgetting to Apply. If joy.cpl does not show your new shape, the change was not applied. Recheck before deeper diagnosis.
- Expecting vJoyConf to test input. It defines devices. Use JoyMonitor or joy.cpl to watch live values.
Frequently asked questions
How many devices should I create? As many as you have feeders, plus room to grow. Most setups use one to three. Can I change a device later? Yes. Reopen vJoyConf, adjust, apply, and relaunch your game so it re-reads the device list. Existing game bindings to removed axes or buttons may need rebinding. Does the order of axes matter? The feeder decides which virtual axis it writes; your job is to ensure that axis is enabled on the device ID the feeder targets. Where do I set curves or merging? Not in vJoyConf. Curves, merging and macros belong to the feeder, for example Joystick Gremlin. vJoyConf only defines the virtual hardware those tools write to.
Keep going
Start from the vJoy download page if you need the installer again, and use the vJoy Setup hub as the index for this whole cluster. Two guides that pair naturally with this one are How to Install vJoy: Complete Guide and vJoy Monitor Guide. Read them in that order if you are building a setup from scratch: download choice first, installation second, configuration third, and only then time inside a game or simulator. That order prevents the most common wasted hour in this niche, which is debugging a feeder or a game for a driver problem that was visible in Windows all along.
