Не работают мультимедиа клавиши

ShadowBurn
event6
Посмотрите будут ли выводится сканкоды
sudo evtest /dev/input/event6 
Если нет значит скорее всего не определяются клавиши стандартными драйверами
Каждой клавише соответствуют символы/коды на трёх уровнях scancode - keycode - keysym и если между этими уровнями нет полной привязки, то клавиша не определяется.
Но в случае мультимедийных клавиш (Fn + FN) и этого не достаточно - их действие дополнительно прописано в таблицах ACPI (DSDT). А эти таблицы в основном заточены разработчиком на винду - linux им до лампочки. Так что у кого то работают у кого то не работают, кому как повезет.
Например, свой ноутбук
Все мультимедийные клавиши (Fn + FN) не работают, за исключением одной комбинации Fn+F1 (отпрвка в suspend), но привязка этих клавиш имеется и не нарушена.
Пример Fn+F7 (MUTE)
xmodmap -pk | grep -i mute
121 0x1008ff12 (XF86AudioMute) 0x0000 (NoSymbol) 0x1008ff12 (XF86AudioMute)
и видим, что keycode = 121, keysym = 0x1008ff12 (keysumname - XF86AudioMute), что подтверждает вывод xev
xev - keycode 121 (keysym 0x1008ff12, XF86AudioMute)
keysym = 0x1008ff12 (keysumname - XF86AudioMute).
UPD - scancode не привожу - он, как правило, соответствует keycode практически всегда (несоответствие бывает редко)
Хоть клавиши и не работают, но их можно легко забиндить с помощью xbindkeys на те же комбинации, что намного проще, чем искать и решать данную проблему. У себя ради интереса как то проверял, все работает - хотя я использую WM и использую для этого привязку самого WM.
В твоем случае, как видно по описанию, полная привязка scancode - keycode - keysym нарушена и сначала нужно это восстановить. Для начала рекомендую определить scancode , keycode и keysym этих клавиш и проверить их соответствие.
Как это делать, читай Wiki и гугли, описывать долго.
UPD - немного помощи
- showkey (только в текстовой консоли) - показывает scancode и keycode - опции -s (--scancodes), -k (--keycodes) - завершается автоматически, при простое в течение 10
- xev - показывает и keycode и keysym
- getkeycodes (только в текстовой консоли) - выводит таблицу конвертирования scancode-to-keycode (проверяется соответствие scancode по keycode)
- setkeycodes (только в текстовой консоли) - сделать привязку scancode и keycode, если это необходимо
- xmodmap -pk - посмотреть текущую привяку/загрузку
- xmodmap -e - сделать привязку keycode и keysum, если это необходимо
Ошибки не исчезают с опытом - они просто умнеют
vasek
- их действие дополнительно прописано в таблицах ACPI (DSDT).
Речь же про usb клавиатуру.
vs220
Речь же про usb клавиатуру.
Виноват, пропустил, что это USB клавиатура.
Плюс к этому писал в спешке и перегнул в части таблицы DSDT - как правило, там прописано в основном только управление подсветкой
PS - управление звуком и подобное не относится к ACPI
Method (_BCL, 0, Serialized)  // _BCL: Brightness Control Levels
В части USB клавиатуры - никогда ее не анализировал, но, думаю, 3-х уровневая привяка кодов всеравно должны быть - это прописано в системе.
Так что смотреть все уровни нужно обязательно. И имхо, если не показывает xev и другие утилиты, то отсутствует соответствие сканкоде и кейкоде. Повторюсь, но вот как это работает/настраивается в случае USB клавиатуры, не знаю, но думаю аналогично принятому способу.
Ошибки не исчезают с опытом - они просто умнеют
А клавиша Fn включена? - иногда ее нужно включать иногда включена всегда
Ошибки не исчезают с опытом - они просто умнеют
vasek
смотреть все уровни нужно
Если сканкоды не выдает , то на выше уровни можно не смотреть
 sudo evtest /dev/input/event6  
Должен показывать сканкод клавиши

Еще вот что не понятно
гугл по айди ID 04d9:1702
выдает 104 клавишную клавиатуру без мултимедиа клавиш причем другого производителя
Или не правильно определяется или клавиатуры две подключено непонятно
vs220
sudo evtest /dev/input/event6
Должен показывать сканкод клавиши
Этот вывод показывает кейкоде, значение которого уменьшено на 8 относительно вывода xev. Сканкоде можно смотреть только в текстовой консоли.
vs220
выдает 104 клавишную клавиатуру без мултимедиа клавиш причем другого производителя
Это уж ТС пусть разбирается сам.
Ошибки не исчезают с опытом - они просто умнеют
vasek
Сканкоде можно смотреть только в текстовой консоли
Для usb устройст вроде через evtest и так работает
vs220
Для usb устройст вроде через evtest и так работает
Пример для Fn+F7 (Mute)
scancode = 0xe0 0x20
keycode = 113
keysum = 0x1008ff12
keysumname = XF86AudioMute
Вывод evtest - code 113 (KEY_MUTE)
Вывод xev - keycode 121 (keysym 0x1008ff12, XF86AudioMute)
UPD - xev завышает значение кейкоде на 8
skancode преобразуется ядром в keycode по таблице кодов
keycode преобразуется X-ами в keysym и соответствующую ему константу keysymname
Ошибки не исчезают с опытом - они просто умнеют
[OFFTOP]
Чужой пример заразителен.
Недавно поменял клаву и там одна кнопка (XF86Sleep) отправляет комп в сон, хотя для неё назначено другое действие в wm. Стало быть что-то раньше перехватывает событие и запускает по нему иное действие.
Вот что выдал мне evtest по нажатию
Event: time 1526993200.640217, -------------- SYN_REPORT ------------
Event: time 1526993208.840302, type 4 (EV_MSC), code 4 (MSC_SCAN), value 10082
Event: time 1526993208.840302, type 1 (EV_KEY), code 142 (KEY_SLEEP), value 1
Event: time 1526993208.840302, -------------- SYN_REPORT ------------
В общем-то, ничего для меня нового - то, что это X86Sleep, я и так знал. На старой клаве я его как раз для блокировки экрана и использовал.
Потом та клава умерла, пользовался некоторое время другой, на которой такой кнопки не было. Потом таки купил такого же типа, как была.
Клава беспроводная из комплекта A4Tech 9200F Black (старая была предыдущей версии - 9100F)
И тут обнаружил, что кнопка Sleep уже занята (((
Сон сейчас вообще не использую (комп работает 24/7), да и раньше тоже - всегда просто выключал.
В итоге на клаве была незадействованная кнопка, которую с удовольствием использовал бы для блокировки экрана.
Воодушевлённый данным топиком полез в гугл и через пару минут отключил таки сон, отредактировав logind.conf. Всего-то и нужно было раскоментировать строку HandleSuspendKey=suspend и заменить значение на ignore
Спасибо ТС, что сподвиг меня на подвиг подтолкнул меня к активным действиям.
[/OFFTOP]
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
 
Зарегистрироваться или войдите чтобы оставить сообщение.