Ациклическое (немодальное) переключение раскладки в Linux (Ubuntu)

Подойдёт, скорее всего, для любого Debian-based дистрибутива.

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

Сначала смотрим текущие настройки

$ setxkbmap -layout us,ru -print

Будет что-то типа такого

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"      };
    xkb_compat    { include "complete"      };
    xkb_symbols   { include "pc+us+ru:2+inet(evdev)+capslock(grouplock)+compose(ralt)"      };
    xkb_geometry  { include "pc(pc101)"     };
};

Теперь открываем файл ~/.config/xkb/config, обрати внимание, что папки может не быть. В файл пишем

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"      };
    xkb_compat    { include "complete"      };
    xkb_geometry  { include "pc(pc101)"     };
    xkb_symbols "my"  {
        include "pc+us+ru:2+inet(evdev)+compose(ralt)"
        key <CAPS> { [ ISO_First_Group, ISO_Last_Group ] };
    };
};

И применяем конфиг через команду

$ xkbcomp $HOME/.config/xkb/config $DISPLAY

Теперь первая раскладка будет включаться по нажатию CapsLock, а вторая Shift+CapsLock

Можно научить включаться разные раскладки на разные кнопки

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"      };
    xkb_compat    { include "complete"      };
    xkb_geometry  { include "pc(pc101)"     };
    xkb_symbols "my"  {
        include "pc+us+ru:2+inet(evdev)+compose(ralt)"
        
        key <LCTL> { [ISO_First_Group] };
        key <RCTL> { [ISO_Last_Group] };
    };
};

Первая на левый Ctrl, последняя на правый Ctrl

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.