Переключение языковой раскладки по Caps Lock в новых версиях Ubuntu (18.04, 18.10, 19.04, 19.10…)

  •   22.08.2019
  •   1 комментарий
  •   Ubuntu

Много лет я использовал в Linux клавишу Caps Lock для переключения раскладки. И с этим не было проблем, пока я не решил обновиться до новой Ubuntu 19.04, заодно сменив дефолтную оболочку. Здесь назначить Caps Lock – задача нетривиальная. Насколько я знаю, в Ubuntu 18.04 – тоже. То есть статья пригодится пользователям Ubuntu 18.04 и новее.

Переключение языковой раскладки по Caps Lock в новых версиях Ubuntu (18.04, 18.10, 19.04...)

Я использую в качестве графической оболочки Budgie, но в Gnome Shell наблюдается та же проблема. Вообще, настройки горячих клавиш в обоих системах одинаковые, даже диалоговое окно используется одно и то же, так что статья актуальна для обоих оболочек.

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

Смена раскладки в диалоговом окне Ubuntu

К сожалению, здесь ничего не выходит. Ну да ничего, мы ведь знаем о существовании “dconf-editor”. Если он не установлен, то это можно исправить командой в консоли:

sudo apt install dconf-editor

Запускаем программу после установки и переходим в раздел / org / gnome / desktop / wm / keybindings, в котором задаем нужные значения для параметров switch-input-source и switch-input-source-backward:

Смена раскладки в dconf-editor

Как видно на скриншоте выше, я задал этим двум параметрам соответственно следующие значения:

['Caps_Lock', '<Super>space', 'XF86Keyboard']

…и

['<Shift>Caps_Lock', '<Shift><Super>space', '<Shift>XF86Keyboard']

Я приписал новые значения к дефолтным, но вы можете оставить только новые, удалив дефолтные, то есть так:

['Caps_Lock']

…и так:

['<Shift>Caps_Lock']

И даже в стандартном диалоговом окне теперь отображаются правильные комбинации:

Индикация раскладки в окне Ubuntu

Казалось бы, все должно быть хорошо, но нет. Вернее, переключение раскладки теперь работает, с этим все в порядке. Но одновременно, вместе с ним продолжает работать непосредственный функционал клавиши Caps Lock, то есть перевод символов в верхний регистр. Естественно, такое положение вещей нас не устраивает, будем исправлять.

Как это можно исправить? Есть варианты отключения клавиши Caps Lock или ее переназначение на другие клавиши, но эти варианты нас не устраивают, поскольку тогда наши комбинации для переключения раскладки вообще перестанут работать. Поэтому нужно постараться отключить функционал перевода в верхний регистр, при этом не отключая и не переназначая саму клавишу. Шел я к этому решению сквозь дебри англоязычных форумов и мануалов довольно долго, но в конце концов решение было найдено. Причем не в мануалах, а проверенным “методом тыка”. Поможет нам консольная утилита “xmodmap” (вроде установлена в Ubuntu по дефолту, но если у вас ее нет – установите).

Итак, волшебная команда в консоли, которая делает то, что нам нужно (то есть отключает функционал капслока, при этом не отключая саму клавишу):

xmodmap -e 'keycode  66 = NoSymbol Caps_Lock'

Естественно, если вы просто введете эту команду в консоли, то она будет работать ровно до перезагрузки. Чтобы она работала всегда – нужно добавить ее в автозагрузку. Сделать это можно разными способами, я выбрал способ добавления этой строки в файл “.profile” в корне домашней папки пользователя (если такого файла нет – создайте его).

Собственно, на этом все. Надеюсь, эта заметка сильно сэкономит кому-то время на поиск решения.

Update (октябрь 2019):

Время идет, а проблема остается. В Ubuntu 19.10 все еще актуальны те же инструкции.


Оставить комментарий

Один комментарий на «“Переключение языковой раскладки по Caps Lock в новых версиях Ubuntu (18.04, 18.10, 19.04, 19.10…)”»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *