vs220 |
|
Темы:
25
Сообщения:
8524
Участник с: 16 августа 2009
|
ShadowBurnПосмотрите будут ли выводится сканкоды Если нет значит скорее всего не определяются клавиши стандартными драйверами
|
vasek |
|
Темы:
47
Сообщения:
11874
Участник с: 17 февраля 2013
|
Каждой клавише соответствуют символы/коды на трёх уровнях 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 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, если это необходимо
Ошибки не исчезают с опытом - они просто умнеют
|
vs220 |
|
Темы:
25
Сообщения:
8524
Участник с: 16 августа 2009
|
vasekРечь же про usb клавиатуру. |
vasek |
|
Темы:
47
Сообщения:
11874
Участник с: 17 февраля 2013
|
vs220Виноват, пропустил, что это USB клавиатура. Плюс к этому писал в спешке и перегнул в части таблицы DSDT - как правило, там прописано в основном только управление подсветкой PS - управление звуком и подобное не относится к ACPI В части USB клавиатуры - никогда ее не анализировал, но, думаю, 3-х уровневая привяка кодов всеравно должны быть - это прописано в системе.Так что смотреть все уровни нужно обязательно. И имхо, если не показывает xev и другие утилиты, то отсутствует соответствие сканкоде и кейкоде. Повторюсь, но вот как это работает/настраивается в случае USB клавиатуры, не знаю, но думаю аналогично принятому способу.
Ошибки не исчезают с опытом - они просто умнеют
|
vasek |
|
Темы:
47
Сообщения:
11874
Участник с: 17 февраля 2013
|
А клавиша Fn включена? - иногда ее нужно включать иногда включена всегда
Ошибки не исчезают с опытом - они просто умнеют
|
vs220 |
|
Темы:
25
Сообщения:
8524
Участник с: 16 августа 2009
|
vasekЕсли сканкоды не выдает , то на выше уровни можно не смотреть Должен показывать сканкод клавиши Еще вот что не понятно гугл по айди ID 04d9:1702 выдает 104 клавишную клавиатуру без мултимедиа клавиш причем другого производителя Или не правильно определяется или клавиатуры две подключено непонятно |
vasek |
|
Темы:
47
Сообщения:
11874
Участник с: 17 февраля 2013
|
vs220Этот вывод показывает кейкоде, значение которого уменьшено на 8 относительно вывода xev. Сканкоде можно смотреть только в текстовой консоли. vs220Это уж ТС пусть разбирается сам.
Ошибки не исчезают с опытом - они просто умнеют
|
vs220 |
|
Темы:
25
Сообщения:
8524
Участник с: 16 августа 2009
|
vasekДля usb устройст вроде через evtest и так работает |
vasek |
|
Темы:
47
Сообщения:
11874
Участник с: 17 февраля 2013
|
vs220Пример для 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
Ошибки не исчезают с опытом - они просто умнеют
|
Haron_Prime |
|
Темы:
28
Сообщения:
2109
Участник с: 08 июня 2014
|
[OFFTOP] Чужой пример заразителен. Недавно поменял клаву и там одна кнопка (XF86Sleep) отправляет комп в сон, хотя для неё назначено другое действие в wm. Стало быть что-то раньше перехватывает событие и запускает по нему иное действие. Вот что выдал мне evtest по нажатию В общем-то, ничего для меня нового - то, что это X86Sleep, я и так знал. На старой клаве я его как раз для блокировки экрана и использовал.Потом та клава умерла, пользовался некоторое время другой, на которой такой кнопки не было. Потом таки купил такого же типа, как была. Клава беспроводная из комплекта A4Tech 9200F Black (старая была предыдущей версии - 9100F) И тут обнаружил, что кнопка Sleep уже занята ((( Сон сейчас вообще не использую (комп работает 24/7), да и раньше тоже - всегда просто выключал. В итоге на клаве была незадействованная кнопка, которую с удовольствием использовал бы для блокировки экрана. Воодушевлённый данным топиком полез в гугл и через пару минут отключил таки сон, отредактировав logind.conf. Всего-то и нужно было раскоментировать строку HandleSuspendKey=suspend и заменить значение на ignore Спасибо ТС, что [/OFFTOP] |