Flight Stick and HOTAS Test - Joystick Calibration in Browser
For flight stick checks, map a joystick or HOTAS (Hands On Throttle And Stick) controller through the browser's Gamepad API. These low-level input devices report buttons and axes, including devices beyond standard gamepads such as joysticks, driving wheels, and pedals.1 A typical gamepad has two analog sticks producing four axes: LX, LY, RX, and RY. A flight stick commonly exposes additional axes: X and Y for the main stick movement, a Z-axis for twist or yaw rotation, a throttle axis on a separate handle, and sometimes rudder pedal axes if pedals are connected.2
Because the Gamepad API exposes axes as one flat array, a complex HOTAS can report many values that the browser does not label for you.3 This tester shows the first two pairs as canvas visualizations and lists all reported axis values numerically below, including axes 4 and above for throttle, hat, and rudder inputs.
Identifying which axis is which
To map your physical controls to their axis numbers, move one control at a time and watch which value changes in the list. Move the main stick left and right, and the changing axis is your X-axis. Move the throttle lever, and the changing axis is the throttle. This process takes under a minute and is worth doing before your first flight session.
Mapping one control at a time
The Gamepad API normalizes axis values to a -1.0 to 1.0 range, so a centered control should sit near 0.0 and a full throw should approach one end of that range.1 HOTAS manufacturers may expose the throttle as a dedicated axis, so testing before a session confirms that the throttle reaches both ends of its range cleanly, that its direction matches your simulator mapping, and that the main stick returns to center reliably.4
After the stick registers in the tester, press a few buttons and move the main stick through its full travel so you can confirm the page is reading live values before you build the axis map. A control that produces no change in the list may not be registered with the browser yet, so reseat the connection before assuming the hardware is faulty, because an unregistered device reports nothing at all.
Hat switch encoding and Z-axis drift
To test a hat switch, push it in each cardinal and diagonal direction and note the axis values for each position. Different manufacturers encode hat switch positions differently: some use evenly spaced values, some use raw angle-to-float conversions, and some use two axes in XY format.5 DirectInput defines POV hat position in hundredths of a degree clockwise from north, with 0, 9000, 18000, and 27000 representing up, right, down, and left.2 Press all eight directions to build a complete map before configuring your in-sim controls.
Building a complete hat-switch map
A flight stick with Z-axis drift in the twist grip can cause constant yaw rotation in aircraft even when the stick is untouched, especially at cruise altitude. A persistent non-zero Z-axis reading at rest with the twist grip released points to drift in the twist mechanism, and the same potentiometer wear that affects thumbsticks can also affect joystick mechanisms.6
Throttle axis identification and range verification
Throttle controls on HOTAS hardware appear as dedicated controls in the Gamepad API, separate from the main stick X and Y axes. To identify your throttle axis, move the throttle lever slowly from its rearmost position to its furthest forward position and watch the axis list for the one that changes. The changing axis is your throttle. Note its number and its range: most browser axes report -1.0 at one end and 1.0 at the other, while analog trigger-style inputs are commonly represented as 0.0 to 1.0 values in the Gamepad API button model.7 Confirm that the reported direction matches your simulator mapping before you save bindings.
A throttle that does not reach the full expected range at either end of its physical travel has a potentiometer calibration issue. Windows Game Controllers can remap the physical range to the expected output, so use the raw values from this tester to determine the actual hardware range before entering calibration settings.
When the throttle reads less than full range
Throttle drift appears as a non-zero reading at what you intend as zero-thrust. Test for it by moving the throttle to your intended idle position, releasing it, and reading the axis value for 10 seconds. A value that remains away from your intended idle position will register as slow throttle input in most aircraft. If the value still does not reach the expected endpoint after calibration, the throttle channel may need repair or replacement rather than another software adjustment.
When to use this
Run this before a flight simulation session to verify all axes are responsive, confirm hat switch encoding, and map every axis on your flight stick before takeoff.6
Examples
Identifying throttle axis on a HOTAS
Moving throttle lever from full back to full forward: Axis 2 changes from -1.0 to 1.0
Throttle confirmed as Axis 2 - full range confirmed and direction noted
If the throttle only reaches 0.8 at maximum forward throw, the potentiometer is out of calibration or physically limited.
Hat switch direction encoding on a flight stick
Hat pushed up: Axis 6 = -1.0 / Hat pushed right: Axis 6 = 1.0, Axis 7 = -1.0 / Hat pushed down: Axis 7 = 1.0
(XY-encoded hat switch confirmed - map each value to in-game view commands accordingly)
Hat switches use different encoding schemes across manufacturers. Test all 8 directions to build a complete map before configuring in-sim controls.
Z-axis drift on a twist-grip joystick
Axis 2 (Z/Yaw): 0.06234 at rest with twist grip fully released and untouched
Same value after cleaning and reseating - hardware drift confirmed in the twist potentiometer
A 0.06 `Z-axis` drift causes slow yaw rotation in most flight sims. This requires repair or replacement of the twist mechanism.
- 1.
MDN, "Gamepad.axes," developer.mozilla.org, December 2025. https://developer.mozilla.org/en-US/docs/Web/API/Gamepad/axes
- 2.
Microsoft Learn, "DIJOYSTATE2 Structure," learn.microsoft.com, September 2011. https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ee416628(v=vs.85)
- 3.
W3C, "Gamepad," w3.org, July 2025. https://www.w3.org/TR/gamepad/
- 4.
Logitech Support, "Recalibrate the X56 H.O.T.A.S. axes: RegEdit," support.logi.com, accessed June 2026. https://support.logi.com/hc/en-150/articles/360023179094-Recalibrate-the-X56-H-O-T-A-S-axes-RegEdit
- 5.
Linux Kernel Documentation, "Linux Gamepad Specification," docs.kernel.org, accessed June 2026. https://docs.kernel.org/input/gamepad.html
- 6.
iFixit, "ALPS RKJXV1224 Variants Teardown," ifixit.com, February 2021. https://www.ifixit.com/Teardown/ALPS+RKJXV1224+Variants+Teardown/140803
- 7.
MDN, "GamepadButton.value," developer.mozilla.org, December 2025. https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton