Extra Keyboard Keys in Xorg (Русский)

From ArchWiki
Jump to: navigation, search
Summary
Общие сведения о том, как назначать различные действия дополнительным клавишам клавиатуры в Xorg.
Related
Xorg
Xmodmap
Extra Keyboard Keys
Extra Keyboard Keys in Console

Contents

Введение

Внутри графического окружения может появиться необходимость печати специального символа или выполнения определенной команды. Есть несколько способов реализации такой возможности, они и будут рассмотрены в этом HOWTO.

Note: Предполагается, что уже известны коды клавиш для требуемых комбинаций. Если коды не известны, то следует прочитать статью Extra Keyboard Keys, где обьясняется, как их получить.

Присваивание кодов клавиш символам

Введение

В графическом режиме наиболее традиционным и правильным путем присваивания клавишам нужных кодов, является использование 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 &" }