Нативная поддержка геймпада андроид

Нативная поддержка геймпада андроид

Данная тема является продолжением статьи https://4pda.to/2014/12/12/190359/
Здесь обсуждаем способ создания нативной поддержки для устройств ввода и делимся готовыми решениями.

1. Создание файла с VID и PID
Подключаем наше устройство ввода и запускаем приложение USB Device Info. Нас интересует вкладка Linux, в которой выбираем своё устройство (у меня оно было последним в списке) и ищем значения строчек Vendor ID и Product ID. В моём случае это были 0c45 и 7700 соответственно.

Так же VID и PID можно посмотреть подключив устройство к ПК.

Для Bluetooth устройств:
Узнать эти значения для Bluetooth девайсов можно открыв файл /proc/bus/input/devices.

Копируем любой файл из /system/usr/keylayout на sdcard и переименовываем его в соответствии с полученными данными, для моего джойстика название получилось таким: Vendor_0c45_Product_7700.kl. (Обратите внимание, что регистр букв имеет значение)

2. Получение кодов кнопок
Запускаем приложение KeyTest и, вооружившись бумагой и карандашом, начинаем поочерёдно нажимать кнопки на устройстве, записывая цифры, высвечивающиеся после scanCode=. Я записывал коды, располагая их на бумаге, как кнопки на геймпаде.

Из программы можно выйти только по кнопке «Домой».

ВНИМАНИЕ!
Если Геймпад видно в первом шаге, но кейтест не реагирует на нажатия, возможно, у вас отсутствует нужный модуль в ядре — скажите «спасибо» автору прошивки.
Но не отчаивайтесь, есть возможное решение Нативная поддержка для устройств ввода (Пост wm-hater #52134473)

3. Маппинг кнопок
Теперь, когда стали известны коды всех клавиш, необходимо прописать их функции. Тут есть два пути:
а) найти среди имеющихся в Android конфигов устройство, максимально приближенное к вашему, и просто изменить в нём коды кнопок, скопировав содержимое в свой файл;
б) прописать все самому.
Я пошёл по второму пути, ибо мой джойстик имеет только крестовину управления и четыре кнопки. Для начала нужно понять синтаксис файла раскладки, он очень прост:

key код_кнопки действие_кнопки

Но тут возник вопрос: а какие действия кнопок писать в конфиге? За много лет использования различных геймпадов на Android я для себя определил, что самый универсальный конфиг — это раскладка от Sony Xperia Play, она одинаково хорошо ведёт себя как в играх, так и в интерфейсе системы.

Ok Google, key mapping for Xperia Play

Нас интересует третья колонка, но запись действий в ней немного отличается от тех, что были найдены в системе — это не помеха, просто убираем KEYCODE_.

Прописываю свои кнопки (помните листок с карандашными записями? Самое время найти его. ):
. ВНИМАНИЕ .
Нужен текстовый редактор с поддержкой unix кодировки!
Блокнот из состава Windows НЕ подойдет ,
Используйте, к примеру, Notepad++

4. Момент истины
Сохраняем наш файл и копируем его в папку /system/usr/keylayout. Выставляем права -rw -r -r (644). Перезагружаем устройство (сам я этого не делал, просто заблокировал и разблокировал, но для чистоты совести и эксперимента обязан был это написать).

Подключаем наше устройство, и если всё сделали правильно, тут же сможете «крестовиной» перемещаться по меню Android. Кнопка, на которую назначили DPAD_CENTER, будет кнопкой выбора, а BUTTON_B — кнопкой «назад».

Читайте также:  Что такое alcatel android adb interface

Q: Все прописываю верно, но конфиг не цепляется.
А: Если вы пропишете коды действий с ошибкой, например:
key 123 BUTTON_HOME вместо key 123 HOME
то система будет считать этот файл ошибочным.
Самый лучший способ проверить подхватывается ваш kl файл системой или нет — стереть все кейкоды или закомментировать их знаком #:
# key 123 BUTTON_HOME
Если файл подхватился — никакой реакции на кнопки не будет, но в KeyTest все будет отображаться.

Q: Все прописываю верно и без ошибок но все или часть кнопок не работают.
А: Попробуйте прописать scancode в hex формате: Нативная поддержка для устройств ввода (Пост romanctest #69194647)
Q: Дуалшок 4 постоянно отваливается или работает с задержкой.
А: Нативная поддержка для устройств ввода (Пост maxmergov #81264882)

Источник

Настройка геймпада на Android

Этап 1: Подключение

Начать настройку стоит, разумеется, с подключения гаджета к смартфону или планшету. Процедура в целом типовая, но отличается для устройств USB и Bluetooth.

Проводные и беспроводные USB

Для USB-вариантов понадобится использовать соответствующий переходник, который чаще всего выглядит так:

К этому адаптеру нужно подключать и радиомодуль беспроводных геймпадов, не использующих Bluetooth. После соединения с телефоном никаких дополнительных действий выполнять не нужно, переходите к следующему этапу.

Bluetooth-решения

Геймпады, работающие по протоколу Блютуз, требуется предварительно подключить. Делается это так:

    Сначала убедитесь, что на целевом устройстве включён Bluetooth. Для этого откройте «Настройки» и перейдите к соответствующим параметрам – они могут быть как доступны сразу, так и находится внутри пунктов «Соединения» или похожем по смыслу.

Далее активируйте переключатель.

Теперь переходим к геймпаду. Способ подключения зависит от конкретного типа – например, Xbox One Controller беспроводной ревизии и DualShock 4 достаточно просто включить и перевести в режим сопряжения. Аналогично соединяются и компьютерные игровые устройства вроде Logitech F710 или решений от других производителей.

С чисто мобильными геймпадами ситуация немного другая — они нередко имеют несколько режимов работы (например, отдельные для iOS и Android), и для соединения с «зелёным роботом» требуется выбирать соответствующий. Как правило, метод включения нужного режима описан либо в инструкции к гаджету, либо на стикере, наклеенном на задней части его корпуса.

Включите геймпад и переведите в совместимый с Андроидом режим. Подождите несколько секунд, пока в панели обнаруженных устройств Bluetooth вашего смартфона или планшета не появится запись с именем нужного, затем тапните по ней для сопряжения.

Если на этом этапе вы столкнулись с проблемами, обратитесь к соответствующему разделу настоящей статьи.

Этап 2: Настройка

Конфигурирование контроллера в Android зависит от того, поддерживает ли работу с ним то или иное приложение. Если эта возможность официально заявлена, настройка совершается напрямую через него. В противном случае придётся использовать специальную оболочку. Процедура что в одном, что в другом варианте имеет тот же принцип, поэтому для примера покажем её для мультисистемного эмулятора RetroArch.

  1. В данной программе присутствует возможность автоопределения – для её использования просто запустите РетроАрк с подключённым контроллером и нажмите на нём любую кнопку.
  2. Если же вы желаете самостоятельно назначить управление, откройте панель настроек и тапните «Ввод».

Далее коснитесь пункта «Раскладка порта 1», который отвечает за основной геймпад.

Читайте также:  Хороший автоответчик для андроид

Типов конфигурирования существует два – последовательно все разом, или каждый параметр по отдельности. Для первого воспользуйтесь опцией «Назначить все элементы управления» и следуйте инструкциям на экране.

Для установки отдельных пунктов прокрутите страницу чуть ниже, затем тапните по желаемому и выполните предложенное действие.

После назначения кнопок требуется дополнительно задать сочетание для вызова меню эмулятора – вернитесь на страницу «Ввод» и воспользуйтесь пунктом «Горячие клавиши», в котором выберите «Комбинация вызова меню» и установите желаемую.

Для отключения виртуального геймпада перейдите по пунктам «Настройки»«Экранное отображение»«Оверлей» и задействуйте переключатель «Показать оверлей».

Как видим, ничего сложного нет.

Решение возможных проблем

К сожалению, не всегда геймпад получается настроить и использовать – порой можно столкнуться с одной или несколькими проблемами. Рассмотрим самые распространённые и методы их устранения.

Андроид не распознаёт геймпад

Данный сбой является одним из самых частых, с множеством причин происхождения. Выполните шаги далее для диагностики и решения проблемы:

  1. Первым делом проверьте работоспособность геймпада: подключите его к заведомо рабочему устройству (подойдёт и компьютер) и убедитесь, что игровой девайс распознаётся и функционирует. Если наблюдаются сбои, причиной всему именно манипулятор.
  2. Для контроллеров с проводным подключением стоит проверить адаптер – увы, но некоторые дешёвые экземпляры могут работать с перебоями либо вовсе выйти из строя в процессе эксплуатации.
  3. Также убедитесь, что телефон или планшет поддерживают OTG – в некоторых ультрабюджетных решениях эта технология отсутствует, поэтому USB-устройства не будут с ними работать.
  4. С устройствами Bluetooth отсутствие реакции на подключение означает неполадки либо с самим геймпадом, либо с модулем смартфона (планшета). Кроме того, версии ОС от Google старше 4.1 не поддерживают работу с беспроводными средствами ввода.

Часть кнопок геймпада не работают или нажимаются вместе с другими

С этой проблемой сталкиваются владельцы мобильных геймпадов с несколькими режимами работы, и она означает неправильно выбранный. Следовательно, для устранения надо отключить девайс и переподключить его с подходящим для Андроида вариантом. В случае же компьютерных контроллеров такое поведение свидетельствует об аппаратной неисправности.

Игра реагирует на нажатия с задержкой

Проблема присутствует исключительно у беспроводных вариантов геймпадов, и в большинстве случаев не исправима собственными силами – лучшим решением в такой ситуации будет уведомить разработчиков игры о проблеме и подождать выпуска обновления.

Помимо этой статьи, на сайте еще 12471 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Источник

Нативная поддержка геймпада андроид

Данная тема является продолжением статьи https://4pda.to/2014/12/12/190359/
Здесь обсуждаем способ создания нативной поддержки для устройств ввода и делимся готовыми решениями.

1. Создание файла с VID и PID
Подключаем наше устройство ввода и запускаем приложение USB Device Info. Нас интересует вкладка Linux, в которой выбираем своё устройство (у меня оно было последним в списке) и ищем значения строчек Vendor ID и Product ID. В моём случае это были 0c45 и 7700 соответственно.

Так же VID и PID можно посмотреть подключив устройство к ПК.

Для Bluetooth устройств:
Узнать эти значения для Bluetooth девайсов можно открыв файл /proc/bus/input/devices.

Читайте также:  Фильтр звонков для андроид 4pda

Копируем любой файл из /system/usr/keylayout на sdcard и переименовываем его в соответствии с полученными данными, для моего джойстика название получилось таким: Vendor_0c45_Product_7700.kl. (Обратите внимание, что регистр букв имеет значение)

2. Получение кодов кнопок
Запускаем приложение KeyTest и, вооружившись бумагой и карандашом, начинаем поочерёдно нажимать кнопки на устройстве, записывая цифры, высвечивающиеся после scanCode=. Я записывал коды, располагая их на бумаге, как кнопки на геймпаде.

Из программы можно выйти только по кнопке «Домой».

ВНИМАНИЕ!
Если Геймпад видно в первом шаге, но кейтест не реагирует на нажатия, возможно, у вас отсутствует нужный модуль в ядре — скажите «спасибо» автору прошивки.
Но не отчаивайтесь, есть возможное решение Нативная поддержка для устройств ввода (Пост wm-hater #52134473)

3. Маппинг кнопок
Теперь, когда стали известны коды всех клавиш, необходимо прописать их функции. Тут есть два пути:
а) найти среди имеющихся в Android конфигов устройство, максимально приближенное к вашему, и просто изменить в нём коды кнопок, скопировав содержимое в свой файл;
б) прописать все самому.
Я пошёл по второму пути, ибо мой джойстик имеет только крестовину управления и четыре кнопки. Для начала нужно понять синтаксис файла раскладки, он очень прост:

key код_кнопки действие_кнопки

Но тут возник вопрос: а какие действия кнопок писать в конфиге? За много лет использования различных геймпадов на Android я для себя определил, что самый универсальный конфиг — это раскладка от Sony Xperia Play, она одинаково хорошо ведёт себя как в играх, так и в интерфейсе системы.

Ok Google, key mapping for Xperia Play

Нас интересует третья колонка, но запись действий в ней немного отличается от тех, что были найдены в системе — это не помеха, просто убираем KEYCODE_.

Прописываю свои кнопки (помните листок с карандашными записями? Самое время найти его. ):
. ВНИМАНИЕ .
Нужен текстовый редактор с поддержкой unix кодировки!
Блокнот из состава Windows НЕ подойдет ,
Используйте, к примеру, Notepad++

4. Момент истины
Сохраняем наш файл и копируем его в папку /system/usr/keylayout. Выставляем права -rw -r -r (644). Перезагружаем устройство (сам я этого не делал, просто заблокировал и разблокировал, но для чистоты совести и эксперимента обязан был это написать).

Подключаем наше устройство, и если всё сделали правильно, тут же сможете «крестовиной» перемещаться по меню Android. Кнопка, на которую назначили DPAD_CENTER, будет кнопкой выбора, а BUTTON_B — кнопкой «назад».

Q: Все прописываю верно, но конфиг не цепляется.
А: Если вы пропишете коды действий с ошибкой, например:
key 123 BUTTON_HOME вместо key 123 HOME
то система будет считать этот файл ошибочным.
Самый лучший способ проверить подхватывается ваш kl файл системой или нет — стереть все кейкоды или закомментировать их знаком #:
# key 123 BUTTON_HOME
Если файл подхватился — никакой реакции на кнопки не будет, но в KeyTest все будет отображаться.

Q: Все прописываю верно и без ошибок но все или часть кнопок не работают.
А: Попробуйте прописать scancode в hex формате: Нативная поддержка для устройств ввода (Пост romanctest #69194647)
Q: Дуалшок 4 постоянно отваливается или работает с задержкой.
А: Нативная поддержка для устройств ввода (Пост maxmergov #81264882)

Источник

Оцените статью