Содержание статьи
Интро
Сразу оговорюсь: я большой поклонник идеи экранных клавиш навигации. Всех этих домиков, стрелочек и квадратиков, нарисованных прямо в нижней части экрана. Да, они отнимают какое-то там пространство (которое, впрочем, в большинстве случаев не особо и нужно), да, возможно они портят внешний вид приложений, но, черт возьми, они динамические.
Экранные кнопки навигации поворачиваются вместе с экраном, исчезают, когда они не нужны, меняют цвет и органично встраиваются в интерфейс домашнего экрана. Если отбросить саму идею бесполезности существования сразу трех кнопок (в конце концов, яблочники обходятся одной и не чувствуют себя обездоленными) и довольно-таки удобные системы навигации вроде PIE или «пузыря навигации MIUI», то экранные кнопки — это лучшее, что было придумано до сих пор.
Так вот. Почему-то мою замечательную, прекраснейшую идею о том, что лучше наэкранных кнопок нет ничего, не разделяют ну очень многие производители смартфонов. И даже не просто не разделяют, а не разделяют совершенно чудовищным способом, заставляя пользоваться смартфоном с сенсорными кнопками (ААА!), снабженными динамической подсветкой (ААА-2!) и кнопкой «Назад» с правой стороны экрана (ААА-3: решающий удар).
Ситуация неприемлемая до крайности, а учитывая, что добрый разработчик прошивки не предусмотрел никаких настроек для активации экранных клавиш и настроек для управления сенсорными кнопками, пришлось обойтись своими силами. Было два варианта дальнейших действий:
- привести сенсорные кнопки к нужному состоянию, а именно отключить подсветку и перенести клавишу «Назад» на левую сторону (пусть она выглядит как «квадрат», так даже интересней);
- отключить сенсорные кнопки полностью и активировать наэкранные кнопки.
Сторонние инструменты я не люблю, поэтому решение сделать все своими руками пришло само собой.
Способ номер один. Настраиваем сенсорные кнопки
Для начала попробуем отключить подсветку кнопок. Для этого нам нужен root, эмулятор терминала и каталог /sys в корне файловой системы. Именно такая комбинация. Мы имеем дело с ядром Linux, а в системах на его основе вся важная информация о железе, а также «тумблеры», им управляющие, обычно находятся в файловой системе sysfs, подключенной к каталогу /sys.
Собственно, sysfs — это даже не файловая система, точнее, она файловая, но оперирует так называемыми синтетическими файлами. А они не хранятся на диске, это своего рода интерфейс общения с драйверами: прочитал файл — получил данные о железке, записал — изменил какую-то настройку. А для записи как раз таки нужны права root.
Итак, получаем root, запускаем эмулятор терминала (а лучше ADB). И пишем следующее:
# su
# cd /sys
Теперь мы в каталоге /sys, далее нужно найти каталог, в котором находятся файлы драйвера подсветки кнопок:
# find -name \*button\*
./leds/button-backlight
Бинго! Это каталог /sys/class/leds/button-backlight. Переходим в него и смотрим, что внутри:
# cd /sys/class/leds/button-backlight
# ls
brightness
device
max_brightness
power
subsystem
trigger
uevent
Ставлю свой Nokia 3310 на то, что файл brightness — это текущая яркость кнопок, а max_brightness — максимальная. Проверим догадку, записав в первый файл значение 100 (ну типа 100%, хотя какая там шкала — неизвестно):
# echo 100 > brightness
Отлично, кнопки горят и даже не собираются тухнуть.
Момент истины — пишем в файл max_brightness значение 0:
# echo 0 > max_brightness
Кнопки погасли, навсегда, как и лампочка в моем подъезде вчера ночью.
Но так же, как лампочка, они снова могут загореться, если перезагрузиться. То есть команда действует только в текущем сеансе работы. К счастью, это не беда, мы поместим нашу команду в скрипт на карте памяти:
# mkdir /sdcard/boot
# echo 'echo 0 > /sys/class/leds/button-backlight/max_brightness' > /sdcard/boot
А его, в свою очередь, поставим в автозагрузку с помощью init.d scripts support. Запускаем приложение, выбираем первые три галочки, c помощью опции Select folder выбираем каталог boot на карте памяти.
Ползадачи выполнено, осталось поменять местами кнопки «Назад» и «Обзор». Для этого необходимо изменить раскладку кнопок. В Android она лежит в нескольких файлах каталога /system/usr/keylayout/. Их довольно много, но если отбросить файлы типа Vendor_2378_Product_100a.kl и qwerty.kl (они хранят раскладки полноценных Qwerty-клавиатур, которые Android поддерживает из коробки), то останется от силы пять штук.
Один из них как раз нам и нужен. Часто смартфоны используют файл ft5x06_ts.kl, специфичный для контроллера тачскрина FT5x06 (кнопки же сенсорные, правильно?), но в моем случае им оказался файл Vendor_2378_Product_100a.kl.
Если открыть этот файл, можно увидеть три искомые строки:
key 158 BACK VIRTUAL
key 139 MENU VIRTUAL
key 102 HOME VIRTUAL
Остается только поменять числа 158 и 139 местами (для этого подходит любой файловый менеджер с поддержкой прав root). После перезагрузки новая раскладка начнет действовать.
Способ номер два. Экранные клавиши
Здесь все еще проще. В Android существует специальная отладочная переменная qemu.hw.mainkeys, которая позволяет контролировать видимость наэкранных клавиш навигации. Если она имеет значение 0, клавиши будут показаны на экране, 1 — обратный эффект.
Записываем переменную с нужным значением в файл /system/build.prop, и на этом все:
# su
# mount -o remount,rw /system
# cp /system/build.prop /system/build.prop.bak
# echo qemu.hw.mainkeys=0 > /system/build.prop
Далее можно «отключить» хардварные кнопки, выключив их подсветку, как мы это сделали в первом способе. Возможно, конечно, существует вариант выключить их полностью, но найти его не удалось.
Выводы
Вот на такие преступные шаги иногда приходится идти, чтобы сделать смартфон чуточку удобнее. Что касается меня, то я остановился на третьем варианте: «выключил» кнопки плюс установил LMT Launcher. Как мне кажется, это наиболее удобный способ управления.