PPJoy
About PPJoy
PPJoy is a virtual joystick driver that turns inputs from non-joystick sources, keyboards, mice, parallel port wiring, network signals, and homemade controller circuits, into proper DirectInput joystick devices that games actually recognize. The whole point is that any application expecting a joystick will see one, even if no real joystick is plugged in.
That sounds narrow, but it covers a surprising amount of ground. Emulator users who want their keyboard mapped as a gamepad. Sim cockpit builders who wire physical switches into a parallel port and need the PC to read them as joystick axes. Owners of old console pads with weird adapters that nothing else supports. PPJoy is the layer that makes all of these look like a normal joystick to the operating system.
It is not a remapper in the JoyToKey sense. JoyToKey converts joystick movement into keyboard presses. PPJoy does the opposite. It creates virtual joysticks from other sources so games receive joystick events instead of keyboard events.
Virtual joystick devices that games actually trust
PPJoy can register up to 16 virtual joystick devices on a single machine, each one appearing in the standard Game Controllers panel like any USB pad. Each virtual stick can be configured for a different axis and button count, up to 8 axes, 16 buttons, and 4 POV hats per device, which covers almost every conceivable input layout including triple-rudder flight setups or arcade panels with dozens of buttons.
Because the virtual joysticks present themselves through the DirectInput API, games and simulators do not need to know they are virtual. There is no compatibility shim per title, no profile to load on the game side. The game just sees “Joystick 1” and reads from it.
You can pick exactly which axes and buttons each virtual device exposes during creation. Flight sim users tend to spawn one virtual device with many axes and few buttons.
Fighting game emulator users do the opposite, two axes, lots of buttons. The flexibility is deliberate, because what the game sees is what your input mapping has to populate.
Input mapping from sources games would otherwise ignore
The real work happens in the mapping layer. Once a virtual joystick exists, you assign sources to its axes and buttons. The classic sources are keyboard keys, which lets you play a joystick-only game with WASD or a custom key layout. But the source list is much wider than that.
Mouse movement can drive an axis, useful for testing analog input or building hybrid mouse-joystick setups. Parallel port pins can be read directly, which is how home-built arcade panels and switch boxes have traditionally connected. Network input is supported through a small client-server arrangement, allowing one machine to send joystick data to another. And there are scripting hooks for users who want to feed inputs from custom code.
This is where PPJoy stops being a niche curiosity and becomes the backbone of a lot of DIY input projects. People who build custom programmable input rigs often end up routing the final signal through PPJoy because it is the cleanest way to expose that input as something games respect.
The reason it still gets installed
Newer drivers exist. vJoy covers the same conceptual ground with a more current codebase and active community. So why install PPJoy at all? Three reasons, in roughly this order.
Old tutorials and adapter hardware specifically reference it. If you bought a PS2-to-PC parallel converter years ago, the documentation that came with it almost certainly tells you to install PPJoy and walks through the exact menu choices. Switching to a different driver means re-figuring out the configuration from scratch.
Some emulator front-ends and configuration scripts were written against PPJoy and have never been updated. Plug in vJoy and they cannot find the joystick. Plug in PPJoy and everything works as documented.
And the parallel port handling is genuinely unique. Other virtual joystick drivers do not bother with LPT pin reading because almost nobody has parallel ports anymore. But if you do, and you have a switch panel wired to one, PPJoy reads it and nothing else really does.
Quirks you only notice after the install
A few things become obvious quickly. The configuration dialog is utilitarian to the point of being intimidating, lots of dropdowns, axis numbers, button assignments, and no hand-holding. Coming from something like AntiMicro or InputMapper, the difference in polish is noticeable. PPJoy assumes you already understand DirectInput and just need to wire things up.
Signed-driver enforcement on modern Windows is the other big quirk. The installer requires you to disable driver signature enforcement or boot in test mode the first time, because the driver itself is not signed under current requirements.
This is well-documented in community guides but absolutely catches first-time users off guard. Once installed, the driver works normally until you uninstall it.
There is no auto-update mechanism and no telemetry. The driver does what you set it up to do and then gets out of the way. For some users that is a feature, for others it means support questions get answered in old forum threads rather than current documentation.
Where it fits compared to mapping utilities
It helps to be clear about the divide. PPJoy creates joystick devices. Tools like Xpadder or AntiMicro do the reverse, they take real joystick input and translate it into keyboard or mouse events. Both have legitimate uses, and many setups actually layer them. Read keyboard with PPJoy to create a virtual joystick, then route that virtual joystick through a different mapper for further conditioning.
The reason you would want PPJoy in that chain is when something downstream, an emulator, a sim, a calibration tool, refuses to read keyboard input directly and demands a real joystick. PPJoy is the piece that satisfies that demand.
Conclusion
PPJoy is the right tool when something specific in your setup refuses to work with anything else. People building parallel-port switch panels, restoring old emulator rigs with original configuration scripts, or troubleshooting hardware adapters that name the driver in their manual will find it indispensable. Users starting fresh on a clean system with current hardware will probably be happier with a newer alternative.
The audience is narrow but real. If you are in it, you usually know before you start looking, because the forum thread, the adapter manual, or the emulator guide already told you which driver to install.
PPJoy earns its install on those grounds, not on user friendliness or visual polish.
Pros & Cons
- Creates true DirectInput joystick devices that games recognize without modification
- Supports up to 16 virtual joysticks with custom axis and button counts each
- Reads parallel port input, which almost no other modern driver bothers with
- Works with old adapter hardware and emulator scripts that hard-coded its name
- Network input mode allows one PC to drive joystick events on another
- No telemetry, no background services, no auto-update interference
- The configuration interface is dense and assumes you already know DirectInput terminology
- Driver signature enforcement on current Windows requires extra setup steps before installation
- Active development has slowed, and most support information lives in old forum threads
- No built-in profile manager for switching between mapping setups quickly
- Documentation is sparse and scattered across community resources
Frequently asked questions
Keyboard keys, mouse movement, parallel port pins, and network inputs can all be routed to virtual joystick axes and buttons.
Up to 16 virtual joystick devices, each independently configured for axes, buttons, and POV hats.
Yes, this is one of the most common use cases. Emulators that require a joystick read the virtual device exactly as they would a real one.
Compatibility with older adapter hardware, legacy emulator configurations, and parallel port support are the main reasons. Documentation written before vJoy existed still references this driver specifically.
Yes, because the driver is not signed under current requirements, users typically need to disable driver signature enforcement before installing it. This is a one-time step.
Yes, axes and buttons on a single virtual device can be mapped to different sources, so you can have keyboard keys driving the buttons while parallel port pins drive the axes, for example.


(26 votes, average: 3.42 out of 5)