New Unity Input System not recognizing Left pad movement

So we are developing our custom controller and Windows is realizing it as it should, it detects all the buttons and Throttle (Left pad).

All other software is also detecting it, even online testing tools like Gamepad & Controller Tester | DeviceTests are recognizing and moving Left Pad.

The problem is that Unity’s new Input System v1.4.3 is not recognizing Left pad movement. When I click “Listen” under binding tab Unity is recognizing all other buttons clicked except Left Pad movement. Tried it under action types value, button, also all of the control types and Unity is not realizing movement on Left pad.

Do you have any idea how to proceed with debugging this? We are lost.

This is how Windows sees everything:


This is example of controller testing with devicetests:

Unity is recognizing every input except left pad (or throttle as Windows sees it), do you have any idea how to proceed with debugging this?

Hey,

Could you please elaborate on what you mean by this? That is, are you taking an existing gamepad and modifying it’s form factor or are you literally building customer hardware?

Unity’s InputSystem is primarily built around support for specific, well-known input devices like Xbox or PlayStation DualShock gamepads while also trying to support other HID controllers via Auto Generated Layouts. My guess is, you’re custom gamepad is being detected as “Generic HID” controller by Unity

Unfortunately, because the HID data layout varies between devices, auto-generated layout can sometimes “miss” specific controls (Axis or Button) if it’s placed in a different field than what is (generally) expected. This is explained in more detail in the “HID Support” of the InputSystem documentation (linked above).

For example, the Stadia gamepad can be used on Windows as a wired controller but has a similar problem: the Left Trigger isn’t detected by InputSystem (in the Editor). This is because Stadia’s HID Report uses a completely different Control ID for the Left Trigger compared to every other gamepad. The gamepad works when actually playing a Stadia game, because the APIs know the HID layout and how to read the Axis/Button data from the correct controls. Since these APIs can’t be used in the Editor, the InputSystem is stuck trying to decipher the HID Report itself but doesn’t get it quite right. I suspect something very similar is happening here.

What can you do about it?

First off, please file a bug if you haven’t already. While the Input team might not directly fix the bug, they can use it to help improve the Auto-Layout Generation in future releases, i.e. make it “smarter” to detect other variances in HID Layouts.

If you’re able to modify the firmware for your custom controller, perhaps you can change the layout of your HID report to match what a “well known” gamepad does, e.g. PS4 DualShock.

Or you can write a custom input device script in Unity that correctly describes the HID Layout of you custom controller. This is also explained in the HID Support of the InputSystem documentation.

I hope this helps answer your questions.

We are developing custom controller, custom hardware.

Regarding the missing Axis or Button because of mispredicted behavior, well, that doesn’t seem to be the case here. When I open Unity HID debugger it senses all other inputs except the one mapped as Throttle on the device driver. It doesn’t detect changes in any debug field.

Regarding the Bug report, I spent good 15 minutes looking for a place where to submit a Bug report regarding Input system but without luck. I found Github repo of the package but it is clearly stated to not submit bugs on the Github. You guys need to make a clearer statement where to report bugs like this.

I checked with the Input team, and to look into this they’ll need the HID Descriptors from your controller.

You can copy/paste what Unity sees as the “HID descriptor” within managed code by doing:

  • Open the Input Debugger
  • From the Device(s) list, right-click on your controller device
  • Select “Copy device description”
  • Paste the contents into a plain text file, e.g. Notepad
  • Save as a .json file

Please upload or paste the json to this thread and also include it in a bug report (see below)

The problem could be two fold:

To file a bug:

  • In the Editor’s main menu, select Help → Report a bug…

  • Fill out the Bug Report form with as much detail as you can (include HID descriptor .json file)

  • Submit the bug

Once the bug is submitted, you should receive a number/link for the bug ticket; please also paste that to this thread.

Thanks.