Extra keyboard keys in Xorg (Русский)
Общие сведения о том, как назначать различные действия дополнительным клавишам клавиатуры в Xorg
Введение
Внутри графического окружения может появиться необходимость печати специального символа или выполнения определенной команды. Есть несколько способов реализации такой возможности, они и будут рассмотрены в этом HOWTO.
Присваивание кодов клавиш символам
Введение
В графическом режиме наиболее традиционным и правильным путем присваивания клавишам нужных кодов, является использование Xmodmap. Xmodmap, это эквивалент loadkeys: он использует файл с некоторыми директивами. Как и loadkeys, Xmodmap можно применить для изменения многих аспектов поведения вашей клавиатуры (например, модификаторов и т.д.), но эти аспекты выходят за рамки темы данной статьи. Единственный тип применения, который будет здесь рассмотрен, заключается в сопоставлении в соответствие X keycode и keysym. xmodmap входит в состав пакета xorg-server-utils.
# pacman -S xorg-server-utils
Шаг 1: создание файла для Xmodmap
В этом файле, необходимо перечислить keycode директив, соблюдая следующий синтаксис:
keycode <Xkeycode> = <keysym>
Список keysyms для X можно найти в /usr/include/X11/keysymdef.h
. В большинстве случаев они интуитивно понятны. Будем считать, что 239 это X keycode для моей горячей клавиши. Для присваивания ему литерала 'e', следует написать следующую директиву:
keycode 239 = e
Для получения на выходе символа американской валюты, следует написать следующую директиву::
keycode 239 = dollar
Этот способ также можно использовать для присваивания функций мультимедийным клавишам. Специальные функции можно найти в /usr/include/X11/XF86keysym.h
.
Пример ~/.Xmodmap
:
keycode 160 = XF86AudioMute keycode 176 = XF86AudioRaiseVolume keycode 174 = XF86AudioLowerVolume
Такие мультимедиа программы как Rhythmbox и Exaile рассчитаны на работу с клавишами заданными в XF86 Symbols out-of-the-box, без необходимости настройки сторонними приложениями.
Шаг 2: Тестирование
Для проверки запустить xmodmap с созданным файлом:
$ xmodmap ~/.Xmodmap
Шаг 3: Постоянное использование
Очевидно, что это будет работать только для текущей сессии X, для постоянного применения используйте xprofile.
Присваивание кодов клавиш действиям
Использование xbindkeys
xbindkeys (доступен в репозитории extra) позволяет назначать keycodes клавишам независимо от используемого окружения рабочего стола (Desktop Environment). В AUR можно найти GUI-оболочку xbindkeys_config.
Использование actkbd
Из actkbd home page:
actkbd (доступен в AUR) это простой демон, который связывает определенные действия с сигналами с клавиатуры. Он получает комбинации клавиш и обрабатывает события при нажатии, повторе и отпускании. В настоящее время обеспечена поддержка только linux-2.6 evdev interface. Все необходимые привязки к комбинациям клавиш описываются в текстовом конфигурационном файле.
Использование инструментов окружения рабочего стола
Gnome
В Gnome Control Center есть все механизмы для управления доплнительными комбинациями клавиш. Фактически, он может обработать любой сканкод и сопоставить его любой клавише, которую видит ядро.
KDE
Сочетания клавиш можно настроить в Параметры системы -> Комбинации клавиш и росчерки.
Xfce4
Сочетания клавиш можно изменить в Настройках Клавиатуры (Keyboard Settings), которой для работы требуется xfce4-keyboard-settings
.
Openbox
Горячие клавиши и действия настраиваются в секции keyboard вашего файла ~/.config/openbox/rc.xml
. Пример, настройки мультимедийной клавиши уменьшения громкости:
<keybind key="XF86AudioLowerVolume"> <action name="Execute"> <execute>amixer set Master 5%- unmute</execute> </action> </keybind>
Для получения дополнительной информации, пожалуйста посетите urukrama's Openbox Guide или Openbox Wiki.
PekWM
Настройка клавиш в PekWM осуществляется путем редактирования файла ~/.pekwm/keys
. Например, добавление следующей строки в нижнюю часть секции Global, позволит уменьшать громкость с помощью мультимедийных клавиш:
KeyPress = "XF86AudioLowerVolume" { Actions = "exec amixer set Master 5- unmute &" }