Довольно давно, несколько лет назад, я заме­тил, что при наборе тек­ста на двух раз­лич­ных язы­ках часто при­хо­дится обра­щать вни­ма­ние на инди­ка­торы, пока­зы­ва­ю­щие теку­щую рас­кладку кла­ви­а­туры. В какой-то момент я заду­мался, что было бы неплохо, если нажал одну кла­вишу - вклю­чился рус­ский, нажал дру­гую - англий­ский. Тогда на инди­ка­торы вообще можно не смот­реть, так как зара­нее известно, какая рас­кладка будет включена.

Осмот­рев кла­ви­а­туру, я выбрал наи­бо­лее удоб­ные для этой цели кла­виши. Это ока­зался пра­вый «Ctrl» - для лати­ницы, а пра­вый «Alt» - для кириллицы.

Перед тем, как про­во­дить необ­хо­ди­мое шаман­ство, нужно посмот­реть на вывод сле­ду­ю­щей команды.
$ xkbcomp $DISPLAY - | grep 'xkb_'

Так выгля­дит ваша теку­щая рас­кладка до изме­не­ния. Исполь­зуйте полу­чен­ные дан­ные для соот­вет­ству­ю­щих строк в файле, рас­смот­рен­ном ниже.

Далее создаем неболь­шой файл, назвав его «.xkblayout» и поме­щаем в свою домаш­нюю дирек­то­рию.
.xkblayoutxkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete" };
        xkb_compat    { include "complete+ledscroll(group_lock)" };
        xkb_symbols   {
        include "pc+us+ru(winkeys):2+inet(evdev)"
        replace key <RALT> {
            virtualMods = AltGr,
            symbols[Group1] = [ ISO_Last_Group ]
        };
        replace key <RCTL> {
            virtualMods = AltGr,
            symbols[Group1] = [ ISO_First_Group ]
        };
        };
        xkb_geometry  { include "pc(pc105)" };
};

Оста­лось сде­лать авто­за­грузку полу­чен­ного файла при старте X11. Создаем файл «.xsession», тоже в домаш­ней дирек­то­рии, и делаем его испол­ня­е­мым.
.xsession#!/bin/sh
xkbcomp ~/.xkblayout $DISPLAY

Все. Теперь при запуске X11 авто­ма­ти­че­ски запус­ка­ется «xkbcomp» и появ­ля­ется удоб­ное пере­клю­че­ние рас­кла­док. Я все же оста­вил инди­ка­цию вклю­че­ния кирил­лицы на «Scrool Lock» для контроля.

К такому спо­собу пере­клю­че­ния язы­ков довольно быстро при­вык­нуть. В отли­чии от цик­ли­че­ского пере­клю­че­ния, этот спо­соб не даст совер­шить ошибку при выборе языка ввода.