# Extra keyboard keys in Xorg (Русский)

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Общие сведения о том, как назначать различные действия дополнительным клавишам клавиатуры в Xorg

# Введение

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

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

Categories:

- Русский
- Input devices (Русский)
- X server (Русский)