Настройка привязки скан-кодов в X Window

Итак, скан-коды мы получили, теперь нужно указать Х-серверу, что он  должен делать при  нажатии  этой клавиши,  то есть присвоить клавише  символьное  имя. Список символьных имен приведен в файле заголовков XF86keysym.h. По умолчанию заголовочные файлы Х-сервера в современных дистрибутивах не устанавливаются, поэтому необходимо установить пакет x11proto-core-dev, после чего файл XF86keysym.h появится   в каталоге /usr/include/ХИ. Или, как вариант, можно обратиться к GITсерверу с  исходными  кодами  на сайте freedesktop.org (http://cgit.freedesktop.org/ xorg/proto/x11proto/tree/XF86keysym.h). Смотрим:

$ cat /usr/include/Xll/XF86keysym.h

#define XF86XK_Back    0xl008FF26 /* Like back on a browser   */

#define XF86XK_Forward 0xl008FF27 /* Like forward on a browser */

#define XF86XK_Mail    0xl008FF19

И так далее. Если сравнить последнюю строку с выводом xev, то увидим, что значения совпадают  с клавишей с keycode 236 — keysym 0xl008ff19, XF86Mail (без суффикса ХК_). Список всех доступных значений в том виде, каком они должны использоваться, вы найдете в файле /usr/share/X11/XKeysymDB.

Составить свой вариант раскладки можно несколькими способами: создать описание своей клавиатуры  или использовать Xmodmap. Последний способ самый простой, поэтому о нем и будем говорить дальше. В домашнем каталоге пользователя создаем файл ~/.Xmodmap или используем общесистемный /etc/Xll/Xmodmap, в который и заносим все нужные значения.

$ gedit     Xmodmap

keycode 161 XF86Calculator

keycode 174 XF86AudioLowerVolume keycode 176 XF86AudioRaiseVolume keycode 162 XF8 6AudioPause

ПРИМЕЧАНИЕ

      Код клавиш можно заносить как в десятичном, так и шестнадцатеричном виде.

Как вы  понимаете, теперь мы можем фактически  построить свою раскладку клавиатуры.  Коды большинства  клавиш стандартизированы,  поэтому достаточно настроить реакцию на нажатие клавиши один раз, а в случае переустановки перенести файл в новую  систему.

ПРИМЕЧАНИЕ

Хотя использование ~/.Xmodmap и /etc/X11/Xmodmap является почти стандартным, в  некоторых дистрибутивах Linux могут быть свои особенности. Найти, откуда запускается нужная команда, можно, проанализировав вывод команды sudo grep -iR xmodmap /etc.

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

Настройка мультимедийных клавиш в консоли

В консоли  порядок настройки клавиш несколько отличается от графического режима. Главная особенность — клавишных команд в консоли не может быть больше 128, то есть следует выбирать значения от 0 до 127:

$ setkeycodes 0хес 118

Посмотреть свободные значения можно в файле текущей клавиатурной раскладки.

По умолчанию в  Linux Mint загружается файл /etc/console-setup/cached.kmap.gz.

ПРИМЕЧАНИЕ

В других дистрибутивах, базирующихся на Debian, это обычно /etc/console-setup/ boottime.kmap.gz.

Скорее всего, будут заняты все клавиши,  но часто не все  из  них действительно задействованы. Если после запуска проблем с клавишами нет, то заносим эту строку в один  из стартовых скриптов, например в /etc/init.d/rc.local.

Теперь осталось задать соответствие клавиши и выполняемого действия. Здесь уже простора для творчества даже больше, чем в X. В man keymaps (5) процедура установки соответствия keycode выглядит так:

{ plain | <cmodifier sequence> } keycode keynumber = keysym

Иными словами, можно указать так:

keycode 105 = Decr_Console

Таким образом, мы реализовали переключение консоли на одну назад при нажатии клавиши с кодом 105.

Теперь зададим переключение консоли на одну вперед при нажатии Alt и клавиши с кодом 106:

alt keycode 106 = Incr_Console

Но можно создавать и свои варианты, указывая команду в переменных:

keycode 120 = F100

string F100 = "/sbin/shutdown -h now\n"

Итак, при  нажатии  клавиши  с кодом 120 будет выполнено действие,  указанное в переменной F100, в нашем случае задано выключение компьютера. Вместо F100, естественно, можно использовать другое имя.

Чтобы не прописывать эти параметры непосредственно в файл /etc/console-setup/ cached.kmap.gz, лучше прописать нужную строку в /etc/init/console-setup.conf.

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

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

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

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