InControl: Known Issues

If you know anything about controllers and cross-platform support, you know that finding consistent, functional behavior is a fool’s errand. Every controller seems to behave slightly different on every platform. Sometimes they work partially or not at all. Other than Apple’s MFi controller specification, there is no standard for how controllers should work, or what controls they should have and how those behave.

This list is an attempt to enumerate some of the more glaring or quirky issues encountered, but these are not bugs, at least not in InControl. Perhaps not even in Unity. There is no expectation of a fix or workaround in most cases unless a driver update happens to address it.

Events

  • Not all platforms trigger the DeviceAttached event correctly. If Unity's Input.GetJoystickNames() is updated by the platform while the app is running, it will work. Every platform does, however, report all newly connected devices once the app is relaunched.
  • When multiple controllers with the same name are used and one is detached, Unity does not report which one was detached. Thus InControl has no choice but to fire DeviceDetached events for ALL controllers and then fire DeviceAttached events for those remaining. The Native Input module circumvents this problem entirely.

Controls

  • Some controller specific buttons (like Start, Select, Back, OUYA, Xbox Guide, PS3, etc.) are not part of the standardized set of supported inputs simply because they do not work on every platform. You should not be using these buttons in a generalized cross-platform capacity. You can query: InputManager.MenuWasPressed, though, which maps onto whatever roughly applicable buttons can be found. Some controllers/buttons do not have a held down state so it will only return true for the one frame in which it was pressed.
  • Triggers behave like buttons on some platforms even when they are analogs on other platforms. The fault lies either with the device itself, or with platform drivers.

AppleTV / tvOS

  • The B button (mapped as Action2) is interpreted as menu by default. You need to switch between this behavior and allowing it to function as Action2 with the UnityEngine.Apple.TV.Remote.allowExitToHome property (seeĀ https://docs.unity3d.com/Manual/tvOS.html for more information).

MFi controllers on Mac

  • MFi controllers are currently not supported on macOS by Unity. They only work in iOS builds.

Logitech F710 controller on Mac:

  • Must be in DirectInput mode (switch on front)
  • Triggers are digital (buttons)

Logitech F310 controller on Mac

  • Appears to have some kind of hardware linear dead zone on analogs making it snap to cardinal directions slightly.

PlayStation 3 controller on Windows

  • Requires third party drivers to work, and more specifically, Motioninjoy is supported. No other third party drivers are supported.

PlayStation 4 controller on Mac:

  • Prior to Unity 4.5.1, it only works wired, not with bluetooth (even though it connects and identifies).
  • Currently, even after Unity 4.5.1 added support for bluetooth mode, an app freeze of about 30 seconds occurs when connected or the app launches after which it will start running normally.
  • As of about Unity 4.6 release, it appears to work fine in both modes.
  • There is a newer version of the PlayStation 4 controller (CUH-ZCT2U/E) which currently does not support rumble and LED control with native input enabled.

PlayStation 4 controller on Windows:

  • USB and Bluetooth have different mappings but appear with the same name in Unity, thus both cannot be supported and, currently, only USB mode is supported.
  • When using the DualShock 4 USB Wireless Adaptor, the controller can be connected wirelessly and is more reliable than standard Bluetooth. However, only one controller can be connected to the adapter at a time.
  • With Native Input enabled, the PlayStation 4 controller can be used in both USB and Bluetooth mode.
  • Rumble and LED control is not currently supported on Windows.

OUYA controller on Windows

  • This device is a piece of junk. It has super noisy triggers which jitter when sticks are moved. Trigger sensitivity had to be effectively halved to get anything functional.

Xbox 360 controller on Mac

Xbox One controller on Mac

Xbox One controller on Windows

  • Requires this official driver to work.
  • Only works over USB cable unless you use the Xbox One Wireless Adapter for Windows. Note, this adapter is only compatible with Windows 10.
  • The Xbox One Elite controller is identical to the original Xbox One controller in this regard. It does not support Bluetooth and requires the wireless adapter.
  • The newer Xbox One S controller supports wireless over Bluetooth.

Nvidia Shield controller on Windows

  • Triggers don't work.
  • Only works over USB cable.
  • The newer angular shaped Shield controller (released 2016) does not work.

Nvidia Shield controller on Mac

  • Does not work.