xmodmap советы, трюки (перевод)

Перевод небольшой статьи о xmodmap, привязках клавиш, кодах клавиш, модификаторах и символьных наименования клавиш. Полезно для тех, кто хотел бы настроить клавиатуру под себя, включая даже медиа-клавиши.

Оригинал статьи тут

О xmodmap

Xmodmap используется для контроля соответствия между нажатыми клавишами и результатами которые вы получите после этого.
Некоторые примеры того, для чего можно использовать xmodmap:

  • Отключение и/или смена расположения клавиши caps-lock
  • Задание соответствий иноязычным и другим спецсимволам на клавиатуре
  • Включение “media” клавишь

Терминология

Для того чтобы получить результату описанные выше требуется преобразовывать KeyCodes в KeySyms и KeySyms в Модификаторы так что очень важно понять что xmodmap понимает под этой терминологией.

KeyCode

KeyCode это номер генерируемый вашей клавиатурой при нажатии на определенную клавишу. Например, кнопка пробела сгенерирует KeyCode = 128.

KeySym

KeySym это просто слово используемое для обозначения типа клавиши. Эта концепция очень важна, потому как позволяет программам не оперировать с кодами напрямую, а работать с клавиатурой по названиям клавишь.

Как отмечалось выше — большинство клавиатур генерирует код 128 когда вы нажимаете пробел, но но это может быть и не так на нестандартных клавиатурах, например может сгенерироваться KeyCode 64 при нажатии на пробел.
Вы конечно же пожелаете не заморачиваться с интерпретацией кода 64 как кода нажатия на пробел, дабы не переписывать своё приложение. Это легко сделать обозначив KeyCode 64 как KeySym “space”.

Модификатор

Модификатор, это специальная клавиша нажимаемая одновременно с другой клавишей и модифицирующая подаваемый клавиатурой код. Например, когда вы нажимаете кнопку A на клавиатуре, вы получаете кнопку  ‘a’ на экране. если же вы зажмете shift и нажмете A, вы увидите на экране символ ‘A’ – так как shift это Модификатор.

Начнем с обзора модификаторов и привязок KeySyms…

Модификаторы

Существует 8 модификаторов:

  • Shift
  • Lock
  • Control
  • Mod1
  • Mod2
  • Mod3
  • Mod4
  • Mod5

Xmodmap предаставляет несколько путей для изменений привязок KeySym для Модификаторов: clear, add, and remove.

Мой любимый пример — выключение caps lock:

$ xmodmap -e "clear Lock"

Эта команда отключает модификатор Lock так что ни одна клавиша теперь не сможет дать эффект caps lock. Класс!

Тепреь поменяем  клавишу caps lock на что-нибудь более полезное:
$ xmodmap -e "add Shift = Caps_Lock"

Так мы добавили KeySym “Caps_Lock” в список клавиш реализующих модификатор Shift. Другими словами, мы превратили caps lock клавишу в еще один shift.

Если вы передумали, вы можете вернуть всё как было:
$ xmodmap -e "remove Shift = Caps_Lock"

Этот пример противоположен предыдущему.

Назначение KeyCode’ов для KeySym

Итак, мы изучили как менять привязку модификаторов, теперь узнаем как нам заставить выполнять клавиши при нажатии то что мы хотим. Сначало вам нужно узнать keycode клавиши которую вы хотите изменить. Это можно сделать используя xev.

$ xev

После запуска xev, нажмите на клавишу и посмотрите на вывод полученный в терминале:

KeyPress event, serial 21, synthetic YES, window 0x800001,
root 0x40, subw 0x0, time 1539131, (69,8), root:(683,402),
state 0x0, keycode 63 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

Нас интересует третья линия. Вы видите слово keycode а далее число? В примере это 63.

Теперь мы можем назначит на клавишу символ который захотим.

$ xmodmap -e "keycode 63 = e E eacute Eacute"

Команда “keycode” привязывает KeyCode с определенным числом к KeySym’у. Порядок KeySym’ов важен и показывает в какой последовательности будут поступать KeySym.

  1. Одна клавиша нажата
  2. Клавиша нажата с модификатором Shift
  3. Клавиша нажата одна но с клавишей Mode_switch
  4. Клавиша нажата с Mode_switch И Shift

Mode_switchэто просто другой keysym и вы можете выбрать какая клавиша на клавиатуре будет отвечать за него:
$ xmodmap -e "keycode 64 = Mode_switch"

Лично я привязываю Mode_switch на свою клавишу AltGr. Сделать это вы можете используя специльную версию команды.
$ xmodmap -e "keycode Alt_R = Mode_switch"
Так мы просим xmodmap просмотреть какой/какие keycode(s) сейчас используются для KeySym Alt_R (правый ALT) и затем привязываем к ней Mode_switch.

Рассмотрим что же мы получили из примера выше, когда меняли привязку для keycode 64:

  • Нажата эта самая клавиша   –       нижний регистр ‘e’
  • С shift    —       верхний регистр ‘E’
  • С AltGr    — нижний регистр e-acute (используется например во французском языке)
  • С AltGr и shift – верхний регистр E-acute

 

Сохранение ваших привязок

Допустим, вы настроили всё что хотели. Как же сделать так, чтобы xmodmap применял ваши изменения каждый раз при запуске X. Чтобы сохранить всё это, просто сохраните все ваши привязки в файле (я сохраняю в ~/.xmodmap) и затем скажите xmodmap загружать их оттуда
$ xmodmap ~/.xmodmap
В идеале вы можете добавить это в ваш .xinitrc  чтобы команда приведенная выше выполнялась при запуске X.

Конец

Это лишь небольшое howto. Я надеюсь что оно поможет кому-нибудь чуть лучше понять работу xmodmap и избежать моих ошибок. Сейчас же, у меня есть клавиатура настроенная так как я хочу.

Полезные ссылки

Несколько ссылок о xmodmap.

http://www.xfree86.org/4.2.0/xmodmap.1.html
xmodmap man page

http://www.in-ulm.de/~mascheck/X11/xmodmap.html
Несколько подсказок

http://www.in-ulm.de/~mascheck/X11/Xmodmap.mapping
Очень подробный пример файла для привязок xmodmap

Mirivlad

Скромный труженик консоли и окошек.

Share
Published by
Mirivlad

Recent Posts

Как вернуть доступ к аккаунту VK (ВКонтакте)?

Восстановить доступ к странице ВКонтакте можно относительно просто. И для этого даже не потребуется помощь…

1 год ago

Реверс-инжиниринг электроники и ПО

Реверс инжиниринг электроники и программного обеспечения — увлекательная и важная дисциплина, играющая ключевую роль в…

3 года ago

Что лучше Apple iPhone 14 или iPhone 13: сравниваем модели

Рынок смартфонов не стоит на месте и каждый год пополняется новыми моделями. Компания Apple традиционно…

3 года ago

Как открыть интернет-магазин с нуля в 2026 году?

Запуск онлайн-бизнеса может показаться сложной задачей, но на самом деле этот процесс можно существенно упростить,…

3 года ago

Как проверить текст на уникальность?

Если Вы хотите продвинуть свой сайт в поисковых системах, одним из самых важных аспектов является…

3 года ago

ТОП лучших смартфонов Samsung 2026 года: рейтинг по цене и качеству

Корейская компания Samsung зарекомендовала себя на потребительском рынке как производитель флагманов, так и бюджетных смартфонов.…

3 года ago