setkeycodes не меняет код ключа

У меня свежая установка 16.04 на новый Levono Ideapad 500S. Я пытался заставить клавиши яркости работать, и, наконец, мне удалось подключить клавишу увеличения яркости, чтобы работать, как ожидалось.

Тем не менее, мне нужно изменить код клавиши яркости вниз, чтобы он работал, но setkeycodes кажется, ничего не делает.

Бег showkey и нажатие кнопки уменьшения яркости трижды дает мне:

$ sudo showkey -s
kb mode was ?UNKNOWN?
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
0x9c 
0xe0 0x6f 0xe0 0xef 
0xe0 0x6f 0xe0 0xef 
0xe0 0x6f 0xe0 0xef 

что заставило меня поверить, что его скан-код e06f, Тем не менее, работает sudo setkeycodes e06f 224 а затем работает showkey -k все еще показывает старый код ключа (который был 112).

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

1 ответ

setkeycodes изменит сопоставления клавиш на уровне самого ядра. Здесь возникает проблема в понимании значений кода сканирования. Для нажатия клавиши это: 0x6f и для выпуска это:0xef, Итак, команда, которую вам нужно запустить:

sudo setkeycodes 6fef 224 

Это изменит отображение на желаемое.

Мне потребовалось немного времени, чтобы разобраться в проблеме с попыткой сопоставления на клавиатуре PS/2 с showkey а также setkeycodes.

Как указано на странице руководства для setkeycodes, существует проблема, которая влияет на инструменты, которые сообщают коды сканирования, такие как showkey -s в том смысле, что они не показывают фактические коды сканирования, которые подходят для ввода setkeycodes:

В ядрах 2.6 необработанный режим или режим сканирования кода вообще не очень сырой.

Опираясь на вывод showkey -s на некоторое время и заметив, что мои сопоставления существующих ключей не работают, и некоторые другие ключи, о которых я не думал, что изменяю, меняются, в конце концов я понял, что коды сканирования из showkey -s были общим фактором в проблемных случаях.

Вместо этого, если вы должны использовать showkey, используйте обычный showkey выход (без -s), чтобы найти текущий назначенный ключевой код для клавиши и работать в обратном направлении по таблице из getkeycodesчтобы узнать скан-код ключа. Если существует несколько кодов сканирования, сопоставленных с одним и тем же кодом клавиши, может потребоваться немного усилий и / или проб и ошибок, чтобы выработать правильный код сканирования для клавиши.

Или полагайтесь на другие источники информации о скан-коде, такие как atkbd регистрировать сообщения в dmesg вывод (используйте dmesg -w следовать dmesg выход), или коды сканирования, сообщаемые evtest если ваша система использует структуру устройства событий.

Другие вопросы по тегам