Keyboard configuration in Xorg (Русский) - ArchWiki

# Keyboard configuration in Xorg (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Keyboard configuration in Xorg. Дата последней синхронизации: 28 августа 2018. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Ссылки по теме

- X keyboard extension
- Конфигурация клавиатуры в консоли
- Дополнительные клавиши
- Xorg (Русский)
- Keyboard shortcuts

Эта статья описывает основные настройки клавиатуры в Xorg. Для расширенных тем, таких как изменение раскладки клавиатуры или дополнительные сопоставления клавиш, смотрите статьи X keyboard extension или дополнительные клавиши соответственно.

Сервер Xorg использует клавиатурное расширение X (XKB) для определения раскладок клавиатуры. Опционально, xmodmap можно использовать для прямого доступа к внутренней раскладки клавиатуры, хотя это не рекомендуется для сложных задач. Также можно использовать localectl systemd для определения раскладки клавиатуры в сервере Xorg и виртуальной консоли.

Note: Параметры XKB могут быть переопределены инструментами, представленными некоторыми окружениями рабочего стола, такими как GNOME и KDE.

## Просмотр настроек клавиатуры

Вы можете использовать следующую команду, чтобы просмотреть настройки XKB:

    $ setxkbmap -print -verbose 10

    Setting verbose level to 10
    locale is C
    Applied rules from evdev:
    model:      evdev
    layout:     us
    options:    terminate:ctrl_alt_bksp
    Trying to build keymap using the following components:
    keycodes:   evdev+aliases(qwerty)
    types:      complete
    compat:     complete
    symbols:    pc+us+inet(evdev)+terminate(ctrl_alt_bksp)
    geometry:   pc(pc104)
    xkb_keymap {
            xkb_keycodes  { include "evdev+aliases(qwerty)" };
            xkb_types     { include "complete"      };
            xkb_compat    { include "complete"      };
            xkb_symbols   { include "pc+us+inet(evdev)+terminate(ctrl_alt_bksp)"    };
            xkb_geometry  { include "pc(pc104)"     };
    };

### Сторонние утилиты

Здесь приведены некоторые "неофициальные" утилиты, которые позволяют выводить специфичную информацию о используемой в настоящее время раскладке клавиатуры.

- xkb-switch-gitAUR:

    $ xkb-switch

    us

- xkblayout-stateAUR[ссылка недействительна: package not found]:

    $ xkblayout-state print "%s"

    de

## Настройка раскладки клавиатуры

This article or section needs expansion.

Reason: Udev также играет роль (например, при подключении клавиатуры), отменяя изменения setxkbmap (Discuss in Talk:Keyboard configuration in Xorg (Русский)#)

Раскладку клавиатуры можно настроить разными способами в Xorg. Вот объяснение используемых параметров:

- `XkbModel` устанавливает модель клавиатуры. Это влияет только на некоторые дополнительные клавиши. Для большиства клавиатур подходят модели `pc104` или `pc105`. Но, например, ноутбуки обычно имеют дополнительные клавиши, чтобы заставить их работать иногда достаточно только выбрать правильную модель клавиатуры.
- `XkbLayout` устанавливает раскладку клавиатуры. Несколько раскладок могут быть указаны в списке, разделенном запятыми, если, например, вам нужно быстро переключаться между ними.
- `XkbVariant` устанавливает специфичое расположение клавиш для раскладки. Например, вариант по умолчанию для `sk` - `qwertz`, но его можно изменить вручную на другой, например, `qwerty`.
- `XkbOptions` устанавливает некоторые дополнительные опции. Используется для указания клавиш для смены раскладки, уведомления светодиодом, режима compose и др. Смотрите раздел #Часто используемые опции XKB для примеров.

Примечание: Необходимо указывать варианты для каждой установленной раскладки. Если вам нужен стандартный вариант, укажите пустую строку, как вариант (запятая должна оставаться). Например, имеется первичная стандартная раскладка `us` и вторичная раскладка `us` с вариантом расположения клавиш `dvorak`, тогда укажите `us,us` как `XkbLayout` и `,dvorak` как `XkbVariant`.

Имя раскладки, как правило, состоиз из 2-буквенного кода страны. Чтобы посмотреть полный список моделей клавиатур, раскладок, вариантов и опций вместе с коротким описанием, откройте файл `/usr/share/X11/xkb/rules/base.lst`. Кроме того, вы можете использовать одну из следующих команд для просмотра раскладки и т.д., но без описания:

- `localectl list-x11-keymap-models`
- `localectl list-x11-keymap-layouts`
- `localectl list-x11-keymap-variants [layout]`
- `localectl list-x11-keymap-options`

Примеры в следующих подразделах будут делать одно и то же. Они устанавливают модель клавиатуры `pc105`, первичной раскладкой `us`, `ru` - вторичной раскладкой, вариант расположения клавиш `dvorak` для раскладки `us` и комбинацию клавиш `Alt+Shift` для переключения между раскладками. Для получения дополнительной информации смотрите xkeyboard-config(7).

### Через setxkbmap

setxkbmap настраивает раскладку клавиатуры только для текущей сессии X, но ее можно сделать постоянной в xinitrc или xprofile. Это переопределяет общесистемные настройки, указанные в #Через конфигурационные файлы X.

Используйте следующим образом (смотрите setxkbmap(1)):

    $ setxkbmap [-model xkb_model] [-layout xkb_layout] [-variant xkb_variant] [-option xkb_options]

Чтобы изменить раскладку введите (`-layout` - стандартный флаг):

    $ setxkbmap xkb_layout

Для нескольких настроек:

    $ setxkbmap -model pc105 -layout us,ru -variant dvorak, -option grp:alt_shift_toggle

### Через конфигурационные файлы X

Примечание: `xorg.conf` анализируется X-сервером при запуске. Чтобы применить изменения, перезапустите X.

Синтакс конфигурационных файлов X объяснен в Xorg (Русский)#Настройка. Этот способ создает постоянные общесистемные настройки.

Вот пример:

    /etc/X11/xorg.conf.d/00-keyboard.conf

    Section "InputClass"
            Identifier "system-keyboard"
            MatchIsKeyboard "on"
            Option "XkbLayout" "us,ru"
            Option "XkbModel" "pc105"
            Option "XkbVariant" "dvorak,"
            Option "XkbOptions" "grp:alt_shift_toggle"
    EndSection

#### С помощью localectl

Для удобства можно использовать инструмент localectl вместо ручного редактирования конфигурационных файлов X. Он сохраняет настройки в файл `/etc/X11/xorg.conf.d/00-keyboard.conf`, который не следует редактировать вручную, потому что localectl перепишет его при следующем запуске.

Используйте следующим образом:

    $ localectl [--no-convert] set-x11-keymap раскладка [модель [вариант [опции]]]

Чтобы установить модель, вариант или опции, нужно указать все эти поля, но их можно пропустить, передав пустую строку `""`. Если параметр `--no-convert` не передан, тогда указанная клавиатура преобразуется в ближайшую соответствующую раскладку для консоли и прописывается в настройках консоли в файле `vconsole.conf`. Для получения дополнительной информации смотрите localectl(1).

Чтобы создать файл `/etc/X11/xorg.conf.d/00-keyboard.conf`, как указано выше:

    $ localectl --no-convert set-x11-keymap us,ru pc105 dvorak, grp:alt_shift_toggle

## Часто используемые опции XKB

### Переключение раскладок клавиатуры

Чтобы иметь возможность легко переключать раскладки клавиатуры, сначала укажите несколько раскладок, между которыми вы хотите переключиться (первая из них будет по умолчанию). Затем укажите клавишу (или комбинацию клавиш), которую будете использовать для переключения. Например, чтобы переключиться между US и Swedish раскладками с помощью клавиши `CapsLock`, используйте `us,se` как аргумент `XkbLayout` и `grp:caps_toggle` как аргумент `XkbOptions`.

Вы можете использовать другие комбинации клавиш, кроме `CapsLock`, они перечислены в `/usr/share/X11/xkb/rules/base.lst`, начинаясь с `grp:` и заканчиваясь на `toggle`. Чтобы получить весь список доступных параметров, запустите следующую команду:

    $ grep "grp:.*toggle" /usr/share/X11/xkb/rules/base.lst

### Завершение Xorg по сочетанию клавиш Ctrl+Alt+Backspace

По умолчанию комбинация клавиш `Ctrl+Alt+Backspace` отключена. Вы можете включить ее установив `terminate:ctrl_alt_bksp` для `XkbOptions`. Это также можно сделать, привязав клавишу к `Terminate_Server` в `xmodmap` (который отменяет любую существующую настройку `XkbOptions`). Для того, чтобы любой из этих методов работал, необходимо также установить `DontZap` в "off" в `ServerFlags`; однако, по крайней мере, с версии R6.8.0 (2004 год) [1] это значение по умолчанию.

### Перестановка Caps Lock и Левого Control

Чтобы поменять местами Caps Lock и Левый Control, добавьте `ctrl:swapcaps` в `XkbOptions`. Запустите следующую команду для просмотра похожих параметров вместе с их описанием:

    $ grep -E "(ctrl|caps):" /usr/share/X11/xkb/rules/base.lst

### Включение кнопок мышки

Кнопки мыши отключены по умолчанию и должны быть включены вручную добавлением `keypad:pointerkeys` в `XkbOptions`. Это создаст комбинацию клавиш `Shift+NumLock` для включения/выключения кнопок мыши.

Смотрите также X keyboard extension#Mouse control для расширенной настройки.

### Настройка клавиши Compose

Хотя обычно ее нет на традиционных клавиатурах, однако клавишу Compose можно настроить на существующую.

Клавиша `Compose` начинает последовательность нажатия клавиш, которая включает (обычно два) дополнительных нажатия клавиш. Обычно используется либо для ввода символов на языке, для которого не была предназначена клавиатура, либо для других менее используемых символов, которые не покрываются модификатором `AltGr`. Например, нажатие `Compose` `'` `e` производит é, или `Compose` `-` `-` создает "em dash": `—`.

Хотя еще несколько эксцентричных клавиатур имеют клавишу `Compose`, ее работоспособность обычно заключается в замене уже существующей клавиши на нее. Например, чтобы сделать клавишу `Menu` клавишей `Compose`, используйте конфигурацию окружения рабочего стола или пропишите `compose:menu` в `XkbOptions` (или используйте setxkbmap: `setxkbmap -option compose:menu`). Разрешенные клавиши для подстановки определены в `/usr/share/X11/xkb/rules/base.lst`:

    $ grep "compose:" /usr/share/X11/xkb/rules/base.lst

Если желаемое соответствие не найдено в этом файле, альтернативой является использование xmodmap для сопоставления нужной клавиши с keysym `Multi_key`, которая работает как клавиша compose по умолчанию (обратите внимание, что настройки xmodmap сбрасываются setxkbmap).

#### Сочетания клавиш

Комбинация по умолчанию для клавиши compose зависит от локали, установленной для этого сеанса и находящейся в `/usr/share/X11/locale/используемая_локаль/Compose`, где `используемая_локаль` для примера `en_US.UTF-8`.

Вы можете определить собственную комбинацию клавиш compose, скопировав стандартный файл в `~/.XCompose` и отредактировав его. Клавиша compose работает с любыми из тысяц действительных символов Unicode, включая те, которые находятся за основной многоязычной плоскостью (Basic Multilingual Plane). Взгляните на справочную страницу (man) Compose(5), в которой объясняется формат файлов XCompose.

Однако GTK не использует XIM по умолчанию и поэтому не следует за клавишами `~/.XCompose`. Это можно устранить, заставив GTK использовать XIM, добавлением `export GTK_IM_MODULE=xim` и/или `export XMODIFIERS="@im=none"` в `~/.xprofile`.

Совет: XIM очень старый, вам может повезти с другими методами ввода: SCIM, UIM, IBus и т.д. Для получения дополнительной информации смотрите Localization#Input methods.
Примечание: XIM предотвратит вставку символов Unicode с комбинацией `Ctrl+Shift+u`.

### Значки валют на других кнопках

Большинство европейских клавиатур имеют знак Euro (€), напечатанный на клавише `5`. Например, чтобы получить доступ к нему с помощью `Alt+5`, используйте параметры `lv3:lalt_switch` и `eurosign:5`.

Знак рупии (₹) можно использовать также с `rupeesign:4`.

### Переключение состояния клавиши Caps Lock сразу после нажатия

Те, кто предпочитает вводить заглавные буквы с помощью клавиши Caps Lock, могут испытывать небольшую задержку при переключении состояния Caps Lock, что приводит к двум или более заглавными буквами (например, THe, ARch LInux). Это поведение происходит от печатных машин.

Некоторые более популярные операционные системы удалили это поведение, либо добровольно (это может сбить с толку некоторых), либо по ошибке, однако это вопрос предпочтения. Отчеты об ошибках были отправлены на баг-трекер X-сервера, поскольку в настоящее время нет простого способа переключиться на поведение, представленное другими операционными системами. Для тех, кто хотел бы следить за этой проблемой, отчеты об ошибках и последний рабочий прогресс можно найти по адресу [2] и [3].

#### Временное решение

Сначала, экспортируйте настройки клавиатуры в файл:

    $ xkbcomp -xkb $DISPLAY xkbmap

В файле xkbmap найдите раздел Caps Lock, который начинается с key <CAPS>:

     key <CAPS> {         [       Caps_Lock ] };

и замените весь раздел следующим кодом:

    key <CAPS> {
        repeat=no,
        type[group1]="ALPHABETIC",
        symbols[group1]=[ Caps_Lock, Caps_Lock],
        actions[group1]=[ LockMods(modifiers=Lock), Private(type=3,data[0]=1,data[1]=3,data[2]=3)]
    };

Сохраните и перезагрузите настройки клавиатуры:

    $ xkbcomp -w 0 xkbmap $DISPLAY

Подумайте о том, чтобы запустить службу после запуска X, поскольку эти настройки не выдерживают перезагрузки системы.

## Регулировка задержки и скорости автоповтора

Задержка автоповтора означает количество времени (обычно в милисекундах), за которое необходимо нажать и удерживать клавишу для начала повторного процесса. После запуска повторяющегося процесса символ будет повторяться с определенной частотой (обычно заданной в Гц), указанной скоростью автоповтора. Обратите внимание, что эти настройки настраиваются отдельно для Xorg и для виртуальной консоли.

### Через xset

Инструмент xset может быть использован для настройки скорости и задержки автоповтора для активного X-сервера, но определенные действия во время его работы могут привести к тому, что он сбросит эти изменения и вернется к настройкам по умолчанию.

Использование:

    $ xset r rate задержка [скорость]

Например, чтобы установить задержку автоповтора в 200 мс и скорость автоповтора в 30 Гц, используйте следующую команду (используйте xinitrc, чтобы сделать эти настройки постоянными):

    $ xset r rate 200 30

Ввод команды без указания задержки и скорости автоповтора приведет к сбросу значений до их соответствующих значений по умолчанию; задержка 660 мс и скорость 25 Гц:

    $ xset r rate

### Через параметры запуска XServer

Более проверенный способ установить задержку и скорость автоповтора - сделать их настройками по умолчанию, передав нужные настройки X-серверу при его запуске, используя следующие параметры:

- `-ardelay милисекунды` - устанавливает задержку автоповтора (длительность в миллисекундах удержания клавиши нажатой до начала автоповтора).
- `-arinterval милисекунды` - устанавливает интервал автоповтора (длительность в миллисекундах, которая должна пройти между нажатиями, генерируемыми автоповтором).

Для получения полного списка параметров X-сервера смотрите Xserver(1) и обратитесь к своему экранному менеджеру для получения информации о том, как передать эти параметры.

## Горячие клавиши (Keybinding)

This article or section is a candidate for merging with Keyboard shortcuts#User customization.

Notes: Существует общая страница для темы. (Discuss in Talk:Keyboard configuration in Xorg (Русский)#)

Когда мы находимся в графическом окружение, мы можем захотеть выполнить команду при нажатии определенной комбинации клавиш (то есть привязать команду к keysym). Существует несколько способов сделать это:

- Самый портативный способ. Использование инструментов низкого уровня, таких как acpid. Не все клавиши поддерживаются, но конфигурация в унифицированном виде возможна для клавиш клавиатуры, подключения адаптера питания и даже для подключения наушников (un). Также трудно запускать программы внутри X сеанса правильно. Not all keys are supported, but configuration in uniform way is possible for keyboard keys, power adapter connection and even headphone jack (un)plugging events. It is also difficult to run programs inside X session correctly.
- Универсальный способ. Использование утилит Xorg (например, xbindkeys) и, в конечном итоге, инструментов вашего окружения рабочего стола или оконного менеджера.
- Более быстрый способ. Использование сторонних программ, где все можно сделать в GUI, таких как Gnome Control Center.

### Сторонние инструменты

#### sxhkd

Простой демон X hotkey с мощным и компактным синтаксисом конфигурации. Для получения дополнительной информации смотрите sxhkd.

#### actkbd

С домашней страницы actkbd:

  actkbdAUR (доступно в AUR) - простой демон, который связывает действия с событиями клавиатуры. It recognises key combinations and can handle press, repeat and release events. В настоящее время он поддерживает только интерфейс linux-2.6 evdev. Он использует текстовый файл конфигурации, который содержит все привязки.

Образец конфигурации и руководство по настройке можно найти здесь.

#### xbindkeys

xbindkeys позволяет расширенное сопоставление клавиш с действиями независимо от окружения рабочего стола.

Совет: Если вы находите `xbindkeys` сложным в использование, попробуйте графический менеджер xbindkeys_config-gtk2AUR из AUR.

## Смотрите также

- Руководство Madduck по расширению XKB[dead link 2018-06-01]

Categories:

- Русский
- X server (Русский)
- Keyboard configuration (Русский)

Hidden categories:

- Pages with broken package links
- Pages or sections flagged with Template:Expansion
- Pages or sections flagged with Template:Merge
- Pages with dead links