I have an Android device into which a gamepad can be connected (it's a totally standard XBox 360 controller, but I need to support other varieties as well). The gamepad is showing up as a InputDevice with some analogue axes and some buttons.
I need to be able to query Android to find out what buttons the gamepad supports. Does anyone know how to do this?
I know that the system has this information, because if I write a command-line app which opens /dev/input/event...
and queries the buttons using the EVIOCGBIT
ioctl, I get a nice list of supported buttons from the kernel. But I can't do this from an Android application because I don't have permission to access the input devices directly.
It looks like it should be possible to get the InputDevice's KeyCharacterMap object and query that; but it looks like Android has attached the default QWERTY keyboard keymap to the gamepad, rather than constructing one that actually matches what the gamepad supports. This will happily tell me that the gamepad has a Q key, which it doesn't, and that it doesn't have a BUTTON_X key, which it does, and for which I am receiving key events. So that's not helping.
Is there any way to do this?