Оповідь про три кнопки

Зміст статті

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

Екранні кнопки навігації повертаються разом із екраном, зникають, коли вони не потрібні, змінюють колір та органічно вбудовуються в інтерфейс домашнього екрану. Якщо відкинути саму ідею марності існування відразу трьох кнопок (врешті-решт, яблучники обходяться однією і не відчувають себе знедоленими) і зручні системи навігації на кшталт PIE або «бульбашки навігації MIUI», то екранні кнопки — це найкраще, що було придумано до цих пір.

Ситуація неприйнятна до крайності, а враховуючи, що добрий розробник прошивки не передбачив жодних налаштувань для активації екранних клавіш та налаштувань для керування сенсорними кнопками, довелося обійтися самотужки. Було два варіанти подальших дій:

  • привести сенсорні кнопки до потрібного стану, а саме відключити підсвічування та перенести клавішу «Назад» на ліву сторону (нехай вона виглядає як «квадрат», так навіть цікавіше);
  • вимкнути сенсорні кнопки повністю та активувати наекрані кнопки.

Сторонні інструменти я не люблю, тому рішення зробити все своїми руками прийшло само собою.

Спосіб номер один. Налаштовуємо сенсорні кнопки

Для початку спробуємо вимкнути підсвічування кнопок. Для цього нам потрібний root, емулятор терміналу та каталог /sys в корені файлової системи. Саме така комбінація. Ми маємо справу з ядром Linux, а всистемах на його основі вся важлива інформація про залізо, а також «тумблери», що ним управляють, зазвичай знаходяться у файловій системі sysfs, підключеної до каталогу /sys.

Власне, sysfs це навіть не файлова система, точніше, вона файлова, але оперує так званими синтетичними файлами. А вони не зберігаються на диску, це свого роду інтерфейс спілкування з драйверами: прочитав файл – отримав дані про залізницю, записав – змінив якесь налаштування. А для запису якраз потрібні права root.

Отже, отримуємо root, запускаємо емулятор терміналу (а краще ADB). І пишемо наступне:

Тепер ми в каталозі /sys, далі потрібно знайти каталог, в якому знаходяться файли драйвера підсвічування кнопок:

Бінґо! Це каталог /sys/class/leds/button-backlight. Переходимо в нього і дивимося, що всередині:

Ставлю свій Nokia 3310 на те, що файлbrightness - це поточна яскравість кнопок, аmax_brightness - максимальна. Перевіримо здогад, записавши в перший файл значення 100 (ну типу 100%, хоча яка там шкала - невідомо):

Відмінно, кнопки горять і навіть не збираються гаснути.

Момент істини - пишемо у файл max_brightness значення 0:

Кнопки згасли, назавжди, як і лампочка у моєму під'їзді вчора вночі.

Але так само, як лампочка, вони знову можуть спалахнути, якщо перезавантажитися. Тобто команда діє лише у поточному сеансі роботи. На щастя, це не біда, ми помістимо нашу команду в скрипт на карті пам'яті:

А його, своєю чергою, поставимо в автозавантаження за допомогою init.d scripts support. Запускаємо програму, вибираємо перші три галочки, за допомогою опції Select folder вибираємо каталог boot на карті пам'яті.

кнопки
Ходімо sysfs
вони
init.d scripts support

Півзавдання виконано, залишилося поміняти місцями кнопки«Назад» та «Огляд». Для цього потрібно змінити розкладку кнопок. В Android вона лежить у кількох файлах каталогу /system/usr/keylayout/. Їх досить багато, але якщо відкинути файли типу Vendor_2378_Product_100a.kl та qwerty.kl (вони зберігають розкладки повноцінних Qwerty-клавіатур, які Android підтримує із коробки), то залишиться від сили п'ять штук.

Якщо відкрити цей файл, можна побачити три рядки:

Залишається лише поміняти числа 158 і 139 місцями (для цього підходить будь-який файловий менеджер із підтримкою прав root). Після перезавантаження нова розкладка почне діяти.

Спосіб номер два. Екранні клавіші

Тут ще простіше. В Android існує спеціальна змінна налагодженняqemu.hw.mainkeys, яка дозволяє контролювати видимість наекранних клавіш навігації. Якщо вона має значення 0, клавіші відобразяться на екрані, 1 — зворотний ефект.

Записуємо змінну з потрібним значенням файл /system/build.prop, і на цьому все:

Далі можна «відключити» хардварні кнопки, вимкнувши їхнє підсвічування, як ми це зробили в першому способі. Можливо, звичайно, існує варіант вимкнути їх повністю, але знайти його не вдалося.

оповідь

Євген Зобнін