Пользовательский интерфейс управления с помощью USB-геймпада

Как я могу управлять пользовательским интерфейсом Android (особенно кнопкой «Назад» и «Домой») на Android 6 с помощью USB-геймпада?

У меня есть Docooler R39 Android TV Box (под управлением 6.0) и дешевый универсальный USB-геймпад с USB ID 0079:0006 ("Dragonrise Controller"). К сожалению, любая кнопка (кроме dpad и левого джойстика, которые я могу использовать для перемещения фокуса выбора в большинстве приложений и системного пользовательского интерфейса) запускает действие «выбрать», поэтому мне все еще нужна USB-клавиатура, чтобы иметь полный контроль, чтобы получить «назад» , "дом" и "последние приложения" работают.

На других платформах, например, Kodi на Linux или LibreELEC на Raspberry Pi, я могу сопоставить все кнопки одного и того же контроллера. Однако в Kodi для Android приложение распознает только dpad. Та же проблема в приложениях-эмуляторах, таких как Mupen64plus для Android. На моем Galaxy S5 под управлением Android 7.1 у меня такая же проблема с этим контроллером.

Я знаю, что Android представил официальную поддержку геймпада, например, в 5.0, но, похоже, он не поддерживает полную навигацию по пользовательскому интерфейсу с помощью моего контроллера и вместо этого перехватывает все действия геймпада.

И мой телефон, и телевизионная приставка рутированы, если это поможет изменить сопоставление.

Ответы (1)

Я использую USB-геймпад Xbox 360, и он сопоставляет кнопки Xbox и «Назад» с Android «Домой» и «Назад». Я бы хотел, чтобы этого не было, очень раздражает, когда Chrome выполняет обратную навигацию, когда вы пытаетесь играть в игру! Тем не менее, похоже, что это идеально подойдет для вашего случая.

Сопоставление геймпада-> кода клавиши на Android настраивается в файлах .kl. Похоже, в Android нет сопоставления для DragonRise 0079:0006, поэтому, возможно, вам просто нужно его создать. Вот файл для Xbox 360 USB:

https://android.googlesource.com/platform/frameworks/base/+/master/data/keyboards/Vendor_045e_Product_028e.kl

Так что я могу просто поместить свой пользовательский .kl в /system/usr/keylayouts и перезагрузиться, или мне нужно пересобрать Android?
Только что попробовал, и это работает!