>> Удобное решение для переключения трех (или скольких угодно) точно >> такое же, как и для переключения двух: каждой раскладке соответствует >> своя клавиша (или аккорд). > > а как это прикрутить если в xfce?
А что Xfce? У нее с этим какие-то проблемы? Если нет, то в Иксах для многих популярных вариантов есть заготовки; в частности если бы мне не нужно было, чтобы выключатели раскладок вели себя по-разному в разных окнах, то на свои предпочтения я бы мог просто $ setxkbmap -option 'grp:shift_caps_switch', а то и прописать эту опцию в /etc/default/keyboard. Если же для того, что вы придумали, искоробочной заготовки нет, то надо будет сформулировать. Тут кто-то предлагал С-1, С-2, С-3, С-4 — это будет выглядеть как-то так (да, XKB многословен): --8<---------------cut here---------------start------------->8--- partial default xkb_types "mixed" { virtual_modifiers LevelThree; type "FOUR_LEVEL+PC_CONTROL" { modifiers = Shift+LevelThree+Control; map[None] = Level1; map[Shift] = Level2; map[LevelThree] = Level3; map[Shift+LevelThree] = Level4; map[Control] = Level5; level_name[Level1] = "Base"; level_name[Level2] = "Shift"; level_name[Level3] = "Alt Base"; level_name[Level4] = "Shift Alt"; level_name[Level5] = "Control"; }; }; --8<---------------cut here---------------end--------------->8--- --8<---------------cut here---------------start------------->8--- partial modifier_keys xkb_symbols "group_ctl_1234" { key <AE01> { type = "FOUR_LEVEL+PC_CONTROL", actions = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=1) ] }; key <AE02> { type = "FOUR_LEVEL+PC_CONTROL", actions = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=2) ] }; key <AE03> { type = "FOUR_LEVEL+PC_CONTROL", actions = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=3) ] }; key <AE04> { type = "FOUR_LEVEL+PC_CONTROL", actions = [ NoAction(), NoAction(), NoAction(), NoAction(), LockGroup(group=4) ] }; }; --8<---------------cut here---------------end--------------->8---