Переназначение функций кнопок на android устройствах



Реп: (467)
Переназначение функций кнопок на android устройствах

Предисловие
Так как подобной темы нет, а информация по данному вопросу разбросана небольшими частями по различным темам форума решил, создать данную тему с общей инструкцией.
Для всех действий необходим root.
Работать будем с файлами расположенными в system\usr\keylayout

Остановимся на файлах, которые необходимо редактировать (это, пожалуй, самый сложный этап):
Имя файла зависит от фирмы производителя, модели и версии прошивки, но как я заметил есть следующая тенденция: до Android 2.3.5 включительно, имя нужного нам файла формировалоcь следующим образом ***-keypad.kl (или ***- kpd.kl), где *** - заводское имя вашей модели.

    Известные мне примеры:
  • Gigabyte Gsmart G1310 - qrd-keypad.kl
  • Gigabyte Gsmart G1355 – msm7627_sku5_keypad.kl
  • LG P500 Optimus One – thunder_keypad.kl
  • LG E405 Optimus L3 Dual - surf_keypad.kl и 7x27a_kp.kl
  • LG E730 Optimus Sol – victor-keypad.kl (touch-keypad.kl)
  • LG GT450 – swift.kl (не уверен, но люди пишут)
  • HTC Hero - heroc-keypad.kl
  • HTC Desire - bravo-keypad.kl
  • HTC Explorer - pico-keypad.kl
  • HTC Desire S - saga-keypad.kl
  • HTC Desire HD - spade-keypad.kl
  • HTC Sensation - pyramid-keypad.kl
  • Samsung Galaxy S I9000 - melfas-touchkey.kl и s3c-keypad.kl
  • SE Live with Walkman - pm8058-keypad.kl и msm_pmic_pwr_key.kl (во втором файле только кнопка питания)
  • Sony Ericsson Xperia X8 – shakira-keypad.kl
  • Sony Ericsson Xperia X10 – es2009ra_keypad.kl
  • Star A2000 / A2000 GPS - MT6516-kpd.kl и QWERTY.kl
    * - планируется наполнение списка с Вашей помощью, если есть замечания указывайте.

    Начиная с 4.0.3 всё изменилось, могу отметить, что для HTC вторая часть файла стала touchscreen.
    Известные мне примеры:
  • Sony LT22i Xperia P – so34-buttons.kl (3 нижние кнопки), ux500-ske-keypad.kl (боковые кнопки)
  • HTC ONE V - atmel-touchscreen.kl (3 нижние кнопки), primou-keypad.kl (боковые кнопки)
  • HTC Desire S - atmel-touchscreen.kl (4 нижние кнопки), saga-keypad.kl (боковые кнопки)
  • HTC Sensation – cy8c-touchscreen.kl (4 нижние кнопки), pyramid-keypad.kl (боковые кнопки)
  • Samsung i9250 Galaxy Nexus (android 4.2.1), вероятней всего sii9234_rcp.kl
    * - планируется наполнение списка с Вашей помощью, если есть замечания указывайте.

    Файлы кнопок проводной гарнитуры обычно имеют вид:
  • 7k_headset.kl
  • h2w_headset.kl
Коды кнопок
Телефон
key 116 POWER
key 102 HOME
key 139 MENU
key 158 BACK
key 217 SEARCH
key 212 CAMERA
key 114 VOLUME_DOWN
key 115 VOLUME_UP
Key 231 CALL
key 107 ENDCALL
key 249 APP_SWITH
Кнопки гарнитуры
key 107 ENDCALL
key 113 MUTE
key 114 VOLUME_DOWN
key 115 VOLUME_UP
key 163 MEDIA_NEXT
key 164 MEDIA_PLAY_PAUSE
key 165 MEDIA_PREVIOUS
key 226 HEADSETHOOK
key 231 CALL
Bluetooth гарнитура
key 200 MEDIA_PLAY_PAUSE
key 201 MEDIA_PLAY_PAUSE
key 166 MEDIA_STOP
key 163 MEDIA_NEXT
key 165 MEDIA_PREVIOUS
key 168 MEDIA_REWIND
key 208 MEDIA_FAST_FORWARD

Практически все коды кнопок, которые можно записать в *.kl
Описание функций
  • POWER – блокировка/разблокировка
  • HOME – возврат на основной экран
  • MENU – вызов меню
  • BACK - возврат к предыдущему действию
  • SEARCH – вызов поиска
  • VOLUME_DOWN – понижение уровня громкости
  • VOLUME_UP – повышение уровня громкости
  • CALL – вызов Phone.apk (позволяет отвечать на вызов)
  • ENDCALL – завершение звонка
  • CAMERA – вызов Camera.apk
  • FOCUS – автофокус
  • DPAD_CENTER – курсор (касание) по центру
  • DPAD_UP – курсор (касание) вверх*
  • DPAD_DOWN – курсор (касание) вниз*
    * - установка этих значений на кнопки 115 и 114 соответственно позволяет добиться пролистывания текстов или страницы браузера кнопками громкости.
  • DPAD_LEFT – курсор (касание) влево
  • DPAD_RIGHT – курсор (касание) вправо
  • MUTE – выключение звука музыки без остановки трека
  • MEDIA_NEXT – следующий трек
  • MEDIA_PLAY_PAUSE – проигрывать/пауза
  • MEDIA_STOP – остановить трек
  • MEDIA_PREVIOUS – предыдущий трек
  • MEDIA_REWIND - перемотка
  • MEDIA_FAST_FORWARD – ускорить воспроизведение
  • HEADSETHOOK – кнопка гарнитуры – позволяет отвечать на вызовы, класть трубку и управлять плеером
  • GRAVE - ?
  • APP_SWITCH (RECENT_APP) – вызов панели «Недавние» с возможностью переключаться между приложениями (либо вызов диспетчера приложений в зависимости от прошивки.

    Также следует обратить внимание на такие дополнительные параметры как:
  • WAKE
  • WAKE_DROPPED
    Если стоит WAKE то после нажатия в спящем режиме смарт «проснётся» и выполнит действие, а при WAKE_DROPPED просто «проснётся», без передачи кода кнопки на выполнение.
Определение кодов кнопок
  • Если у вас кастомный recovey (а вероятней всего он у вас такой), то во вкладке advanced можно воспользоваться функцией key test.
  • Программа KeynrTracker. Прикрепленный файлKeynrTracker.apk ( 8.32 КБ )

  • Программа Keycode CheckerПрикрепленный файлKeycodeChecker.apk ( 10.3 КБ )

Способы редактирования файлов
  • Самый простой способ. Заключается в редактировании нужных файлов прямо в папке keylayout, для этого используем ES Проводник (RootExplorer, Total Commander, ну или что-то на свой вкус (я пользуюсь ES Проводником и вам советую)): открываем – меняем требуемые значения – закрываем с сохранением изменений – перезагружаем девайс. При этом в папке keylayout будет создан фаил ****.kl.bak в котором сохранятся первоначальные значение изменённого вами файла. Также можно редактировать копию файла на SD карте или ПК, а затем вставлять с заменой в keylayout.(Проверено)

  • Программа Easy Android Tools (EAT). Программа позволяет подключать телефон как через USB кабель так и по WiFi. После подключения и распознания телефона программой в правом окне Вы увидите содержимое внутренней памяти телефона. Переходим в Необходимо system/usr/keylayout, находим нужный фай, редактируем его в EAT Editor (F4), сохраняем изменения, перегружаем смарт и готово. (Программа подразумевает наличие на вашем ПК USB драйверов для вашего устройства (их можно найти на оф сайте программы), и HTC Syns для HTC)
    Прикрепленный файлEAT_1.3.1.RUS.Setup.exe ( 1.78 МБ )


  • Для этого метода нам потребуется Android SDK tools, знание точного названия файл который нам надо менять (можно посмотреть через ES Проводник и тд. и. тп.)
    В командной строке переходим в папку с Android SDK tools (у меня это C:\Android), далее выполняем следующее. (Необходимо наличие на вашем ПК USB драйверов для вашего устройства)
    adb remount
    adb pull system/usr/keylayout/***.lk ***.kl

    где *** - имя вашего файла.
    После чего файл появиться в папке с Android SDK tools, и вы сможете его отредактировать. Проще всего это сделать при помощи Notepad, но можно и чем угодно, главное пери сохранении не изменять расширение файла.
    Для возврата файла проделываем следующее:
    adb remount
    adb push ***.kl system /usr/keylayout

    Перегружаем аппарат и готово. Прикрепленный файлAndroid.zip ( 572.31 КБ )
    (Проверено)

  • Заключается в редактировании файла на ПК, и создание zip архива для прошивки через recovey, пример такого архива для HTC Desire S прилагаю, но тут надо навыки по написанию файла updater-script. Прикрепленный файлRecent_Apps_on_Search_for_Desire_S.zip ( 252.14 КБ )
    (Проверено)
Программы
  • Xposed модуль для переназначения кнопок

  • ButtonRemapper – позволяет переназначать кнопки, но работает некорректно на многих устройствах особенно с android 4.0.3 и выше. Более разработчиком не поддерживается, Следует отметить, что в теме по этому приложению достаточно много информации по ручному переназначению кнопок.

  • ButtonRemapper Galaxy Tab Прикрепленный файлTab_ButtonRemapper_v1.1.apk ( 67.09 КБ )

  • ButtonRemapper Galaxy S Прикрепленный файлButtonRemapper_Galaxy_S.apk ( 72.76 КБ )

  • Headset Button Controller – управление музыкальным проигрывателем и другими функциями телефона с проводной гарнитуры.

  • DreamKeys – программа для переназначения кнопок телефона, идея заключается в перехвате команд нажатий и присвоение им других действий, root не нужен (возможна настройка на долгое нажатие).

  • Button Shortcut - Назначение программ на кнопки "Камера" или "Поиск"
Инструкции


Сообщение отредактировал dеym - 26.07.19, 16:29



Реп: (-3)
Всем привет. Помогите мне просто так дали смартфон kazam trooper x4.5 у него нету кнопки включения она работала пару часов назад я попытался включить его надавив на то место где должна быть кнопка ножницами теперь он не как не включается только когда зарядное подключаю и дело в том что он загружается в Factory mode я не знаю как это решить у меня получалось его включить только через рекавери но оно не загружается из-за отсутствия кнопки включения как можно переназначить кнопку включения на кнопку регулировки громкости вниз



Реп: (251)
Всем привет, помогите переназначить кнопку питания (телефон Sony Xperia L, стоит СМ11), т.к. она не работает (телефон утопил) и назначить на кнопку камеры или одну из кнопок громкости. Попытался сам сделать не работает, да хоть ты тресни, уже замучился без кнопки питания, помогите пожалуйста! Прилагаю в архиве всю папку keylayout. Заранее спасибо!
Прикрепленный файлkeylayout.rar ( 23.17 КБ )



Сообщение отредактировал -LinfernO- - 05.07.14, 11:50



Реп: (0)
* LuCiFer_vrn, огромное спасибо, что поделился инструкцией! У меня, правда, пока не получилось заставить работать - может, сможешь подсказать что-нибудь.
У меня PhoneWindowManager.smali немного отличается от твоего. У тебя вызовы выглядят так:
const/4 v1, 0x1 # или 0x0 для reset
move-object/from16 v0, p0
iput-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownKeyTriggered:Z

# добавляем:
move-object/from16 v0, p0
invoke-virtual {v0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->torch_check()V
- итого встречается 4 раза (2 на VolumeDown и 2 на VolumeUp).

А у меня выглядит так:
const/16 v18, 0x1 # или 0x0
move/from16 v0, v18
move-object/from16 v1, p0
iput-boolean v0, v1, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownKeyTriggered:Z

# по аналогии, пытался добавить:
move-object/from16 v1, p0
invoke-virtual {v1}, Lcom/android/internal/policy/impl/PhoneWindowManager;->torch_check()V
- с таким изменением не сработало. Что означает строчка "move/from16 v0, v18", которой нету в твоём варианте?
И ещё у меня есть ещё два вызова, перед которыми нет никаких move:
.line 5364
iput-boolean v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownKeyTriggered:Z

.line 5365
iput-boolean v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpKeyTriggered:Z
- не знаю, надо ли после них тоже добавлять нашу функцию?

Сообщение отредактировал comp3v - 02.07.14, 23:53



Реп: (6)
Это конечно прекрасно, но кому плюс за эту статью ставить? И еще такой вопрос- как можно увеличить полоску наэкранных кнопок? За правильный ответ в долгу не останусь.



Реп: (0)
[quote name="prosto_jin" date="21.12.2012, 23:11" post=18016140]
Наиболее распространённые коды кнопок (могут отличатся в зависимости от модели и прошивки):

У меня проблема. Телефон не реагирует на кнопку POWER. вкл и выкл не могу,
Не могу активировать экран, только когда подключаю ЮСБ экран включается. Посмотрел файл с назначением кнопок там "key 116 POWER" нет. 114 и 115 есть. Что лучше сделать? Боюсь испортить файл. в перепрошивках и др хитростях пока не разбираюсь.
Заранее спасибо.



Реп: (2916)
deglory @ 05.07.2014, 09:43 *
как можно увеличить полоску наэкранных кнопок? За правильный ответ в долгу не останусь.


модуль есть gravitybox к проге xposed. там можно было...



Реп: (15)
Доброго времени!
Можно ли настроить разблокирование телефона по двойному нажатию на пластмассовую кнопку POWER с боку корпуса? В данный момент разблокировка настроена на одиночное нажатие. Как перестроить?

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



Реп: (6)
Flasher_23 @ 6.7.2014, 20:13 *
модуль есть gravitybox к проге xposed. там можно было...

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



Реп: (4)
Помогите поменять сенсорные кнопки "назад" и "меню" LG E400 файл прилогаетса
Прикрепленный файлe0_keypad.zip ( 1.17 КБ )


Сообщение отредактировал ext4 - 09.07.14, 20:25



Реп: (49)
* ext4, думаю изменений в архиве e0_keypad-1.rar будет достаточно, если нет попробуй e0_keypad-2.rar, ну если и тут не пройдёт определи номер кнопки одним из методов указанным в шапке.
З.Ы.: хотя думаю первый архив всё решит ;)
Прикрепленный файлe0_keypad-1.rar ( 1.05 КБ )

Прикрепленный файлe0_keypad-2.rar ( 1.05 КБ )



Реп: (3)
Всем привет. Однажды наткнулся на интересную штуку, что позволяет прямо назначить коду кнопки отдельное приложение(путём редактирования файла в папке keylayout) выглядело оно примерно так:
key 139 test.apk

Может кто знает где можно почитать про это чудо, или может есть какие-то другие способы назначить вызов приложения нажатием кнопки? Буду благодарен за любой ответ.



Реп: (4)
Доброго времени суток.
Sony Xperia Z2. Стоковая прошивка 4.4.2. Есть рут.
Установил камеру Google и заморозил стоковую камеру Sony, в результате хардовая кнопка камеры перестала запускать камеру, так же перестала запускаться камера свайпом с экрана блокировки. В файле Generic.kl на код 212 Camera. В других файлах то же самое.
Установил Home 2 Shortcut и настроил на долгое нажатие хардовой кнопки камеры запуск приложения камеры Google. В результате получил следующее. С экрана блокировки свайпом камера запускается. В разблокированном состоянии долгим нажатием хардовой кнопки камера запускается. А вот в заблокированном состоянии долгое нажатие хардовой кнопки камеры только разблокирует телефон, а для запуска камеры необходимо повторное долгое нажатие кнопки. Это раздражает.
Подскажите, что поправить в файлах, чтобы камера запускалась с экрана блокировки свайпом, с разблокированного телефона коротким нажатием на хардовую кнопку экрана, а с заблокированного телефона долгим нажатием хардовой кнопки.
Буду очень благодарен.

P.S. KeyNrTracker определил код кнопки 766 полное нажатие и 528 частичное нажатие. В файле Generic вообще не обнаружил эти коды, они есть в файле gpio-keys: 528 focus, 766 camera wake

Сообщение отредактировал деник - 10.07.14, 19:19



Реп: (118)
Привет комрады! Вообщем суть проблемы такая. ВКЛ/ВЫКЛ экрана чехлом. Т.е блокировка и разблокировка смартфона не кнопкой вкл./выкл. а именно по средствам датчика приближения, или датчиком света...
Дело в том, что закрытие-открытие чехла (или просто день/ночь) определяется как нажатие клавиш. Так?
Короче на каждом смарте (ну или на многих) есть датчик приближения и датчик света, регулирующий автояркость... Он находится рядом с передней камерой и слуховым динамиком. Нужно распознать код этих клавиш, чтоб можно было обойтись без всяких нажатий кнопок. Положил смарт в карман - телефон автоматически уснул и потушил экран. Достал и он автоматически проснулся, свапнул ползунок на экране блокировки и вошёл в смарт.
Возможно ли такое реализовать с помощью переназначения нажатий кнопки Вкл./Выкл.?
Подскажите коды этой кнопки:
POWER (выключение экрана при закрытии датчиков)
WAKE (пробуждение при открытии)
Программы которые в теме указаны не определяют у меня эти коды.



Реп: (17)
Всем доброго времени суток!

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

С Sony и HTC работает отлично. Корректно.
Но вот, в чём проблема. После прошивки сони цианогеном , все три кнопки определяются как 226. Такая же ерунда и на моей мотороле с цианом. 226.
А на htc работает отлично.
Что делать?



Реп: (4)
prosto_jin @ 09.07.2014, 22:22 *
З.Ы.: хотя думаю первый архив всё решит

Спасибо но не помогло уже не знаю что делать :angry:
По вашему совету узнал под каким номером какие кнопки (кнопка BACK - 158, кнопка MENU - 139), но при правке вышеуказаного файла ничего не происходит и файл принимает исходной вид.

Сообщение отредактировал ext4 - 12.07.14, 21:39



Реп: (1)
Здравствуйте. У меня такая проблема: имеются наушники htc rc e240(3 кнопки) и тел. lg optimus l9( cm 11(android4.4)) . В рекавери и через программы на гарнитуре все 3 кнопки дают один и тот же код(250). Что можно сделать? Может рекавери поменять? Или какой-то мод есть??? Заранее спасибо!



Реп: (34)
Доброго времени друзья! У меня такая проблема:
Имеется девайс: NEXUS 4, Purity rom, kitkat 4.4.4
Сегодня прикупил гарнитуру sennheiser m33g, для galaxy устройств.
В ней имеется три функциональных кнопки и микрофон, но по факту не работают кнопки +и-.
Подскажите, возможно ли эти кнопки каким либо образом переназначить.
За ранее спасибо! ;)



Реп: (56)
как редактировать понятно, а вот что там менять, не совсем. надо заставить кнопку "домой" включать определенный лаунчер ( чтобы не показывало выбор из всех а сразу включался, установка его по умолчанию не помогает, все равно потом запрос, переустановка лаунчера и сброс его настроек тоже не помогли). куда копать?



Реп: (6)
Привет всем,надо кнопку power на + или - поставить...,че и как менять.Вот папочка

Прикрепленные изображения
Прикрепленное изображение



Реп: (251)
* деник,

Хочу поинтересоваться, а не решилась проблема с камерой, ибо у меня такая же, очень неудобно?


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 28.03.24, 19:48