I installed the third person 3D demo as a C++ project and have been building from XCode on MacOS. I cannot seem to get any response from any controller (PS3, PS4, Xbox 360, Xbox One, or Switch Pro) either over bluetooth or USB.
I am certain the controllers inputs are making it to the mac, confirmed via: https://html5gamepad.com/
The inputs for the third person project are already setup to take gamepad inputs.
Things I tried: I tried installing the raw input plugin, to see if I could use that to see if UE is getting any input data, but that plugin explicitly states it is for WIN and doesn’t show up when I activate it and restart the editor. I found some of the source code that seems to handle controller inputs via HIDInputInterface, but I don’t believe I can breakpoint that code without building UE from source. I also of course spent hours scouring the internet to see if I could find any information on this problem before posting here.
My question: Unless someone has specifically run into and solve this problem, I was wondering if anyone has any suggestions for how to go about debugging my issue. Are there any ways for me to debug the raw inputs the editor is seeing from various devices? Seeing what devices are connected? (Either in blue print or C++ is fine.)
P.S. I’m on a 2018 Macbook Pro i9, Catalina (10.15.3), UE 4.25.
Edit: I decided to move this thread to the C++ section as my own attempts to figure out how to debug my issue have resulted in me trying to investigate ways to debug in C++. I was hesitant to move it, and am still open to any other debugging suggestions or direction. I’ve added comments with further results of my attempts to navigate my issue.
Spent a few more hours tonight trying to see if I could leverage the IsGamepadAttached() function from any of the various classes that inherit it, and call it in a gameplay module to possibly use that to debug whether Unreal even sees a controller of any kind, without having to compile source.
I followed it all the way back to the concept of an IOHIDevice, which seems to be what HIDInputInterface.cpp is using to determine whether a controller exists or not. But I am very out of my depth with how to use this information further. As I delve more deeply into this I am wondering if I should move this thread to C++, I had originally put it here as I was asking a pretty open-ended question of how to go about even investigating the cause of the issue. But with no direction I’ve just been diving down the C++ rabbit hole.
Downloaded UE4 and VS on my Windows partition, and had no problem with gamepads in the editor or in the play window. I would really like to work on the mac side of my machine, and was excited to see UE4 supported working on MAC OS, I can’t imagine gamepads are completely unsupported for MAC.
Just an update that I’ve been spending a lot of time searching for someone who has run into or solved a similar issue to no avail. I have been unable to make progress on this issue.
How can you claim to have ma=c support and not ONE gamepad actually is recognized properly in UE4?
IS there a FIX yet?
I paired
xbox one
PS4
Switch PRO
Wii Controller and classic controller pro
Wii U Pro Controller
8 bit do gamepad…
NONE of them registered properly in unreal engine 4 on a Mac
Its been quite some time and this issue isn’t resolved yet, my controller is unable to register or trigger event I am unable to find any viable solution for this problem!, meanwhile it works perfectly fine on this https://gamepadtest.com/ as prescribed by on of the members on this forum .
This issue seems to have persisted ever since MacOS dropped support for 32-bit games. Before that it was easier to get a gamepad to work with Mac in Unreal than with Windows!
Without this, gamepad input simply does not execute in Unreal Engine on macOS, however controller detection strangely does work.
Engine/Source/Runtime/ApplicationCore/Private/Mac/MacApplication.cpp has a CVar named CVarMacControllerPreferGCImpl The default is set to 1, and it’s readonly so you can’t set it in editor, you have to set it before unreal is loaded.
There’s unfortunately a comment saying: “Remove this wrapper and HIDInputInterface once 10.14.0 is no longer supported” But 0 is the only option that works in macOS Sonoma 14.5
It’s used in an if statement to figure out what kind of ControllerInterface to instantiate. When set to 1 it uses FAppleControllerInterface, and set to 0 it uses HIDInputInterface