A couple years back, Microsoft released a Bluetooth-compatible version of its Xbox One controller, further cementing the company's game controller dominance. But when it came to using one with an Android device, there was a big catch: button mapping was broken compared to other controllers. According to a recent change on Google's bug tracker, that problem has been resolved in Android P.
The issue was marked as fixed by a googler a couple days ago on August 22nd. In the same comment, they pointed to an entry on the Google Git for Android P which ostensibly delivers the fix. So far as we can tell based on the entry, it was a result of a mismatched vendor or product ID for the controller, resulting in Android loading an incorrect set of button maps for the device.
The same comment also warns that not all devices may be fixed, though. There are two other comments in the issue tracker which indicate there's another device ID for the controller floating around, so the change will likely have no effect on models using that ID.
In testing via USB if mapping was fixed for another controller with a similar problem, we weren't able to connect the device via OTG on Android P.
Although we tried to test this change for ourselves, my Xbox Elite controller is not Bluetooth compatible, and may not have been among those affected by the original issue. In testing it on older devices running Oreo via USB OTG, I did notice that button mapping seemed broken in some game titles. We aren't sure if that problem is connected to the bug fixed here, and I am unable to get the controller to work on any Android P devices via OTG (which could be a separate issue in itself).
There is third-party confirmation over on Reddit, so some controllers are definitely fixed by the change in Android P, but some gamepads using the unknown new ID may still be affected.
- XDA Developers