I just bought an Xbox One S controller yesterday, expecting it would pair with my Android phone via Bluetooth. I have learned that the key mapping would be a bit messed up because it’s a Microsoft product, and have already prepared for it by downloading a key layout file and placing it in my phone. However, it seems more stuff has changed since the tutorials found online were published.
Meeting the new controller
Configuring the new controller to play with Android
It is unarguably delighting that the new Xbox One S controller pairs with Android devices, but again, unfortunately, as reviews have shown, it doesn’t play well. While workarounds are easily available, those don’t work for me, probably because my controller is too new (manufactured in April 2018).
The supplied keylayout file looks like below:
key 304 BUTTON_A key 305 BUTTON_B key 306 BUTTON_X key 307 BUTTON_Y key 308 BUTTON_L1 key 309 BUTTON_R1 key 310 BACK key 311 BUTTON_START key 139 HOME key 312 BUTTON_THUMBL key 313 BUTTON_THUMBR # Left and right stick. axis 0x00 X flat 4096 axis 0x01 Y flat 4096 axis 0x03 Z flat 4096 axis 0x04 RZ flat 4096 # Triggers. axis 0x02 LTRIGGER axis 0x05 RTRIGGER # Hat. axis 0x10 HAT_X axis 0x11 HAT_Y
Sadly, it has messed up on my phone. Button Y acts like button X, while button X doesn’t function at all.
This small issue shouldn’t be a problem for me, as has never been. With the help of Gamepad Tester applications, I worked out another keylayout file as following:
# XBox One S Controller (2018) key 304 BUTTON_A key 305 BUTTON_B key 307 BUTTON_X key 308 BUTTON_Y key 310 BUTTON_L1 key 311 BUTTON_R1 key 315 BUTTON_START key 158 BUTTON_SELECT key 317 BUTTON_THUMBL key 318 BUTTON_THUMBR # Left and right stick. axis 0x00 X axis 0x01 Y axis 0x0b Z axis 0x0e RZ # Triggers. axis 0x17 LTRIGGER axis 0x17 BRAKE axis 0x16 RTRIGGER axis 0x16 THROTTLE # Hat. axis 0x0f HAT_X axis 0x10 HAT_Y
If you’re encountering the same problem even after trying solutions found online, try mine. Replace the file content with my one, restart your device and connect the controller again. It should work then.