Xbox Controller not working on macOS

Hello everyone,

I have an action map set up that uses the gamepad controls for my game. When I test these controls with a PlayStation controller, Nintendo Switch Pro, and others, they work fine. The Xbox Controller, however, is the only one that doesn’t work. The inputs are being read, but the left stick inputs are way wrong. Sometimes they there are inputs there when I am not even touching the controller.

The strange thing is this is only happening on macOS. Had someone else try it on their Windows machine and the Xbox Controller worked fine. Anyone else on Mac experience this? Is there something specific that needs to be downloaded to make this Xbox Controllers work with Mac? Thanks very much in advance

Same problem here. Unity 2022.3.11f1 with InputSystem 1.7.0, Xbox Elite Controller (bluetooth). We will release our game soon, we don’t know what to do with this.

Same here with Nimbus controller. input debugger shows input, but neither editor nor compiled macos game works…

Hi!
I am finding really hard to give advice on what gamepad works on Mac, did you find anything?

Hi folks,

Thanks for posting and replying in this thread. This is probably due to macOS’s Input Monitoring privacy feature being incompatible with gamepads that also report themselves as a keyboard (such as the Xbox Elite Controller).

We’ve tested this on our end with a Raspberry Pi Pico, and found when we set our device to report as both a gamepad and a keyboard, you need the Input Monitoring permission to read from the device.

This is not a Unity issue, but an issue stemming from how macOS decides if a device should be covered by Input Monitoring.

If this applies to your controller, you can workaround this by:

  1. Navigating to the Input Monitoring tab in System Preferences
  2. Adding your build / the Unity Hub (as the Hub launches the Editor).
  3. Accepting the prompt to relaunch the application (and, relaunching the Editor if adding the Hub)

Thanks!

I did this and restarted the Editor. I still have the issue where everything works for the Xbox controller except the left stick directional. If I tap up and let go, the result show as if I am still holding up. Same for any direction. It is the only thing not making the controller work.

This is absolutely not a solution!

The issue MUST be with Unity.

The XBOX controller had been working fine for OVER A YEAR on Unity 2022.3.15f1

The day I have to demo my game to my boss THE JUMP BUTTON and other joystick buttons are not working! I have tested this game probably over 2,000 times. Why?! No updates, NOTHING CHANGED.

Honestly, I wonder if anyone at Unity even gives a damn about the devs who use their software! You guys need to feel what it is like to be publically humiliated for YOUR ENGINE failing over and over again!

This is marked as a solution and it is not!

Hiya,

As this didn’t solve your issue, I removed the answer tag - but, I wanted to give some more details in case it helps you resolve the issue.

To give some more details for what we investigated - we’ve tested this using a Raspberry Pi Pico, so we can modify what USB descriptors the OS is receiving.

When our Pico reported itself as just a gamepad, it is read as expected by the engine.

However, when it’s reported as both a keyboard and a gamepad (like the Elite Controller) we start having issues, and, only on macOS.

To verify this is something outside of our control, we continued to see the behaviour external to Unity (e.g. the same behaviour occurs in a tiny native binary built in Xcode, and on the web).

As such - from what’s been described in this thread, this looks to be a similar issue where macOS is filtering / blocking inputs from being read as a privacy measure.

I’m having the same issue with an Xbox series X controller, I get an error saying “Couldn’t parse HID descriptor with fast parser. Using fallback” and the controller does nothing. It works fine with every single other software I used.

2 Likes

I’m also experiencing the same issue using Unity 6000.0.20f1 on macOS. It happens when I enter input on an Xbox One controller with a new URP template. I agree that this seems to be a bug on Unity’s side given the controller works for me elsewhere on the machine and it’s described as a parsing error. This is the Input Debugger description for the device:

{
    "interface": "HID",
    "type": "",
    "product": "Controller",
    "serial": "3032373030343535303034313532",
    "version": "1289",
    "manufacturer": "Microsoft",
    "capabilities": "{\n    \"vendorId\": 1118,\n    \"productId\": 2834,\n    \"usage\": 5,\n    \"usagePage\": 1,\n    \"inputReportSize\": 19,\n    \"outputReportSize\": 13,\n    \"featureReportSize\": 1,\n    \"elements\": [\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 8,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 16,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 24,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 32,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 40,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 48,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 56,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 64,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 72,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 80,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 88,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 1,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 1,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 96,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 5,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 5,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 8,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 5,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 5,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 16,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 5,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 5,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 24,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 5,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 2,\n            \"collectionIndex\": 0,\n            \"reportId\": 5,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 32,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 7,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 7,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 8,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 7,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 7,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 16,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 7,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 7,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 24,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 7,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 7,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 32,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 7,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 7,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 40,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 8,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 16,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 24,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 32,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 40,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 48,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 56,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 64,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 72,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 80,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 88,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 96,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 104,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 112,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 120,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 128,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 136,\n            \"flags\": 2\n        },\n        {\n            \"usage\": 32,\n            \"usagePage\": 65280,\n            \"unit\": 0,\n            \"unitExponent\": 0,\n            \"logicalMin\": 0,\n            \"logicalMax\": 255,\n            \"physicalMin\": 0,\n            \"physicalMax\": 255,\n            \"reportType\": 1,\n            \"collectionIndex\": 0,\n            \"reportId\": 32,\n            \"reportSizeInBits\": 8,\n            \"reportOffsetInBits\": 144,\n            \"flags\": 2\n        }\n    ],\n    \"collections\": [\n        {\n            \"type\": 1,\n            \"usage\": 5,\n            \"usagePage\": 1,\n            \"parent\": -1,\n            \"childCount\": 39,\n            \"firstChild\": 0\n        }\n    ]\n}"
}

I managed to make bluetooth controller input work on VisionOS with the input system 2.
I have ignored the input debugger since it made everything more confusing and just assigned the general controller inputs via the input system action map.
You can use chatGPT to help out as well (I didn’t find programming for action maps input system very intuitive so I let chatGPT handle that).

OK, this is extremely stupid, and probably doesn’t solve any of the problems from other users, but maybe someone sees it in the future.

I had my controller paired with my Mac, on pairing it was recognized with the name Xbox Wireless Controller, and everything worked perfectly. I had a couple of Unity builds, one of which was made when I was using a colleague’s Xbox Controller (same type). I have to say that I set the controls up using the new input system, and mapped most of the bindings using a PS5 Dual Shock gamepad. As I said everything worked perfectly.

Then I renamed my controller and it stopped working both in Unity and all of the builds that I had. I had the warning about failing to parse the HID, and the HID was all wrong just like with unsupported gamepads, recognizing the first button as the trigger, the first joystick, etc.

I resolved the issue by testing the gamepad on my wife’s Windows laptop where I caught the original name of the gamepad: Xbox Wireless Controller.

  1. Paired it back to my Mac, and renamed it back to the original name.

  2. In System Settings > Game Controllers > I found the renamed joystick, opened its settings and did the Erase Controller Settings.

  3. Unpaired, forgot the device, and paired back to finally see it working.

I’m also having this issue. But Gamepad Tester in Safari browser works fine.
Using a “8BitDo Pro 2” BT controller and just Unity on macOS is having an issue.

1 Like

Godot game engine also has zero issues. Unitys own Input tester works fine. But the input API doesn’t see a gamepad. Unity 2022.3 and Unity 6 both don’t work.

1 Like

BTW, tried Legacy input and it doesn’t even work with official Xbox controllers and I know these used to as I’ve wired them up before on macOS. Even officially licensed StealSeries controllers for Apple don’t work with Unity. IDK why Unity isn’t using the macOS APIs here if thats the problem. Or is Unity blacklisting controllers?

I will point out that PS5 controllers work perfectly on macOS including haptics. So PS4 & PS3 probably do as well. So thats the easy solution atm is to just use Sony controllers but this is just silly as macOS clearly supports many other controllers in their APIs and settings.

Yeah, this appears to be limited to unity on mac. Same device works fine on Android and Windows with the same unity project. But on mac is shows up as a generic joystick as opposed to Xbox Controller. Looking at how the Input System doesn’t display the device details like manufacturer correctly, seems like it could be a HID parsing error. And perhaps the parser is different on MacOS vs Windows? I saw one other mention here of seeing a HID parse error.