arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
135 lines (82 loc) • 9.83 kB
Markdown
Общие сведения о том, как назначать различные действия дополнительным клавишам клавиатуры в [Xorg](/index.php/Xorg "Xorg")
## Contents
* [1 Введение](#.D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5)
* [2 Присваивание кодов клавиш символам](#.D0.9F.D1.80.D0.B8.D1.81.D0.B2.D0.B0.D0.B8.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BA.D0.BE.D0.B4.D0.BE.D0.B2_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88_.D1.81.D0.B8.D0.BC.D0.B2.D0.BE.D0.BB.D0.B0.D0.BC)
* [2.1 Введение](#.D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5_2)
* [2.2 Шаг 1: создание файла для Xmodmap](#.D0.A8.D0.B0.D0.B3_1:_.D1.81.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D1.84.D0.B0.D0.B9.D0.BB.D0.B0_.D0.B4.D0.BB.D1.8F_Xmodmap)
* [2.3 Шаг 2: Тестирование](#.D0.A8.D0.B0.D0.B3_2:_.D0.A2.D0.B5.D1.81.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5)
* [2.4 Шаг 3: Постоянное использование](#.D0.A8.D0.B0.D0.B3_3:_.D0.9F.D0.BE.D1.81.D1.82.D0.BE.D1.8F.D0.BD.D0.BD.D0.BE.D0.B5_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5)
* [3 Присваивание кодов клавиш действиям](#.D0.9F.D1.80.D0.B8.D1.81.D0.B2.D0.B0.D0.B8.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BA.D0.BE.D0.B4.D0.BE.D0.B2_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88_.D0.B4.D0.B5.D0.B9.D1.81.D1.82.D0.B2.D0.B8.D1.8F.D0.BC)
* [3.1 Использование xbindkeys](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_xbindkeys)
* [3.2 Использование actkbd](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_actkbd)
* [3.3 Использование инструментов окружения рабочего стола](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B8.D0.BD.D1.81.D1.82.D1.80.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D0.BE.D0.B2_.D0.BE.D0.BA.D1.80.D1.83.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.87.D0.B5.D0.B3.D0.BE_.D1.81.D1.82.D0.BE.D0.BB.D0.B0)
* [3.3.1 Gnome](#Gnome)
* [3.3.2 KDE](#KDE)
* [3.3.3 Xfce4](#Xfce4)
* [3.3.4 Openbox](#Openbox)
* [3.3.5 PekWM](#PekWM)
# Введение
Внутри графического окружения может появиться необходимость печати специального символа или выполнения определенной команды. Есть несколько способов реализации такой возможности, они и будут рассмотрены в этом HOWTO.
**Примечание:** Предполагается, что уже известны коды клавиш для требуемых комбинаций. Если коды не известны, то следует прочитать статью [Extra keyboard keys](/index.php/Extra_keyboard_keys_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "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](/index.php/Xprofile_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Xprofile (Русский)").
# Присваивание кодов клавиш действиям
## Использование xbindkeys
*[xbindkeys](/index.php/Xbindkeys "Xbindkeys")* (доступен в репозитории extra) позволяет назначать keycodes клавишам независимо от используемого окружения рабочего стола (Desktop Environment). В [AUR](/index.php/Arch_User_Repository_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Arch User Repository (Русский)") можно найти GUI-оболочку *xbindkeys_config*.
## Использование actkbd
Из [actkbd home page](http://users.softlab.ece.ntua.gr/~thkala/projects/actkbd/):
> **actkbd** (доступен [в AUR](https://aur.archlinux.org/packages.php?ID=8056)) это простой демон, который связывает определенные действия с сигналами с клавиатуры. Он получает комбинации клавиш и обрабатывает события при нажатии, повторе и отпускании. В настоящее время обеспечена поддержка только 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](http://urukrama.wordpress.com/openbox-guide/#Key_mouse) или [Openbox Wiki](http://openbox.org/wiki/Help:Actions).
### PekWM
Настройка клавиш в PekWM осуществляется путем редактирования файла `~/.pekwm/keys`. Например, добавление следующей строки в нижнюю часть секции Global, позволит уменьшать громкость с помощью мультимедийных клавиш:
```
KeyPress = "XF86AudioLowerVolume" { Actions = "exec amixer set Master 5- unmute &" }
```