У меня есть Android-устройство, к которому можно подключить геймпад (это совершенно стандартный контроллер XBox 360, но мне нужно поддерживать и другие разновидности). Геймпад отображается как InputDevice с некоторыми аналоговыми осями и некоторыми кнопками.
Мне нужно иметь возможность запросить Android, чтобы узнать, какие кнопки поддерживает геймпад. Кто-нибудь знает как это сделать?
Я знаю, что у системы есть эта информация, потому что если я напишу приложение командной строки, которое открывает /dev/input/event...
и запрашивает кнопки с помощью EVIOCGBIT
ioctl, я получаю хороший список поддерживаемых кнопок от ядра. Но я не могу сделать это из приложения Android, потому что у меня нет разрешения на прямой доступ к устройствам ввода.
Похоже, должно быть возможно получить объект KeyCharacterMap InputDevice и запросить его; но похоже, что Android прикрепил раскладку клавиатуры QWERTY по умолчанию к геймпаду, вместо того, чтобы создать раскладку, которая действительно соответствует тому, что поддерживает геймпад. Это с радостью скажет мне, что на геймпаде есть клавиша Q, которой нет, и что у него нет клавиши BUTTON_X, которая есть, и для которой я получаю ключевые события. Так что это не помогает.
Есть какой-либо способ сделать это?