- Почему геймпад определяется как клавиатура андроид
- Настройка геймпада на Android
- Этап 1: Подключение
- Проводные и беспроводные USB
- Bluetooth-решения
- Этап 2: Настройка
- Решение возможных проблем
- Андроид не распознаёт геймпад
- Часть кнопок геймпада не работают или нажимаются вместе с другими
- Игра реагирует на нажатия с задержкой
- Нативная поддержка для устройств ввода в Android своими руками
- От теории к практике
- 1. Создание файла с VID и PID
- 2. Получение кодов кнопок
- 3. Маппинг кнопок
- 4. Момент истины
- Итоги
- Полезная информация
Почему геймпад определяется как клавиатура андроид
Краткое описание:
Подключение контроллеров (геймпадов, клавиатур, мышек и прочего).
Описание:
USB/BT Joystick Center — Программа предназначена в первую очередь для любителей поиграть в игры на своём смартфоне или планшете, используя свой любимый манипулятор (будь то геймпад, мышь или клавиатура). С помощью этой программы можно подключить джойстик к устройству и играть с контроллером даже в те игры, которые по-умолчанию не поддерживают его. У программы есть два режима работы: 1. переназначение кнопок на манипуляторе; 2. транслирование действий (нажатия, свайпы, круговые и бесконечные и т.п.) с манипулятора на дисплей устройства (для этого потребуются рут права).
Требования: Android 3.2 и выше, наличие USB хоста (Android 4.2.0 системно не имеет поддержки USB хоста).
For the main features you do not need root (Joysticks + Keymappings). Also for the Wireless PS4/PS3 Dualshock Sixaxis Controller you don’t need a rooted device. For all Touch features you need a rooted device.
— Acer A500 (ICS 4.0.3 Stock)
— Archos 101 G9 (ICS 4.0.3 Stock)
— Asus Nexus 7 (JB 4.1.1 Stock)
— Asus TF101 (HC 3.2 Stock)
— Asus Prime TF201 (ICS 4.0.3 Stock)
— Asus TF300 (ICS 4.03 Stock)
— Asus TF700 (JB 4.1.1 Stock)
— RikoMagic MK808 (Finless Rom)
— RikoMagic MK802 II (4.0.4 with USBHostAPI-Patch.zip)
— Samsung Nexus (ICS 4.0.2 Stock)
— Samsung S2 (ICS 4.0.3 Stock, GT-I9100-IML74K.XWLP7, Kernel: 3.0.31-Dorimanx-V2.1-SGII-ICS)
— Samsung S3 (ICS 4.0.4 Stock)
— Samsung Galaxy Tab 7.7 Plus
— Sony Xperia Play (ICS 4.0.3, Stock Beta)
— Toshiba Thrive A100 (HC 3.2 Stock)
— Transformer Prime TF201 (ICS 4.0.3 Stock)
— Xoom (4.03 Stock, with OTG USB Cable)
На остальных планшетах программа так же должна работать, но они пока не протестированы на данный момент.
Bluetooth:
— Wii Remotes 1-4 + Nunchuck + Classic Controller
— Zeemote
Wireless:
— PS3 Sixaxis without root (* CSR Bluetooth 2.x/EDR+ USB Stick is needed)
— X360 Controller («Microsoft Wireless Gaming Receiver for PC» USB is needed)
— Bluetooth Keyboards
— iCade
— iControlPad (SPP Mode)
— PhoneJoy
— Wii Remotes 1-4 + Nunchuck + Classic
— Zeemote
* Please read the PS3 pairing help inside the app
Wired — USB:
— PS3 Sixaxis — With Cable Adapter
— X360 Controller — Wired
— Hyperkin N64 Moonlight Controller
— Logitech (Rumble, F310, F710)
— Microsoft Sidewinder 2 Precision
— Trust GXT 24
— X360 Rockband: USB Guitars/Drums
— N64 «Controller Adapter for PC USB» (for 2 Controllers)
— PSX 1/2 «USB Gamepad Converter Dualschock»
— PSX + N64 USB Dual Converter
— SNES «Controller Adapter for PC USB»
— C64/Atari/Amiga «Donalds USB-Joystickadapter»
— C64/128/A600 «Keyrah» USB Keyboard Adapter
— «PC/Gamepad/Joystick Adapter» (15 Pin D-Sub)
— PSX — USB 4 «Buzz Junior»
— PSX 1|2 «Super Dual Box Advanced» Adapter for PC
For all «SHADOWGUN» Players for the USB/BT Joystick Center:
Left Stick: DPAD-Left | DPAD-Right | DPAD-Up | DPAD-Down
Right Stick: J|L|I|K
Fire: DPAD-Center
Reload: 7
Weapon Slots: A|D|W|S
Источник
Настройка геймпада на 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 не поддерживают работу с беспроводными средствами ввода.
Часть кнопок геймпада не работают или нажимаются вместе с другими
С этой проблемой сталкиваются владельцы мобильных геймпадов с несколькими режимами работы, и она означает неправильно выбранный. Следовательно, для устранения надо отключить девайс и переподключить его с подходящим для Андроида вариантом. В случае же компьютерных контроллеров такое поведение свидетельствует об аппаратной неисправности.
Игра реагирует на нажатия с задержкой
Проблема присутствует исключительно у беспроводных вариантов геймпадов, и в большинстве случаев не исправима собственными силами – лучшим решением в такой ситуации будет уведомить разработчиков игры о проблеме и подождать выпуска обновления.
Помимо этой статьи, на сайте еще 12470 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник
Нативная поддержка для устройств ввода в Android своими руками
Многие владельцы Android-устройств сталкивались с тем, что подключаемые по USB устройства ввода, такие как джойстики, клавиатуры, мышки и т.д., не всегда работают, как положено. То кнопки джойстика перепутаны, то медиаклавиши на клавиатуре или мышке не работают и т.п. В моём случае геймпад определялся, как клавиатура, и приходилось использовать программный «костыль», типа USB BT Joystick center или Tincore keymapper. Которые, используя свой IME (метод ввода в Android), позволяют переназначить кнопки. Также использовалась программа PerApp, которая может автоматически переключать IME в зависимости от активного приложения. Данный способ меня раздражал тем, что при включении всего этого хозяйства я не мог пользоваться любимой клавиатурой, а при выключении нельзя было перемещаться джойстиком по интерфейсу системы. Выход я видел только один: сделать нативную поддержку своего геймпада в системе или, грубо говоря, «драйвер».
Первым делом я заглянул в папку /system/usr/keylayout, где обнаружил файлы с очень красноречивыми названиями: Vendor_xxxx_Product_xxxx.kl, где xxxx — это набор цифр и букв. Как уже многие догадались, это не что иное, как идентификаторы устройства (VID и PID). Открыв первый по списку файл в текстовом редакторе, я почти закричал «БИНГО!». Но не закричал, потому что на работе нужно работать, а не джойстики к планшету прикручивать. А увидел я вот что:
key 289 BUTTON_A
key 290 BUTTON_B
key 297 BUTTON_START
key 296 BUTTON_SELECT
axis 0x00 HAT_X
Да-да, это настройки кнопок для джойстика от Nintendo (Денди). Просмотрев соседние файлы, я обнаружил конфиги для различных устройств. В основном игровые контроллеры (Play Station 3, X-box, ASUS gamepad и другие), но есть и клавиатуры.
Исходя из вышесказанного, уже можно понять, что для добавления поддержки устройства на уровне системы нужно создать файл с VID и PID устройства в названии и прописать в нем значения кнопок.
От теории к практике
- устройство на Android 4+ (проверял только на 5.0 и 4.4);
- поддержка устройством USB OTG;
- наличие root-доступа;
- файловый менеджер с поддержкой root (в моём случае это Total Commander);
- текстовый редактор (в моём случае это опять Total Сommander);
- лист бумаги и карандаш;
- USB Device Info (для определения свойств устройства);
- KeyTest (для отображения кодов кнопок устройства).
1. Создание файла с VID и PID
Подключаем наше устройство ввода и запускаем приложение USB Device Info. Нас интересует вкладка Linux, в которой выбираем своё устройство (у меня оно было последним в списке) и ищем значения строчек Vendor ID и Product ID. В моём случае это были 0c45 и 7700 соответственно.
Копируем любой файл из /system/usr/keylayout на sdcard и переименовываем его в соответствии с полученными данными, для моего джойстика название получилось таким: Vendor_0c45_Product_7700.kl. (Обратите внимание, что регистр букв имеет значение)
2. Получение кодов кнопок
Запускаем приложение KeyTest и, вооружившись бумагой и карандашом, начинаем поочерёдно нажимать кнопки на устройстве, записывая цифры, высвечивающиеся после scanCode=. Я записывал коды, располагая их на бумаге, как кнопки на геймпаде. Из программы можно выйти только по кнопке «Домой».
3. Маппинг кнопок
Теперь, когда стали известны коды всех клавиш, необходимо прописать их функции. Тут есть два пути:
а) найти среди имеющихся в Android конфигов устройство, максимально приближенное к вашему, и просто изменить в нём коды кнопок, скопировав содержимое в свой файл;
б) прописать все самому.
Я пошёл по второму пути, ибо мой джойстик имеет только крестовину управления и четыре кнопки. Для начала нужно понять синтаксис файла раскладки, он очень прост:
key код_кнопки действие_кнопки
Но тут возник вопрос: а какие действия кнопок писать в конфиге? За много лет использования различных геймпадов на Android я для себя определил, что самый универсальный конфиг — это раскладка от Sony Xperia Play, она одинаково хорошо ведёт себя как в играх, так и в интерфейсе системы.
Ok Google, key mapping for Xperia Play
X 23 KEYCODE_DPAD_CENTER 304
circle 4 KEYCODE_BACK 305
square 99 KEYCODE_BUTTON_X 307
triangle 100 KEYCODE_BUTTON_Y 308
up 19 KEYCODE_DPAD_UP 106
down 20 KEYCODE_DPAD_DOWN 105
left 21 KEYCODE_DPAD_LEFT 103
right 22 KEYCODE_DPAD_RIGHT 108
select 109 KEYCODE_BUTTON_SELECT 314
start 108 KEYCODE_BUTTON_START 28
L trigger 102 KEYCODE_BUTTON_L1 310
R trigger 103 KEYCODE_BUTTON_R1 311
Нас интересует третья колонка, но запись действий в ней немного отличается от тех, что были найдены в системе — это не помеха, просто убираем KEYCODE_.
Прописываю свои кнопки (помните листок с карандашными записями? Самое время найти его. ):
key 149 BUTTON_B
key 148 BUTTON_Y
key 146 BUTTON_X
key 157 DPAD_DOWN
key 145 DPAD_LEFT
key 155 DPAD_UP
key 156 DPAD_RIGHT
Но и тут не обошлось без нюансов. У Sony на кнопку «круг» (circle) назначено действие KEYCODE_BACK (привычная нам кнопка «назад»). Несложно догадаться, что нажатие такой кнопки в игре может вызвать нервный срыв. А всё дело в том, что во время игры на Xplay эта кнопка принимает альтернативное значение — KEYCODE_BUTTON_B. Вот её мы и пропишем.
4. Момент истины
Сохраняем наш файл и копируем его в папку /system/usr/keylayout. Выставляем права -rw -r -r (644). Перезагружаем устройство (сам я этого не делал, просто заблокировал и разблокировал, но для чистоты совести и эксперимента обязан был это написать).
Подключаем наше устройство, и если всё сделали правильно, тут же сможете «крестовиной» перемещаться по меню Android. Кнопка, на которую назначили DPAD_CENTER, будет кнопкой выбора, а BUTTON_B — кнопкой «назад».
Итоги
- на планшете стало на две программы меньше;
- джойстик теперь реальный Plug and Play;
- можно играть в игры с маркета без танцев с бубном (если игра поддерживает геймпады);
- можно перемещаться по интерфейсу Android;
- свои настройки для каждого устройства;
- скорость отклика кнопок повысилась (плацебо?).
Полезная информация
Настроить можно не только нажатие, но и смещение по осям (аналоговые контроллеры, мышки).
Источник