I need to use three keyboard layouts EN, UA and RU. By default I can switch between them using selected keyboard shortcut with following pattern: en→ua→ru→en→ua... But I want to switch layouts independently, using different keys for each layout, for example:
- CapsLock — enable EN layout
- Shift+CapsLock — enable UA layout
- Ctrl+CapsLock — enable RU layout
/usr/share/X11/xkb/compat/mycompat
Code: Select all
default partial xkb_compatibility "default" {
interpret Mae_Koho {
action= LockGroup(group=3);
};
interpret Zen_Koho {
action= LockGroup(group=4);
};
};
Code: Select all
partial modifier_keys xkb_symbols "caps_1" {
key <CAPS> {
[ ISO_First_Group, ISO_Last_Group ]
};
};
partial modifier_keys xkb_symbols "caps_2" {
key <CAPS> {
[ ISO_First_Group ]
};
key <RCTL> {
[ ISO_Last_Group ]
};
};
partial modifier_keys xkb_symbols "caps_4" {
replace key <CAPS> {
type = "FOUR_GROUPS",
[ ISO_First_Group, ISO_Last_Group, Mae_Koho, Zen_Koho ]
};
};
Code: Select all
partial xkb_types "four_groups" {
type "FOUR_GROUPS" {
modifiers = Shift+Control;
map[None] = Level1;
map[Shift] = Level2;
map[Control] = Level3;
map[Control+Shift] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Shift";
level_name[Level3] = "Ctrl";
level_name[Level4] = "Ctrl Shift";
};
};
Code: Select all
setxkbmap -symbols "pc+us:1+ua(winkeys):2+ru:3+us(dvorak):4+compose(ralt)+mysymbol(caps_4)" -types "complete+mytype(four_groups)" -compat "complete+mycompat" -print | xkbcomp - $DISPLAY &>/dev/null