Довольно часто я натыкался в сети на информацию о том, что переключения раскладки клавиатуры по ctrl+shift
или shift+alt
это далеко не самый удобный вариант. А предлагают использовать для этого дела caps_lock
. Мне эта затея казалась весьма разумной, но переучиваться было лень. Да и оказываясь за бортом любого другого компьютера, ты оказываешься в очень не привычной ситуации.
Но в очередной раз переустановив себе LinuxMint
, я столкнулся с тем, что передо мною снова стоит вопрос неудобства ctrl+shift
в этих наших линуксах. Суть в том, что есть большая разница в том, какая клавиша когда была отжата… По факту в 80% случаев у меня переключение попростую не срабатывало просто потому, что я не ту клавишу раньше отпустил. Поискав, в очередной раз решение, я его не нашёл. Ну и решил, что настало время переучиваться на caps_lock
. Всё равно смысла в этой клавиши я не вижу никакого.
Переключился и пользуюсь уже второй месяц. Оказалось действительно удобно. Привыкание прошло довольно быстро, недели за две. Но увы, осталась 1 проблема. Дело в том, что когда быстро набираешь тексты, часто сталкиваешься с тем, что нажиммаешь caps_lock
с зажатой клавишей shift
, а это, оказывается, оставленная на резерв старая функциональность caps_lock
-а (печатать ВОТ ТАКИМ регистром). Отключается точно также ― с шифтом. Нафиг нужно мне такое счастье… Сразу сбивает рабочий настрой, сидеть всё переправлять.
Порывшись в сети я не нашёл готовых решений. Спросив на lor
-е, я, в коем веке, получил нормальный ответ… Сказали в какую сторону копать. Раскопал и таки получилось. Теперь у меня capslock + shift
работает точно так же как и просто capslock
, т.е. тоже меняет раскладку клавиатуры. Сделать это из диалога настроек клавиатуры, оказалось невозможным. Ниже будет ясно почему.
За работу клавиатуры, по всей видимости, отвечает некий xkb
. Именно его настройки изменяются в настроках «Клавиатуры
». Настройки расположены по адресу /usr/share/X11/xkb/
. В поддиректории rules
лежат непосредственно сами правила. Интересующее нас правило называется grp:caps_toggle
. Но правило ссылается на уже готовый символ. Выглядит это так:
grp:caps_toggle = +capslock(grouplock)
Как оказалось, +capslock
это указание на то, из какого файла взять сам symbol. В данном случае из /usr/share/X11/xkb/symbols/capslock
. А вот grouplock
это уже непосредственно название самого символа. Вот его код:
partial hidden modifier_keys xkb_symbols "grouplock" { replace key <CAPS> { [ ISO_Next_Group, Caps_Lock ] }; };
partial
, hidden
, modifier_keys
― это всё модификаторы символа. Подробнее о них можно прочесть здесь. Внутри фигурных кавычек лежат настройки символа. В нашем случае CAPS
ребиндится на ISO_Next_Group
и на самого себя (Caps_Lock
). Суть в том, что если в квадратных скобках указано два значения, то первое доступно без shift
-а, а второе с ним. Если же указано всего 1 значение, то оно будет использоваться во всех вариантах. Собственно достаточно поменять код на:
replace key <CAPS> { [ ISO_Next_Group ] };
, после чего пощёлкать в том самом диалоге Клавиатура
что-нибудь (чтобы сбросить кеш), как мы получаем, то что хотели. Теперь по shift + caps_lock
тоже меняется раскладка.