Мультимедийные клавиши ноутбука HP.

На самом деле, в заголовке я суть описал не очень верно, более точно опишу здесь.
Линукс видит и понимает только некоторые мультимедийные клавиши. Основные проблемы связаны с клавишами для повышения/понижения яркости. В xev их не видно совсем, в остальных грабберах клавиш (или как называются эти утилиты) тоже. Видно разве что, в dmesg, НО обе клавиши отображаются как один keycode. e02b если не ошибаюсь. acpi_listen их, кстати, тоже не видит. И evtest.
Ладно бы только эти две клавиши, с этим ещё можно как-то справиться, но есть и другая проблема.
В acpi_listen закрытие крышки ноутбука (не знаю, как ещё это по русски обозвать) детектится как button/wlan. Через systemd из-за этого никак не настроить действие при lid switch.

Каким способом это можно исправить?
Ноутбук - HP Laptop 15-dw1035ur
Danesteti
Каким способом это можно исправить?
Если хочешь, чтобы кто то что то подсказал, нужна информация, а ее нет ...
Для начала
- какие клавиши выполняют управление подсветкой???
- вывод команд при нажатии соответствующих клавиш управления подсветкой (в выводе оставь только нужные строки, относящиеся к нажатию нужных клавиш)
- xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'
- sudo evtest /dev/input/eventN ... где вместо N поставь номер, соответсвующий клавиатуре
PS - перед запуском команд запусти journalctl -f в отдельном терминале, чтобы потом посмотреть наличие ошибок, если они будут

В части
- acpi_listen рекомендую вообще не использовать, все можно сделать без него
- keycode. e02b - во первых это не keycode, а похоже scancode, а во вторых на ноутах HP такой сканкод раньше не использовался для управления подсветкой ... а потому рекомендую зайти в текстовую консоль (Ctrl+Alt+FN) и запустить showkey -s и showkey -k чтобы узнать коды нужных клавиш.

EDIT 1 - клавиатура надеюсь родная, встроенная .... а не какая-нибудь внешняя USB
Ошибки не исчезают с опытом - они просто умнеют
Хотя, если есть желание, можно обойтись без всяких вспомогательных утилит и проанализировать raw date нужных комбинаций клавиш … и самому распарсить вывод
Для этого пишем в терминале (любом) команду sudo od -tx1 /dev/input/eventN … вместо N пишем свое значение
- жмем Enter … и больше ничего не трогаем, просто смотрим что нам вывелось на монитор, возможны 2 варианта
1 - ничего не вывелось после запуска команды - это самое лучшее - и просто вводим нужную комбинацию клавиш …. и далее вообще не трогаем клавиатуру, а пользуемся только мышкой и выделяем полученные байты и копируем/сохранеяем. После чего завершаем действие команды комбинацией Ctrl+D …. лучше, чтобы не запутаться в байтах, новую комбинацию начинать по новой.
2 - будет выведено несколько строк, запоминаем номер последней строки … и действуем, как в п.1, но только НЕ выделяем для копирования строки, которые были выведены до нажатия комбинации … вообщем строки, которые запомнили.
Все ... эти сохраненные байты распарсим и узнаем и сканкод и кейкод примененной комбинации клавиш (при желании узнаем даже и дату нажатия и время нажатия)

Как пример, после запуска команды
sudo od -tx1 /dev/input/event3
видим следующие 4 строки
0000000 25 ce 8d 5f 00 00 00 00 76 13 0c 00 00 00 00 00
0000020 04 00 04 00 1c 00 00 00 25 ce 8d 5f 00 00 00 00
0000040 76 13 0c 00 00 00 00 00 01 00 1c 00 00 00 00 00
0000060 25 ce 8d 5f 00 00 00 00 76 13 0c 00 00 00 00 00
далее нажимаем комбинацию Fn+F2 и появятся следующие строки, которые и копируем/сохраняем
0000100 00 00 00 00 00 00 00 00 2b ce 8d 5f 00 00 00 00
0000120 bf 1f 0f 00 00 00 00 00 04 00 04 00 92 00 00 00
0000140 2b ce 8d 5f 00 00 00 00 bf 1f 0f 00 00 00 00 00
0000160 01 00 e0 00 01 00 00 00 2b ce 8d 5f 00 00 00 00
0000200 bf 1f 0f 00 00 00 00 00 00 00 00 00 00 00 00 00
0000220 2c ce 8d 5f 00 00 00 00 d1 6b 01 00 00 00 00 00
0000240 04 00 04 00 92 00 00 00 2c ce 8d 5f 00 00 00 00
0000260 d1 6b 01 00 00 00 00 00 01 00 e0 00 00 00 00 00
0000300 2c ce 8d 5f 00 00 00 00 d1 6b 01 00 00 00 00 00
Находим последовательность из 6 байт типа 00 04 00 04 00 XX, где XX зависит от комбинации клавиш и определяет сканкод этой комбинации, эта последовательность прописана дважды - в моем случае это комбинация 00 04 00 04 00 92 и сканкод равен 92
Далее находим 2-е последовательности (одна нажатие, другая отжатие) из 6 байт типа 00 01 00 YY 00 01 и 00 01 00 YY 00 00, где YY зависит от комбинации клавиш и определяет кейкод этой комбинации - в моем случае YY = e0 или в 10-ой системе 224 - это и есть кейкод.
Ошибки не исчезают с опытом - они просто умнеют
Danesteti, а вообще рекомендую использовать для проблемных мультимедийных комбинаций xbindkeys - это намного проще ...
Чтобы решить проблему мультимедийных клавиш нужно много знать, да и то не всегда получается. У меня, например, все мультимедийные клавиши определяются, прописаны, НО не работают ... делал много подходов, применял много разных способов ... и даже уже не для работы, а просто ради интереса, но так и не смог решить эту проблему. А вот используя xbindkeys проблема решается быстро ... но при использовании tiling WM не нужен и xbindkeys - все решается встроенным функционалом.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.