Сказ про трьох кнопках. Колонка Євгена Зобнина

  1. Зміст статті Коли мені в черговий раз дістався смартфон з хардварний клавішами навігації, взагалі...
  2. Спосіб номер один. Налаштовуємо сенсорні кнопки
  3. Спосіб номер два. екранні клавіші
  4. висновки

Зміст статті

Коли мені в черговий раз дістався смартфон з хардварний клавішами навігації, взагалі без можливості їх налаштування або активації екранних клавіш в стилі Nexus, я вирішив, що з цим треба щось робити. Покопавшись пару годин в нутрощах Android, я відключив набридливу підсвічування, поміняв клавіші «Назад» і «Огляд» місцями, а потім включив екранні кнопки і знайшов спокій.

інтро

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

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

Зручне круговий меню навігації в 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 на карті пам'яті.

Запускаємо програму, вибираємо перші три галочки, c допомогою опції Select folder вибираємо каталог boot на карті пам'яті

Ходимо по sysfs
Ходимо по sysfs   init init.d scripts support

Ползадачі виконано, залишилося поміняти місцями кнопки «Назад» і «Огляд». Для цього необхідно змінити розкладку кнопок. В 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 . Як мені здається, це найбільш зручний спосіб управління.

Кнопки же сенсорні, правильно?