Hi everyone,
I’m building a custom HID joystick using an Arduino Leonardo with the Joystick library, exposing multiple axes:
-
X (A0)
-
Y (A1)
-
Z / Rz (A2)
-
Throttle (A3)
On Windows (Game Controllers panel), all axes are correctly detected and working as expected.
However, inside Unreal Engine (using the Raw Input plugin), I can only reliably read the first 3 axes. Additional axes (such as Rx, Z, or Throttle depending on how I configure them):
-
Do not trigger any events
-
Or are not properly exposed in the GenericUSBController mappings
I’ve already tried:
-
Mapping Rx to Z axis
-
Normalizing all axis ranges to -127 to 127
-
Correctly setting Vendor ID and Product ID
-
Using Enhanced Input (IA_Axis mappings)
-
Testing different axis combinations in the Arduino Joystick configuration
Despite this, it seems only 3 axes are consistently usable.
Question:
Is this a limitation of Unreal Engine’s Raw Input plugin when dealing with custom HID devices?
Or is there any specific configuration or workaround to make Unreal recognize and use more than 3 axes (e.g., 4+ axes)?
Any insights or experience with Arduino/custom HID controllers in Unreal would be greatly appreciated ![]()

