Пытаюсь переназначить аппаратные кнопки

Поскольку у меня сломана кнопка «Назад», я переназначил свои кнопки таким образом, чтобы моя исходная кнопка увеличения громкости функционировала как кнопка меню, а моя исходная кнопка меню — как кнопка «Назад». Я сделал это, изменив значения ключей в /system/usr/keylayout/generic.kl.

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

И да, конечно, я перезагрузился после внесения изменений снова.

У кого-нибудь есть идея?

Ответы (3)

Поскольку вы написали, что изменили системный файл, можно с уверенностью предположить, что ваше устройство рутировано. Доступно несколько приложений, обещающих переназначение ключей (см. мой список приложений для переназначения ключей ), одно из них может решить вашу проблему. Я не пробовал ни один из них (в этом не было необходимости), но то, что звучит многообещающе, — это Xposed Additions , см. эти скриншоты:

Скриншот Скриншот
Xposed Additions (источник: Google Play ; нажмите на изображение, чтобы увидеть увеличенные варианты)

На первом скриншоте (главный экран модуля) последним пунктом является «Кнопки». Нажатие приводит ко второму скриншоту — снова посмотрите на саму кнопку, и вы видите, что она включает в себя даже аппаратные клавиши (здесь: кнопка power). Элемент чуть выше будет вашей backкнопкой (мягкой или жесткой). Так что не нужно напрямую вмешиваться в системные файлы — просто пусть Xposed разбирается с этим :)

Не зная, какой у вас телефон, какая прошивка или какая версия, трудно точно сказать, почему, но самое простое объяснение заключается в том, что вы редактируете неправильный файл раскладки клавиш. Прошивки Cyanogenmod, как правило, поддерживают различные раскладки клавиш, специфичные для определенных устройств, и по очевидным причинам они имеют приоритет над файлом Generic.kl. Файлы макета ключей сопоставляются с отдельными типами устройств. Могут быть и другие файлы .kl, специфичные для ваших кнопок, такие как sec_key.kl, sec_jack.kl (для аппаратных кнопок Samsung и кнопок гарнитуры), cyttsp-i2c.kl (для контроллеров дисплея электронных чернил Cypress TrueTouch, используемых в B&N). Nook), gpio-keys.kl и т.д.

Поэтому вам нужно посмотреть, какие из них есть, какие для вашего конкретного устройства (надеюсь, они прокомментированы), и отредактировать их.

Я предполагаю, что сопоставления клавиш считываются только при первой загрузке после прошивки ПЗУ и будут храниться в базе данных в разделе /data. Эта база данных не будет обновляться при изменении значений в generic.kl. Вы можете проверить эту мысль, выполнив очистку данных. Это вызовет чтение ваших измененных значений из generic.kl (ПОСЛЕ УДАЛЕНИЯ ВСЕХ ВАШИХ ПОЛЬЗОВАТЕЛЬСКИХ ДАННЫХ!). Другим способом было бы найти эту базу данных и отредактировать ее вручную или просто удалить ее и перезагрузить для повторного чтения generic.kl.

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