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

Xbox One S 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

# 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 

# 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.



Leave a comment