AppleTV Gamepad Mapped Incorrectly

I’m using UE 4.12.4 built from source on a Mac. I’m working on an AppleTV project.

When I deploy to the AppleTV, the gamepad (SteelSeries Nimbus, nicest bluetooth AppleTV gamepad I could find) has some of its inputs mapped incorrectly:

  • Right Trigger Axis: COMPLETELY IGNORED
  • Left Shoulder: INCORRECTLY interpreted as Gamepad Special Left This part was due to an error in my project input mappings

I would appreciate and help/advice/pointers to documentation/pointers to source code so that I can get this gamepad working properly.

I bought a second controller: Horipad Ultimate. Officially listed as an AppleTV controller - bought through (just like the Nimbus). It behaves identically to the Nimbus. That is to say, it works perfectly in anything except Unreal Engine.

I have searched through the codebase for awhile but I haven’t been able to find the place that devices on AppleTV are handled.

Help, please!


UE-30544 has been entered into , it seems that tvOS remote doesn’t map to gamepad inputs correctly. We’re hoping to resolve this as soon as we can, but we can’t make any promises on when it’ll be released.

Thank you!

If you (or a developer who knows) could point me to where in the engine code that is handled, I would be willing to try to fix it myself and submit a patch. This seems like a pretty big show-stopper for tvOS, given that the gamepad is the only “usable” input device on an AppleTV.

BaseInput.ini is where you can edit the control settings/player input. Have you already modified that file?

BaseInput.ini is a settings file. The problem is that the gamepad on AppleTV doesn’t map triggers to triggers and shoulder buttons to shoulder buttons. I mean I need to know where in the actual C++ code that an event from a gamepad would be assigned to, for example, a shoulder button. I would guess that there would be platform-specific code for translating inputs on Windows vs. Playstation vs. AppleTV (for example) to the standard inputs presented to the developer.

I fixed it! The [attached patch (click here)][1] will add mappings for the analog triggers, which were being ignored. Now my analog trigger input works properly.

By far the most difficult part of this fix was finding the correct file, which took a very, very, very long time: Engine/Source/Runtime/Core/Private/IOS/IOSInputInterface.cpp

What is the best way for me to submit a patch and get it accepted? I have [submitted patches before, which have not yet been accepted][2]. What is the best way for me to get a patch actually accepted? Should the patch be against the master branch? Are there some process steps I should go through? Silence doesn’t help me here, which is all I have gotten so far every time I have asked.

The left shoulder button problem was a red herring. I had accidentally added the left shoulder button mapping to one of my inputs in my project (along-side the left special button).

98030-appletvanalogtrigger.txt (980 Bytes)

I made [pull request 2594][1] with the fix.


I have added this to the and the Developers should see this. Thank you so much for sharing your fix! :slight_smile:

, UE-30544 has not yet been made public on . Can we make that one public?