Главная » 2012 » Март » 21 » Обучаем HID устройство (читай BT-клавиатуру) 6.ЧАСТЬ
19:31
Обучаем HID устройство (читай BT-клавиатуру) 6.ЧАСТЬ
Третьи грабли: Не все кнопки будут работать с Вашей версией Android OS! Обратите внимание на колонку Version в первой статье про клавиатуры. Если вы используете те коду, которые предназначены для версий больше вашей, тогда с этого места клавиатура не будет работать.
Все кнопки, указанные после неправильной не будут функционировать.
Поэтому, для будущей совместимости, я в своем файле, клавиши предназначенные не для моей версии Android OS, перенес в конец. Как показала практика, в этом случае все работает и файл готов к переносу на другие версии ОС.
Закидываем файл в систему
Здесь не обойтись без консольной утилиты. Подключаем девайс по USB в режиме отладки и выполняем последовательно команды в консоли cmd.exe:
d:
cd D:\android-sdks\platform-tools
adb push Broadcom_Bluetooth_HID.kl /data/local/Broadcom_Bluetooth_HID.kl
adb shell
su
mount -o remount,rw -t ext4 /dev/block/mmcblk0p9 /system
rm /system/usr/keylayout/Broadcom_Bluetooth_HID.kl
cp /data/local/Broadcom_Bluetooth_HID.kl /system/usr/keylayout/Broadcom_Bluetooth_HID.kl
chmod 644 /system/usr/keylayout/Broadcom_Bluetooth_HID.kl
exitexit
Четвертые грабли: Папка /system находится на файловой системе в режиме только для чтения. Для того, чтобы туда писать, нужно перемонтировать систему в режиме RW. Но для этого, нужно определить точку монтирования и тип файловой системы при помощи простой команды mount.
После перезагрузки устройства, файловая система снова станет «только для чтения».
Пояснения к командам:
D:\android-sdks\platform-tools — это папка, в которой у меня находится adb.exe из SDK (у кого установлен только KIES — ищите в Program Files) adb push Broadcom_Bluetooth_HID.kl... — это команда закачивает файл в папку. Папка /data/local/ выбрана не случайно. Это одна из немногих папок, в которую можно что-то положить, и из которой можно скопировать файл в другую файловую систему. mount -o remount,rw -t ext4 /dev/block/mmcblk0p9 /system — перемонтирование системы. В интернете полно примеров как это делать, но там почему-то указаны совсем не те диски и файловая система. Пришлось подкорректировать. остальное — удаление старого, копирование нашего файла и назначение ему правильных прав. Назначение прав очень важно!
Проверяем
Теперь нужно отсоединить USB (из-за него иногда выключается Bluetooth) и перезапустить соединение с клавиатурой:
Если клавиатура не хочет подсоединяться — значит вы забыли установить права, неправильно заполнили файл или положили файл не в ту папку (повторюсь, у каждого устройства они разнятся, читайте первую статью). В общем что-то с файлом.
Если клавиатура подключилась, но половина клавиш не работает, значит с того места, где она не работает, вы вставили неподдерживаемый вашей версией код. Переместите его в конец файла.
Заработало!
Поздравляю! По-другому и быть не могло! Вы молодец! Только… как же на русский-то перейти? Не долго гугля, я нашел простой ответ — нужна софтварная клавиатура, поддерживающая аппаратную. Таких немного. Идеальная, на мой взглад, на сегодня — ruKeybord Устанавливаем, настраиваем, в раскладках устанавливаем аппаратную клавиатуру вместо qwerty и т.п. Теперь можно переключать раскладку через Alt+Shift (UPD: или Shift+Space). И флажок показывается.
Кто еще не в курсе, чтобы быстро переключаться между клавиатурами, подержите палец на любом поле ввода и выберите из выпавшего меню «Режим ввода».
Итоги
Как ни старался, но заставить заработать все кнопки, подобно компьютеру, на 2.3.5 невозможно. Но скоро я обновлюсь до Android OS 4 и новые кнопки заработают. На первой фотографии я сижу в putty и редактирую сайт. Очень не хватает кнопки Ctrl. Очень жду обновления ОС. Доволен результатом.