- Нативная поддержка геймпада андроид
- Настройка геймпада на Android
- Этап 1: Подключение
- Проводные и беспроводные USB
- Bluetooth-решения
- Этап 2: Настройка
- Решение возможных проблем
- Андроид не распознаёт геймпад
- Часть кнопок геймпада не работают или нажимаются вместе с другими
- Игра реагирует на нажатия с задержкой
- Нативная поддержка геймпада андроид
Нативная поддержка геймпада андроид
Данная тема является продолжением статьи 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 — кнопкой «назад».
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», который отвечает за основной геймпад.
Типов конфигурирования существует два – последовательно все разом, или каждый параметр по отдельности. Для первого воспользуйтесь опцией «Назначить все элементы управления» и следуйте инструкциям на экране.
Для установки отдельных пунктов прокрутите страницу чуть ниже, затем тапните по желаемому и выполните предложенное действие.
После назначения кнопок требуется дополнительно задать сочетание для вызова меню эмулятора – вернитесь на страницу «Ввод» и воспользуйтесь пунктом «Горячие клавиши», в котором выберите «Комбинация вызова меню» и установите желаемую.
Для отключения виртуального геймпада перейдите по пунктам «Настройки» – «Экранное отображение» – «Оверлей» и задействуйте переключатель «Показать оверлей».
Как видим, ничего сложного нет.
Решение возможных проблем
К сожалению, не всегда геймпад получается настроить и использовать – порой можно столкнуться с одной или несколькими проблемами. Рассмотрим самые распространённые и методы их устранения.
Андроид не распознаёт геймпад
Данный сбой является одним из самых частых, с множеством причин происхождения. Выполните шаги далее для диагностики и решения проблемы:
- Первым делом проверьте работоспособность геймпада: подключите его к заведомо рабочему устройству (подойдёт и компьютер) и убедитесь, что игровой девайс распознаётся и функционирует. Если наблюдаются сбои, причиной всему именно манипулятор.
- Для контроллеров с проводным подключением стоит проверить адаптер – увы, но некоторые дешёвые экземпляры могут работать с перебоями либо вовсе выйти из строя в процессе эксплуатации.
- Также убедитесь, что телефон или планшет поддерживают OTG – в некоторых ультрабюджетных решениях эта технология отсутствует, поэтому USB-устройства не будут с ними работать.
- С устройствами 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.
Копируем любой файл из /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)
Источник