Если не помогло

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

ПРИМЕЧАНИЕ

Если материал покажется вам сложным, можете пропустить эту часть и вернуться при необходимости.

Ядро  и Х-сервер оперируют скан-кодами, которые считываются при нажатии клавиш, то есть, по сути, им все равно, что на них написано. Причем Х-сервер вначале считывает таблицу кодов клавиш ядра, а затем код клавиши привязывается к собственной таблице кодов. Поэтому в Linux необходимо отдельно настраивать реакцию на нажатие кнопок в  консоли  (на эмуляторе) и  в  X Window. Чтобы узнать код клавиши, следует использовать  утилиту xev, входящую в состав Х-сервера. Запускаем ее в окне терминала, появится окно Event Tester, затем последовательно нажимаем клавиши, запоминая  выдаваемый  код (рис. 3.24):

$ xev

KeyRelease event, serial 31, synthetic NO, window 0x3e00001, root 0x67, subw 0x0, time 27 9734 67 6,  (311 , 61 1 ),

root:(1104,687),

state 0x2000, keycode 236 (keysym 0xl008ffl9,  XF86Mail), same_screen YES,

XLookupString gives 0 bytes: XFilterEvent returns: False

И так далее.

Информации будет выдано много, так как будет отслеживаться каждое движение мыши  при  проходе над окном Event Tester. Клавишу описывает блок KeyRelease, в частности  значения keycode как  раз и  являются  скан-кодом, который мы хотим узнать. В приведенном  примере  нажата клавиша с кодом 236, которой соответствует  код клавиши  для  Х-сервера, указанный в  keysym, и  символьное обозначение клавиши  действия  XF86Mail (по умолчанию запускает почтовый клиент).

Рис. 3.24. Получаем скан-код клавиши

Возможна ситуация, когда клавиша нажимается,  но ее скан-код не выдается. Это означает то, что ядро не может найти скан-код, привязанный нажатой клавише, такая ситуация сегодня очень редка, но всякое в жизни бывает. Если такое все-таки произошло,  ищем в выводе команды dmesg следующую строку:

Use `setkeycodes 0xec <keycode>´ to make it known.

Система предлагает принудительно  установить скан-код клавиши  при  помощи команды setkeycodes . Значение keycod e выбрать очень просто, достаточно лишь перевести полученную цифру  в десятичное число (большинство калькуляторов это умеют) и добавить число 128. В нашем примере 0хес=236, то есть получаем сканкод 364. Список задействованных и незадействованных скан-кодов можно просмотреть, запустив в консоли утилиту getkeycodes или dumpkeys. Если вывод команды

$ getkeycodes | grep <код клавиши>

ничего не дал, значит, этот код можно смело использовать.

В консоли программа xev не работает, чтобы узнать скан-код, выдаваемый ядром, следует использовать  утилиты showkey либо getkeycodes:

$ showkey

нажмите любую клавишу (программа завершится через 10 сек после последнего нажатия)…

0хе0 0x6с 0хе0 0хес

Первые две цифры соответствуют  нажатой клавише, вторые — состоянию, когда она отпущена.

Источник: Яремчук С. А.  Linux Mint на 100 %. — СПб.: Питер, 2011. — 240 е.: ил. — (Серия «На 100 %»).

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий