xmodmap (Русский)

xmodmap - это утилита для изменения раскладки клавиш клавиатуры и мыши в Xorg.

Состояние перевода: На этой странице представлен перевод статьи xmodmap. Дата последней синхронизации: 20 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

xmodmap не относится к X keyboard extension (XKB), так как использует другие (pre-XKB) идеи на то, как коды клавиш обрабатываются в X. В целом, он рекомендуется только для простых задач. Смотрите X keyboard extension для продвинутой настройки раскладки.

Примечание:
  • Настройки xmodmap сбрасываются утилитой setxkbmap, которая не только изменяет алфавитно-цифровые клавиши, но и сбрасывает все остальные клавиши на значения по умолчанию (смотрите LQWiki:Configuring keyboards).
  • Из-за ограничений Xorg настройки xmodmap не применяются к подключенным устройствам автоматически. Если клавиатура добавлена в систему после применения пользовательской таблицы, её придётся применять снова.

Введение

В Xorg есть два типа значений клавиатуры: коды клавиш (keycodes) и символы клавиш (keysyms).

keycode
Код клавиши (keycode) - это числовое значение, получаемое ядром при нажатии клавиши клавиатуры или мыши.
keysym
Символ клавиши (keysym) - это значение, назначенное коду клавиши. Например, нажатие клавиши генерирует , которому назначен , которому в свою очередь назначен символ в таблице ASCII.
Символами клавиш (keysyms) управляет Xorg с помощью таблицы кодов клавиш (keycodes), определяющей пару keycode-keysym, которая называется таблицей назначений клавиш. Её можно увидеть, выполнив команду .

Установка

xmodmap можно установить с помощью пакета .

Если хотите, можете установить xkeycaps - это графический фронт-энд для xmodmap.

Таблица назначений клавиш

Чтобы отобразить текущую таблицу назначений клавиш, форматированную в выражения:

$ xmodmap -pke
[...]
keycode  57 = n N
[...]

После каждого кода клавиши идут символы клавиши, которые ему назначены. На примере выше видно, что коду клавиши назначен символ нижнего регистра , а символу верхнего регистра назначен код клавиши плюс .

Каждому столбцу символов клавиш в таблице соответствует определённая комбинация клавиш-модификаторов:

  1. ISO_Level3_Shift+Key

Не обязательно назначать все символы клавиши; чтобы не назначать их в конкретных столбцах, можете использовать значение NoSymbol.

Чтобы узнать какой код клавиши отвечает за нужную вам клавишу, смотрите статью Keyboard input (Русский)#Определение кодов клавиш в Xorg, в которой объясняется, как использовать утилиту xev.

Обратите внимание, что на xmodmap влияют настройки xkbd, поэтому все восемь keysym доступны для раскладки xkbd US(intl), но не для US по умолчанию (в ней отсутствует символ ralt_switch, определённый в level3). Чтобы все 8 keysym были доступны, необходимо настроить (intl) вариант клавиатуры. Выполните (пример для раскладки US) перед вызовом xmodmap для тестирования изменений в текущем сеансе X. Чтобы сделать это изменение постоянным, отредактируйте конфигурацию xorg или файл .xprofile или .xinitrc. Полное объяснение смотрите в разделе Конфигурация клавиатуры в Xorg#Настройка раскладки клавиатуры.

Изменение таблицы

Сохраним текущую таблицу назначений клавиш в файл (например, ):

$ xmodmap -pke > ~/.Xmodmap

Можете убрать строки для клавиш, которые вы не собираетесь менять. Прописав/изменив нужные значения клавишам, применим изменения:

$ xmodmap ~/.Xmodmap

Активация изменённой таблицы при загрузке

Если вы используете GDM, XDM или LightDM, нет необходимости выполнять . А если вы пользуетесь startx, внесите следующее содержимое в файл :

Другим вариантом является редактирование глобального скрипта автозапуска .

Попробовать изменения

Чтобы сделать временные изменения:

$ xmodmap -e "keycode  46 = l L l L lstroke Lstroke lstroke"
$ xmodmap -e "keysym a = e E"

Клавиши-модификаторы

xmodmap также умеет переопределять клавиши-модификаторы, например, можно "поменять местами" клавиши Control и .

Вывод текущей таблицы модификаторов:

$ xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x94)
mod3
mod4        Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  ISO_Level3_Shift (0x6c),  Mode_switch (0x85),  Mode_switch (0xcb)

Перед тем, как назначать клавишу-модификатор, её надо очистить. Это относится как к модификаторам, которые вы собираетесь назначить, так и к модификаторам на клавишах, которые вы собираетесь использовать. Например, если вы собираетесь назначить на клавишу A, а — на клавишу NumLock, вам нужно сначала очистить модификаторы для Caps_Lock и Num_Lock, затем назначить символы клавиш и, наконец, добавить модификаторы обратно.

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

Следующий пример изменяет CapsLock на Control и на CapsLock:

Клавиша Compose

Клавиша Compose позволяет вводить специальные знаки и символы, которых нет непосредственно на клавиатуре. Это особенно полезно при наборе акцетов для букв неанглийских языков. Например, при последовательном нажатии получается é. Некоторые символы требуют нажатия более двух клавиш после . Обычно на назначается клавиша-модификатор. Клавишу можно выбрать в настройках в большинстве сред рабочего стола, но эти опции не будут работать, если используется пользовательская таблица сопоставления клавиш, как описано в этой статье. Чтобы установить клавишу compose с помощью , используйте идентификатор . Например, для сопоставления правого alt (AltGr) с клавишей compose:

Код клавиши может быть другим в зависимости от клавиатуры.

Прокрутка в другую сторону

Иногда такую прокрутку называют естественной. Она похожа на поведение прокрутки на смартфонах. Добиться такого поведения можно с помощью xmodmap. Так как драйвер synaptics использует кнопки 4/5/6/7 для прокрутки вверх/вниз/влево/вправо, вы просто можете поменять порядок объявления кнопок в файле :

Теперь примените изменения:

$ xmodmap ~/.Xmodmap

Переназначение кнопок мыши

Левая, средняя и правая кнопки мыши соответствуют кнопкам 1, 2 и 3 соответственно в драйвере synaptics. Чтобы поменять местами левую и правую кнопки мыши, просто измените порядок их расположения в файле :

Не забудьте применить изменения:

$ xmodmap ~/.Xmodmap

Примеры

Вместо CapsLock Control

Простейший пример изменения CapsLock на Control.

~/.Xmodmap
clear lock
clear control
keycode 66 = Control_L
add control = Control_L Control_R

Вместо CapsLock Control, а вместо LeftControl Hyper

Некоторые пользователи ноутбуков предпочитают, чтобы CapsLock работал как Control. А клавиша может быть использоваться в качестве модификатора (дополнительный модификатор для emacs, openbox или i3).

Вместо Super_R Hyper_R

Пользователи, которые хотят иметь клавишу на полной раскладке клавиатуры, могут использовать правый в качестве .

~/.Xmodmap
remove  mod4 = Super_R
keycode  134 = Hyper_R
add     mod3 = Hyper_R

Переключение каждой цифровой клавиши N на Shift-N и наоборот для хорватской раскладки

Должен отлично работать и для раскладок, похожих на хорватский.

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

gollark: The workers could subcontract.
gollark: That would be fine.
gollark: What are we all defining as communism?
gollark: There exist nonfood resources.
gollark: This causes communist revolutions, which have very high torque, so the apioforms can rotate even against very strong fields.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.