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 другими. Но тупое переименование вызывает ошибку.

s.m. 24.05.2013 02:28

Цитата:

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

а вот хз. Работает и все тут. Я думаю, что крутится что-то, зашитое в прошивку, скорее всего демон. Но потратив немало времени, пошел по хардварному пути.
Я сам столкнулся - если активити - делай что хочешь. Если сервис - то в пролете. А так как мое приложение - это сервис, то если сворачиваешь окна - кнопки уже не работают.

zyxel812 24.05.2013 15:48

Хочу напомнить про существование такого вот изделия
Функционал подключения к BMW не обязательно использовать, в этом случае вообще ничего дорабатывать не надо.
У вас будет небольшая платка, к которой можно подключить до 15 кнопок, каждую из которых можно запрограммировать на любой сканкод, в т.ч. и из мультимедийной части клавиатуры.

segamitich 28.05.2013 08:58

AngelOfGrief
Скрипт действительно работает!! Но вот беда. Скрипт берет данные из файла event только если ему в ручную выставить разрешение на чтение и запись rw rw rw . По умолчанию у этого файла разрешение rw rw - . При чем этот файл появляется и исчезает при подключении клавиатуры, и естествено разрешение всегда сбрасывается на rw rw - , в результате скрипт не работает при таких условиях. Что можно сделать? Рут есть.

AngelOfGrief 28.05.2013 12:00

Наверное, в цикле прописать chmod при условии существования файла?

xxoma 28.05.2013 19:27

Кто пробовал ардуину прицепить к контроллеру клавиатуры? Хотел на ардуине сделать ик-приемник для пульта что бы она кнопки нажимала какие нужно.

AngelOfGrief 28.05.2013 19:36

Есть готовые USB ИК приёмники с пультом в комплекте, выдающие коды multimedia клавиш.

Что значит прицепить ардуину к контроллеру клавиатуры? Ардуино Нано может эмулировать клаву и мышь по USB.

xxoma 28.05.2013 20:17

Цитата:

Сообщение от AngelOfGrief (Сообщение 259890)
Есть готовые USB ИК приёмники с пультом в комплекте, выдающие коды multimedia клавиш.

Что значит прицепить ардуину к контроллеру клавиатуры? Ардуино Нано может эмулировать клаву и мышь по USB.

Можно ссылку где можно такое купить?
У меня ардуино уно, его тоже можно сделать HID клавиатурой, но надо перешивать МК который в ардуине выполняет роль UART->USB интерфейса, тоесть в таком варианте мне надо будет использовать целую ардуину а это жирновато. А так я смогу взять атмегу, прошить в нее скетч и собрать отдельно работающий приемник.

AngelOfGrief 28.05.2013 20:22

Я покупал здесь в своё время:

http://www.nix.ru/autocatalog/mmedia...ver_52903.html

У меня дома два таких комплекта валяется без дела. Работает без дров, видится как HID устр-во.

xxoma 28.05.2013 20:31

Цитата:

Сообщение от AngelOfGrief (Сообщение 259894)
Я покупал здесь в своё время:

http://www.nix.ru/autocatalog/mmedia...ver_52903.html

.

Но я хочу прикрутить ик пульт для руля. Врятли такой приемник с ним будет работать.

AngelOfGrief 28.05.2013 22:01

Я этим вопросом занимался, была софтина со своим драйвером, которая этот девайс по-другому устанавливала и он мог читать коды чужих пультов и им обучаться. Под Windows. Название не помню. :)

AngelOfGrief 28.05.2013 22:18

Если у вас хост-система Windows, то вот:

http://winlirc.sourceforge.net/

xxoma 29.05.2013 00:51

У меня система на андроиде, была бы винда то было бы проще. Вобщем сам отвечу на свой вопрос, вдруг кому пригодится, удалось нажимать кнопки на контроллере с юсб клавы ардуиной при помощи 561КТ3. Осталось найти нужные контакты для нужных кнопок и можно собирать приемник.

AngelOfGrief 29.05.2013 00:57

Цитата:

Сообщение от xxoma (Сообщение 259925)
У меня система на андроиде, была бы винда то было бы проще. Вобщем сам отвечу на свой вопрос, вдруг кому пригодится, удалось нажимать кнопки на контроллере с юсб клавы ардуиной при помощи 561КТ3. Осталось найти нужные контакты для нужных кнопок и можно собирать приемник.

Не знаю, странное решение. Почему нельзя взять ардуину с поддержкой USB HID устройств (atmega32u4) вместо того чтобы нажимать кнопки на USB клаве? Такая платка стоит около 1000р. Чтение IR приёмника, думаю, сделать не такая большая проблема.

Есть решение и на PIC, я делал на PIC18f2550, на форум выкладывал. Правда, с ним сложнее, там надо бутлоадер прошивать.

Кстати, в Андроид есть нативное решение для чтения ИК сигналов, у меня в Iconbit есть ИК порт. Даже встречал в инете темку как принимать коды неродных пультов при условии, что они поддерживают один из самых распространённых стандартов (4-байтный код).

xxoma 29.05.2013 01:11

Цитата:

Сообщение от AngelOfGrief (Сообщение 259927)
Не знаю, странное решение.

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

segamitich 29.05.2013 09:00

ВОбщем научился запускать любые приложения но комбинацией двух кнопок, это я про андроид. Для этого установил Быстрый Запуск и там настроил кнопки. В целом все работает, запускаются любые приложения, мультимедиа работает (в PowerAmp) .
Кстати , AngelOfGrief , скрипт у меня получилось повесить в панель задач с помощью SL4A . Но его, как уже писал надо доработать, и с ег опомощью можно будет запукскать приложения одной кнопкой.

wave_is 10.06.2013 12:26

Цитата:

Сообщение от segamitich (Сообщение 259932)
ВОбщем научился запускать любые приложения но комбинацией двух кнопок, это я про андроид. Для этого установил Быстрый Запуск и там настроил кнопки. В целом все работает, запускаются любые приложения, мультимедиа работает (в PowerAmp) .
Кстати , AngelOfGrief , скрипт у меня получилось повесить в панель задач с помощью SL4A . Но его, как уже писал надо доработать, и с ег опомощью можно будет запукскать приложения одной кнопкой.

ой. а детальней можно разжевать? Что за быстрый запуск?

segamitich 11.06.2013 08:44

вот прога быстрый запуск
https://play.google.com/store/apps/d...ortcutsettings

это для смартфонов с хард клавой, в ней можно настроить сочетания клавишь на запуск приложений - кнопка search + "любая буква и цифра" . Но говорят что может не работать на некоторых устройствах, у меня заработало Wexler 7t .
вот еще ссылки по этой теме:
http://forum.xda-developers.com/show....php?t=2189304
http://www.dummies.com/how-to/conten...hone-apps.html

wave_is 11.06.2013 10:31

спасибо. добавил в шапку

Alex-NN 11.06.2013 11:17

Цитата:

Сообщение от segamitich (Сообщение 260953)
вот прога быстрый запуск
https://play.google.com/store/apps/d...ortcutsettings

это для смартфонов с хард клавой, в ней можно настроить сочетания клавишь на запуск приложений - кнопка search + "любая буква и цифра" . Но говорят что может не работать на некоторых устройствах, у меня заработало Wexler 7t .
вот еще ссылки по этой теме:
http://forum.xda-developers.com/show....php?t=2189304
http://www.dummies.com/how-to/conten...hone-apps.html

Попробовал. Работает. Интересно, можно ли как-либо отменить функционал кнопки "поиск". Т.е, чтобы при задержке нажатия второй кнопки не вызывался непосредственно поиск?
А так, все нормально. Буду пользовать!:yes4:

AngelOfGrief 11.06.2013 13:35

Цитата:

Сообщение от segamitich (Сообщение 260953)
вот прога быстрый запуск
https://play.google.com/store/apps/d...ortcutsettings

это для смартфонов с хард клавой, в ней можно настроить сочетания клавишь на запуск приложений - кнопка search + "любая буква и цифра"

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

wave_is 11.06.2013 15:00

Цитата:

Сообщение от AngelOfGrief (Сообщение 260996)
Ну, сочетания -- это не интересно. Если б она могла по одному сканкоду запускать программу, цены б ей не было. Хотя, в моей самодельной клаве я могу и два сканкода отправлять -- тоже вариант.

сочетание отлично подходит для резистивных кнопок в связки с joycon

а замыкать одним нажатие две кнопки вроде тоже не проблема
так что, классное нажатие

wave_is 11.06.2013 15:09

Цитата:

Сообщение от Alex-NN (Сообщение 260974)
Попробовал. Работает. Интересно, можно ли как-либо отменить функционал кнопки "поиск". Т.е, чтобы при задержке нажатия второй кнопки не вызывался непосредственно поиск?
А так, все нормально. Буду пользовать!:yes4:

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

AngelOfGrief 11.06.2013 18:05

Отменить функционал кнопки очень просто: удалите её из файла раскладок клавиатуры /system/usr/keylayout/*.kl

Там есть что-то вроде:

key 421 SEARCH

Надо удалить или закомментировать эту строчку.

wave_is 04.09.2013 20:54

Вопрос по Smart keyboard Pro
Планшет у меня как у всех установлен в горизонтальном положении
когда открывается окно клавиатуры, то Smart keyboard Pro занимает 100% экрана
70% занимает окно ввода и 30% 3 или 4 строки с кнопками

как это исправить?
обычно в нормальных клавиатурах строка ввода занимает одну строчку, а не большую часть экрана.

Может у меня где-то не там галка стоит?
у всех такая проблема, или у кого-то иначе?

wave_is 06.09.2013 17:28

UP
что, никто клавиатурой на планшете не пользуется?

Rage2 06.09.2013 17:46

Цитата:

Сообщение от wave_is (Сообщение 269573)
Вопрос по Smart keyboard Pro...
Может у меня где-то не там галка стоит?

....да, в настройках есть, можно настроить как вам нужно...разбирайтесь

wave_is 07.09.2013 02:35

Цитата:

Сообщение от Rage2 (Сообщение 269880)
....да, в настройках есть, можно настроить как вам нужно...разбирайтесь

мерси
пройдусь еще раз

timtman 10.09.2013 09:11

Цитата:

Сообщение от wave_is (Сообщение 269969)
мерси
пройдусь еще раз

нашел?

Rage2 20.09.2013 05:11

Вложений: 2
Интересная клава...
через комп настраиваются кейкоды.

на 6-ть кнопок
на 4 кнопки
Вложение 32870 Вложение 32869

Видео как работает

Rage2 20.09.2013 05:22

Полезные ссылки
http://source.android.com/devices/te...out-files.html
http://source.android.com/devices/te...d-devices.html
http://developer.android.com/referen.../KeyEvent.html

http://www.kandroid.org/online-pdk/g...ard_input.html
https://github.com/mathom/TeensySubaru
https://github.com/ddrown/teensy_usb_android
https://github.com/markwj/hidmedia


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

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