vJoy version 1.0.3 – configurable driver

Note: This document is for developers of feeder applications

What's new in version 1.0.3

vJoy device can be configured: 1 to 8 axes (Free choice of axes), 0 to 32 buttons, 0 or 1 POV hat switch

vJoyConf: Configuration utility (open source)

vJoyDemo: Demonstration feeder (open source)

This version is not tested for compatibility with PPJoy

Download from here

Principles of operation

vJoy version 1.x retrieves its HID Report Descriptor from the registry. If absent, vJoy falls-back to the previous method of hard-coded descriptor. The developer of a feeder client may choose to use the default descriptor (8 axes, 8 buttons) and can ignore most the this document. If the developer wants to change the configuration of vJoy device, one of the following options are available:

  1. To change the default (hard coded) HID Report Descriptor in the driver. This method is useful if you are willing to create your own version of vJoy device driver and you do not wish to make your device configurable.

  2. Create one or more registry entries using vJoyConf and write them during installation to the target machine's registry. This is the best approach if you want to override the default vJoy configuration but you do not want the end user change the configuration.

  3. Pack vJoyConf with your product. This will give the end user unlimited control over the configuration of vJoy. However, vJoyConf is written using VS 2008 and .NET and might require installation of some additional software packages.

  4. Create you own version of vJoyConf based on the available sources. This will enable you to integrate the configuration utility in your product.

For the changes in the configuration to take affect, the device must be stopped then started. The registry entry is not removed when uninstalling the driver.


Although the interface is self explanatory, there are some points that need clarification:When pressing button OK or button Apply, vJoyConf creates or update the registry. No GUI feedback is available. Removing this entry can be done only manually.

  1. vJoyConf cannot read the registry. Hence, its GUI does not reflect the state of the registry.
  2. All axes have the same importance. The grouping of the axes is for cosmetic reasons.
  3. You can select/enter any number of buttons between 0 and 32. You cannot select a specific button (e.g. button number 12).
  4. It is current possible to select only one POV Hat switch at most.
  5. A POV Hat switch can be of either types: Four Direction or Continuous POV Hat switch.
  6. Four direction switch has 5 states: North, East, South, West and neutral state.
  7. Continuous switch has can get any value between 0 and 35900. In addition, it can be set to neutral (-1).
  8. Check-box Create .h File is useful if you want to examine the output of vJoyConf or to embed it in your version of vJoy device driver. The end-user has no use of it.
  9. Click button Apply (or OK) to update the registry and to restart vJoy device.

Note that this application is not meant to be distributed as-is to the end-user. In some cases, it requires installation of additional software packages as described below.


vJoyDemo User Interface

vJoyDemo is a Feeder demonstration utility. It can become handy when testing vJoy driver. The upper, yellow pane, indicates the actual version number of vJoy and also indicates that vJoy is installed and active.

This simple application can be the base of your own client application.

vJoyDemo is useful in conjunction with utility Game Controller (joy.cpl) – vJoyDemo feeds vJoy with data while the

Game Controller should reflect the same data. Note that there are some minor difficulties in this process:

  1. Window vJoy Device Properties should be in the focus in order to display correct values.
  2. vJoyDemo interface always display 8 axes, 32 buttons and 1 POV. It reflects the actual configuration of vJoy by greying-out the controls that are not set.
  3. You can switch vJoyDemo POV Hat switch between two modes:
    1. Discrete mode in which it feeds vJoy with one of the values Neutral(-1), North(0), East(1), South(2) and West(3). This mode is shown above.
    2. Continuous mode in which it feeds vJoy with one of the values between -1 to 35900. See below:

Note that this application is not meant to be distributed as-is to the end-user. In some cases, it requires installation of additional software packages as described below.


The location in the registry of the HID Report Descriptor is under key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\vjoy\Parameters\Device0

Value HidReportDesctiptor holds the descriptor in binary format.

Value HidReportDesctiptorSize holds the number of bytes in Value HidReportDesctiptor.

Do not tamper with this data. It is written by vJoyConf and read by vJoy device. If you remove both values vJoy will revert to the hard-coded (default) configuration.


Additional software packages

I developed vJoyConf and vJoyDemo under VS 2008 and MS Forms. On some machines, they will not run unless additional software packages are installed. These packages are free.


If you start one of these applications and get a message similar to the following:

You probably need to install Microsoft Visual C++ 2008 Redistribution package.


Then, if get a message similar to the following:

You will need to setup the Microsoft .NET Framework 2.0.