PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Дополнительные устройства (http://pccar.ru/forumdisplay.php?f=177)
-   -   Клавиатура как дополнительные кнопки (http://pccar.ru/showthread.php?t=19028)

wave_is 20.04.2013 13:53

Клавиатура как дополнительные кнопки
 
Итак, один из самых простых способов добавить дополнительные кнопки в ваш карпк - это подключить к нему клавиатуру.
Способ очень простой и удобный.
Его плюсы:
1) клавы стоят не дорого, их несложно найти.
2) клавы имеют разный функционал, бывают с трекболами, тачпадами, мультимедийными кнопками, скриптами и т.д.
3) клавы бывают беспроводными. Очень хороший вариант чтобы спрятать кнопки в руле. И в отличии от ик передатчиков нет нужды организовывать прямую видимость.
да и просто меньше проводов - это удобно
4) клавы бывают блютус, а это значит что в вашем планшете даже нет нужды активировать юсб хост. Просто покупайте планшет с блютусом.
5) поддержка клав изначально встроена в андроид и Вам нет нужды че-то ковырять внутри.

Правда, у внешних клавиатур был один недостаток. При подключении внешней клавиатуры в андроиде сворачивается экранная. А это не удобно.
Благодаря нашим однофорумчанам эту проблему удалось решить.
На данный момент решения два:
1) изменение файлов андроида. Большое спасибо Касар.
2) установка альтернативной клавы Smart keyboard Pro. (в ее настройках есть галка "не прятать экранную")

Итак, Вы купили/нашли клаву, которая подходит Вашим морально-этническим соображениям. С чего начать?
- разберите клавиатуру
как правило клавиатура состоит из платы с кучей (порядка 20) контактов и самого блока кнопок
- выкидываем или морально прощаемся с блоком кнопок. Он нам не понадобится
- подключаем клаву к ПК
- вооружаемся проводочком и начинаем прозванивать матрицу клавиатуры
для простоты прозвона можно установить программу keyboard tester
в моем случае я искал кнопки перемотки треков, поэтому для поиска я использовал запущенный аудио плеер
- прозвон проводим методом поочередного замыкания двух контактов матрицы. Причем Вы можете найти на матрице такие кнопки, которые даже не были выведены на Вашей клавиатуре.
- припаиваем проводочки к нужным контактам

Добавлю пару фоток и распиновку моей клавиатуры. Я использовал какую-то старую блютусную KB-6113, которая валялась на балконе.

а вот лекарство, при помощи которого можно запускать приложения сочетанием двух кнопок

Kamik 20.04.2013 14:59

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

wave_is 20.04.2013 15:09

Цитата:

Сообщение от Kamik (Сообщение 256137)
есть только одна проблема. все контроллеры встроенные в клавы беспроводные, достаточно большие (физические размеры плат). реально тяжело воткнуть в пульт на руль. особенно в такой. Уже разобрал синезубую китайскую миниклаву и беспроводную нормального размера. Размеры несоизмеримы с блаупунктом.

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

Тут каждый руль другому рулю рознь.

Kamik 20.04.2013 15:25

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

wave_is 20.04.2013 19:15

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

timtman 22.05.2013 09:08

запилил маленький клавиатурный модуль от клавиатуры A4tech GK770D. 5 медиа кнопок (play/pause, next, previous, mute, stop) на картинке он посередине верхнего ряда http://www.nix.ru/autocatalog/keyboa...5_-2_draft.jpg поставил его на подлокотник левой двери. долго боролся с keylayout файлами. хотел добиться переключения окон. Итог:
1. APP_SWITCH, RECENT_APP, KEY_CYCLEWINDOWS такие коды не работают!!!
2. эта инструкция реально рабочая.
3. если прописать в файле .kl такую строку, то это будет переключать окна, ну почти :
key <код клавиши> TAB ALT

segamitich 23.05.2013 09:24

Как же все таки настроить запуск приложения по нажатию клавиши на клавиатуре?

AngelOfGrief 23.05.2013 12:03

Цитата:

Сообщение от segamitich (Сообщение 259278)
Как же все таки настроить запуск приложения по нажатию клавиши на клавиатуре?

Насколько показывают мои копания, нельзя. Я даже пробовал переименовывать предустановленные приложения (например, вместо APK
камеры подсовывать APK Яндекс.Карты -- не работает!). Но я уже эту тему прорабатывал неоднократно.

1. Для запуска плеера можно назначить нужную вам клавишу вот так (в файле *.kl):

key 200 HEADSETHOOK

Это на самом деле СТАРТ/СТОП плеера, но если он не запущен, при первом нажатии кнопки система его запустит.

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

3. И действующее решение. Если девайс достаточно быстрый и у вас есть root, возьмите написанный мною скрипт (сейчас там прописаны USB коды функ. клавиш):

while true # бесконечный цикл

do

s=$(getevent -v0 -c1) # считываем одно событие из всех устройств ввода, -v0 чтобы он не сыпал кучей ненужного мусора

s=$(echo $s | awk '{print $4}') #выделяем код клавиши

case $s in # выполняем нужную команду
0007003f) am start -a android.intent.action.MAIN -c android.intent.category.HOME -n com.maxmpz.audioplayer/.StartupActivity # запускаем PowerAMP

sleep 1
;;

00070040) am start -n ru.yandex.yandexmaps/.MapActivity # Запускаем Яндекс.Карты
sleep 1
;;

0007003d) am start -a android.intent.action.MAIN -c android.intent.category.HOME # переход на главный экран (если кнопка HOME не работает)
sleep 1
;;

00070045) am start -a android.intent.action.MAIN -n com.speedsoftware.rootexplorer/.RootExplorer # (Root explorer)
sleep 1
;;

0007003b) am startservice -a "org.broeuschmeul.android.gps.usb.provider.nmea.int ent.action.START_GPS_PROVIDER" # запускаем USB GPS и Mapcam Droid
sleep 5
am broadcast -a info.mapcam.droid.SERVICE_START
# am start -n info.mapcam.droid/.SpeedometrActivity # другой экран Mapcam Droid, если нужно
sleep 1
;;
esac

done


Рут нужен потому, что в Андроиде нельзя как в Windows просто читать коды клавы если окно данной программы не активно. Сделано это разработчиками для предотвращения кейлоггеров. Единственный способ -- под рутом читать входящий поток и фильтровать оттуда то что нужно.

Нужные вам коды клавиш можете найти просматривая вывод команды getevent из командной строки.
Команды запуска нужных приложений можно накопать разбирая файл ресурса внутри APK либо просто узнать у разработчика.
Команда am start запускает приложение из командной строки.

Данный скрипт успешно работает, но если в девайсе мало памяти, ядро со временем его убьёт. В Андроиде чтобы процесс не убивался, его нужно поместить в область уведомлений (строка сверху), но я не разобрался как это сделать.

s.m. 24.05.2013 02:05

есть еще один способ - в медиаплеерах с Андроидом есть встроенное приложение или сервис, который мониторит клаву или пульт, эмулирующий клаву и запускает одно из 4 настроенных приложений.
Вот только как его выцепить - я лично не нашел. Это приложение решило бы кчу проблем.
Я сейчас пошел другим путем - слабал аналог резистивных кнопок (у меня в магнитоле матрица 4x4), завел их в Ардуину через аналоговый вход (АЦП), написал скетч для обработки - а дальше дело техники - хочешь отправляй коды клавиш через эмулятор USB -клавы (стандартная фича современных ардуин), хочешь запускай куски кода в самой ардуине...

AngelOfGrief 24.05.2013 02:22

Цитата:

Сообщение от s.m. (Сообщение 259364)
есть еще один способ - в медиаплеерах с Андроидом есть встроенное приложение или сервис, который мониторит клаву или пульт, эмулирующий клаву и запускает одно из 4 настроенных приложений.

А как оно это делает? Сколько я читал про андроид в зарубежных форумах, везде пишут, что в андроиде клаву может мониторить только текущий activity.

Хотя андроид по нажатию кнопки может вызывать: камеру, почту, область уведомлений, поиск, завершение работы, видеоплеер, аудиоплеер (причём только "родной"), галерею. Это те коды, которые работают в *.kl файле у меня: CAMERA, EMAIL, NOTIFICATION, SEARCH, POWER, VIDEO, MUSIC, PICTURE.

Можно попробовать покопать в сторону замены этих APK другими. Но тупое переименование вызывает ошибку.


Часовой пояс GMT +4, время: 03:46.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot