1. Постоянное переключение - Caps Lock. (Обычная функция клавиши доступна по "Shift + Caps Lock" - хоть лично мне она не нужна. )
2. Временное переключение - правый Alt. (Работает как Shift для заглавных букв.) Позволяет крайне легко и быстро набирать небольшие вставки на противоположной раскладке т.к. нажимается большим пальцем и не мешает достать практически куда угодно остальными. Скажем вот такую стрелку: -> я могу набрать не переключаясь и не теряя скорость и ритм. Или такой вот смайлик: {^:^}
В общем, все хорошо, и просто замечательно... пока у вас лишь два языка. Но если в системе активно используется больше - начинаются проблемы, т.к. правый Alt начинает себя вести гораздо менее предсказуемо. Наконец (лень - двигатель прогресса!) мне надоело править настройки языков в зависимости от того, какой мне нужен чаще сегодня, и я таки нашел глобальное решение. Итак, теперь у меня в дополнение к вышеописанному есть две комбинации, переключающие ПАРЫ языков: Win+R включает пару английский-русский, а Win+U - английский-украинский. Т.к. переходить между русским и украинским нужно достаточно редко, это скорее глобальное переключение, раз на задачу. А вот внутри пары - по вышеописанной удобной схеме.
Как достичь - через ручные манипуляции с xkb. Зато метод универсален, и не требует ковыряния в системных файлах конфигурации (пишем свои собственные), и не цепляет других пользователей (личная настройка), и использует только штатные средства - никакого дополнительного софта, т.е. не зависим от внешних программ, и можем повторить на любом линуксе. Что очень важно, когда речь касается долговременных привычек влияющих на удобство повседневной работы. (Кто менял привычную клавиатуру на другую, с другой формой части клавиш - тот меня понимает )
0) Если нету - создаем каталог где будут лежать личные исполняемые скрипты. У меня это ~/bin
1) Заводим вот такие два файла:
layout-ru.xkb
Код: Выделить всё
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete+ledcaps(group_lock)" };
xkb_symbols { include "pc+us+ru:2+inet(evdev)+group(switch)+group(caps_toggle)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
layout-ua.xkb
Код: Выделить всё
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete+ledcaps(group_lock)" };
xkb_symbols { include "pc+us+ua(winkeys):2+inet(evdev)+group(switch)+group(caps_toggle)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
Далее делаем еще два файла:
set-xkb-ru.sh
Код: Выделить всё
xkbcomp $HOME/bin/layout-ru.xkb $DISPLAY
set-xkb-ua.sh
Код: Выделить всё
xkbcomp $HOME/bin/layout-ua.xkb $DISPLAY
Готово. Осталось лишь назначить запуск этих скриптов на удобные вам комбинации, средствами вашего DE или любым другим способом. В Mate это легко делается через "комбинации клавиш клавиатуры" в панели управления.
Разумеется можно настроить больше пар.
Откуда взят вышеприведенный конфиг? Его легко получить командой
setxkbmap -print -verbose 10
- она покажет текущую настройку (вместе с кучей всего остального интересного). Т.е. делаете через GUI как вам удобно для пары языков, потом даете эту команду, и нижнюю часть ее вывода копируете в конфиг. Повторяете по мене надобности для других пар.Маленький минус - в трее индикатор языков продолжает показывать ru вместо ua даже после перехода на другую пару. Но т.к. у меня для второго языка зажигается индикатор Caps Lock, то мне этот значок в трее не особо нужен в принципе.