Меню

Как подключить геймпад 4pda

Как подключить геймпад 4pda

Данная тема является продолжением статьи //4pda.ru/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=. Я записывал коды, располагая их на бумаге, как кнопки на геймпаде.

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

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

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

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

Ok Google, key mapping for Xperia Play

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

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

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

Источник

Нативная поддержка для устройств ввода в Android своими руками

Многие владельцы Android-устройств сталкивались с тем, что подключаемые по USB устройства ввода, такие как джойстики, клавиатуры, мышки и т.д., не всегда работают, как положено. То кнопки джойстика перепутаны, то медиаклавиши на клавиатуре или мышке не работают и т.п. В моём случае геймпад определялся, как клавиатура, и приходилось использовать программный «костыль», типа USB BT Joystick center или Tincore keymapper. Которые, используя свой IME (метод ввода в Android), позволяют переназначить кнопки. Также использовалась программа PerApp, которая может автоматически переключать IME в зависимости от активного приложения. Данный способ меня раздражал тем, что при включении всего этого хозяйства я не мог пользоваться любимой клавиатурой, а при выключении нельзя было перемещаться джойстиком по интерфейсу системы. Выход я видел только один: сделать нативную поддержку своего геймпада в системе или, грубо говоря, «драйвер».

Читайте также:  Светодиодная лампа как подключить в квартире

key 297 BUTTON_START

key 296 BUTTON_SELECT

Да-да, это настройки кнопок для джойстика от Nintendo (Денди). Просмотрев соседние файлы, я обнаружил конфиги для различных устройств. В основном игровые контроллеры (Play Station 3, X-box, ASUS gamepad и другие), но есть и клавиатуры.

Исходя из вышесказанного, уже можно понять, что для добавления поддержки устройства на уровне системы нужно создать файл с VID и PID устройства в названии и прописать в нем значения кнопок.

От теории к практике

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 156 DPAD_RIGHT

Но и тут не обошлось без нюансов. У Sony на кнопку «круг» (circle) назначено действие KEYCODE_BACK (привычная нам кнопка «назад»). Несложно догадаться, что нажатие такой кнопки в игре может вызвать нервный срыв. А всё дело в том, что во время игры на Xplay эта кнопка принимает альтернативное значение — KEYCODE_BUTTON_B. Вот её мы и пропишем.

4. Момент истины

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

Итоги

Полезная информация

Настроить можно не только нажатие, но и смещение по осям (аналоговые контроллеры, мышки).

Источник

Как подключить геймпад 4pda

(в этой статье Вы можете встретить ту или иную знакомую Вам информацию, но я надеюсь, что для кого-нибудь она будет полезной).

Все мы с вами являемся свидетелями молниеносного роста производительности мобильных устройств, а как следствие этого, появления всё новых крутых мобильных игр, графика которых вплотную приближается к графике игр для ПК. Сфера мобильных игр постепенно отвоёвывает свою аудиторию пользователей. Но есть у мобильных устройств одна неприятная особенность – на сенсорном экране не всегда удобно играть в серьезные игры. Часть людей это отпугивает. Любители ПК игр просто не представляют игровой процесс без их любимой клавиатуры и мышки, а любители консолей – без геймпада.

Индустрия мобильных игр не стоит на месте. Вместе с ней развиваются проекты, которые делают игру максимально удобной. Одно только появление Nvidia Shield и множества других (особенно китайских) портативных игровых консолей на Android говорит о многом: играть на физическом геймпаде удобнее, чем на сенсорном экране – факт!

Но, одним из удобнейших геймпадов по праву можно считать геймпад от Sony Playstation – Sixaxis.

Читайте также:  Розетки glossa как подключить интернет четырехжильный

Начиная с самой первой Sony PS1, геймпад не сильно изменился во внешнем виде. Действительно, он удобен. И на нашу радость он отлично подключается к большинству современных Android-девайсов и позволяет играть с удобством консоли! Но мы с вами большие любители портативности. Согласитесь, неудобно ставить телефон или планшет на стол на подставку и играть на нем с геймпадом – в концепцию мобильности и портативности такое сочетание никак не вписывается. Для этого существует консоль и телевизор. Но, спасибо людям, которые воплощают в реальность, казалось бы, простые, но очень удобные вещи. Человек по имени Ryan French придумал именно такую штуковину. Имя ей Gameklip.

Вы могли слышать о ней и раньше. Цель у Gameklip’а одна – воссоединить ваш смартфон или даже 7” планшет с геймпадом от Sony. Получается, грубо говоря, своеобразная портативная игровая консоль, которую можно взять с собой куда угодно – в поездку, в университет, на работу и т.д.

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

С Gameklip’ом для Samsung Galaxy SIII всё предельно ясно – конструкция изготовлена для удобного помещения в нее соответствующего устройства от Samsung. Немного интереснее дела обстоят с универсальным Gameklip’ом. Данный Gameklip удерживает устройство посредством мягкого резинового чехла, к которому он прикрепляется обыкновенным двухсторонним скотчем (в комплект с универсальным Gameklip’ом заботливо кладут спиртовую салфетку для обезжиривания поверхности чехла перед приклейкой). Таким образом, вам обязательно нужно докупать к универсальному Gameklip’у чехол для телефона. Желательно, чтобы он был резиновый – для удобной установки и извлечения вашего устройства. Чехлы для некоторых устройств (Nexus 7, Nexus 4, Galaxy Nexus, S3 Mini, Note, Note2, Galaxy S2, Xperia S, Xperia Arc HD, Xperia Nozomi) продаются на сайте. Чехлы для других устройств можно попытаться поискать на сайтах интернет-магазинов, например Aliexpress или попытаться найти в магазинах вашего города.

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

В качестве геймпада подойдет как простой Sixaxis, так и Sixaxis Dualshock 3, но функция вибрации пока не реализована (и неизвестно, будет ли вообще). Для подключения геймпада посредством кабеля, Ваш девайс обязательно должен иметь функцию OTG. Прекрасно подключается Nexus 7 или, например, Galaxy SIII. А вот Nexus 4 таким способом подключить не удастся. Но не стоит переживать – эта проблема решается подключением геймпада через Bluetooth.

Источник