© 2021 WebHive

Как в Linux поменять местами клавиши Esc и Capslock

Будучи старым vim-истом давно уже слышал древние байки про замену местами клавиш Esc и CapsLock. Сам я до такого хардкора как-то не доходил, но вот решил попробовать.

Основная причина подобного извращения это то, что CapsLock используется сравнительно редко (ну или скажем честно — никогда), а расположен близко к домашней линии клавиш, что несомненно удобно с точки зрения перемещения пальцев при печати. В общем как говорится в старой рекламе «попробовав раз — ем и сейчас» — это оказалось действительно офигенно удобно — мизинец практически всегда расположен в районе CapsLock-а и таким образом нажатие Esc стало практически незаметным и машинальным, что для работы в Vim-е просто незаменимо.

Как же добиться такого счастья?

Собственно тут возможны варианты и казалось бы самым логичным было бы перемапить клавиши в самом Vim-е. Но в силу разных причин это является проблематичным, поэтому самым оптимальным вариантом является перемапливание клавиш средствами самой операционной системы.

Поэтому воспользуемся волшебной командой xmodmap примерно следующим образом:

1
2
$ xmodmap -e "remove Lock = Caps_Lock"
$ xmodmap -e "keycode 66 = Escape NoSymbol Escape"

Я всё-таки решил оставить оригинальный Esc на месте, т. к. временами руки сами машинально тянутся к нему, а вместо ожидаемого результата получаю какую-то ерунду, да и настройка эта применяется ко всем приложениям и оригинальный Esc в других программах мне пригодится.

Однако, чтобы эти значения не потерялись при перезагрузке нужно прописать их в файл ~/.xmodmap и соответственно засунуть автозагрузку этого файла в ~/.xinitrc.

1
2
3
$ cat ~/.xmodmap
remove Lock = Caps_Lock
keycode 66 = Escape NoSymbol Escape
1
2
3
$ cat ~/.xinitrc
...
[[ -f ~/.xmodmap ]] && xmodmap ~/.xmodmap

Блин — и конечно-же это нихрена не работает в GNOME. Я не стал ковырять системный GDM конфиг, чтобы заставить его грузить мой xmodmap и вообще не стал ковырять системные файлы — вместо этого сделал всё через программу gnome-tweak.

И только в таком варианте всё заработало как надо даже после перезагрузки. Ммда — похоже старые X-овые навыки становятся невостребованными.

Чё-то не удержался и разобрался таки как это работает. Собственно как и ожидалось это просто запись в гномовский реестр.

1
2
$ gsettings get org.gnome.desktop.input-sources xkb-options                                                                                            2.4.2  8.1.3
['caps:escape']

Так что если кому лень ковыряться с gnome-tweak-ом то ожно запихнуть напрямую в реестр:

1
$ gsettings set org.gnome.desktop.input-sources xkb-options "['caps:escape']"

Итого результатом стало повышение удобства работы в текстовом редакторе Vim.

Источники

Комментарии