The VPC Joy Test Tool is a utility program designed to test the input (axis and buttons) of any USB controller. The tool consists of three modules, the main module and two axis visualization modules.
Section (1) - Device Selection:
Here is a drop-down list of devices. If the device is not selected or not connected, the red “OFFLINE” button lights up next to the list. When a device is selected and connected, the button is replaced with a blue “ONLINE”. Pressing the "OFFLINE" / "ONLINE" buttons forces the program to update the list of devices;
Section (2) - Enabling Axis Visualization Windows:
- “Show AIM Window” opens / “Hide AIM Window” closes the “AIM” window;
- "Show OSC Window" opens / "Hide OSC Window" closes the "OSC" window - visualization of axes with an oscillogram (graph of the axis value versus time).
Section (3) - Axis Input Statistics:
Eight possible joystick axes are displayed horizontally: X; Y; Z; rX; rY; rZ; SLIDER and DIAL.
The "Value" column displays the current axis readings in numerical and percentage values. Pressing the "Value" button resets the column statistics;
Column "Val.Min." displays the minimum digital value of the axis deviation that was recorded by the VPC Joystick Tester Tool. clicking the "Val.Min." resets column statistics;
Column "Val.Max." displays the maximum digital value of the axis deviation that has been fixed. clicking the "Val.Max." resets column statistics;
A correctly calibrated axis must display the full stroke of "Val.Min. = 0" and "Val.Max. = 65535", in which case the entire line of axis parameters turns blue - it means the axis is working correctly.
The "FPS" column displays how quickly the joystick controller transmits the change of axes, how many times per second. Pressing the "FPS" button resets column statistics;
The column "MAX FPS" finds the best (maximum) "FPS" during the collection of statistics. pressing the "MAX FPS" button resets column statistics;
If the joystick is at rest (the axes do not move and no buttons are pressed), it is quite logical that the "FPS" values will be about zero or only a few times per second. This means that the controller does not clog the USB data transfer with identical data packets - it does not waste time and resources on USB transfer, but quickly moves to a new round of reading and updating these buttons and axes.
An additional ninth line in the "FPS" / "MAX FPS" columns counts USB packets, how often the joystick controller transmits data;
The "Reset Axes Statistics" button resets all axis statistics in section (3);
Section (4) - Button Input Statistics:
Depending on the number of buttons and huts of the gaming device, the number of displayed buttons in section (4) changes.
The indication of each button has several meanings: gray (by default) - the button has not been pressed, red - the button is now pressed, blue - the button has been pressed (worked) earlier. Thus, you can quickly visually check that all the declared joystick buttons work.
On the right (against a gray background) a group of buttons is supplemented by a statistics text field (log):
Button 6 ON (78ms)
Button 6 OFF (78ms) 
Button 6 ON (110ms)
Button 6 OFF (78ms) 
Each switch on and off is recorded in the log, in parentheses is the response time of the button (duration of the button press), in square brackets is the number of times the button was pressed. Double LMB resets the log. You can copy text from the log field.
The "Reset Buttons Statistics" button resets section (4) to its original state.
"AIM" Axis Visualization
To check the operation of flightstick bases, ministicks etc (using two axes), "AIM" uses a graph with a tracking path. In the upper right corner, you can select the joystick axis that will be displayed in the window. The upper axis selection window is responsible for the abscissa axis (horizontal). Lower - for the ordinate axis (vertical). The suppression of these axes is displayed on the graph by the small red dot of the cursor, the path done by it is displayed by the blue line. When the cursor point is on the abscissa and / or ordinate, they turn red. To reset the cursor path, double-click LMB.
"OSC" Waveform Visualization
"OSC" displays all the axes of the device at the same time. Each axis can be given its own color. LMB on the working field increases the scale of the graph. RMB resets zoom settings to default.