这是我的 XKB 配置:
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+gb(custom)+us:2+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
是什么意思us:2
?
答案1
这意味着您已经定义了两种布局,gb
及其custom
变体和us
默认布局(即文件中定义的第一个布局/usr/share/X11/xkb/symbols/us
)。
第一个布局没有标记 a :1
,只有第二个布局标记有 a :2
,第三个布局标记有:3
,依此类推。
您的配置没有定义任何在布局之间切换的键,因此它们可能只能通过 GUI 进行切换。
例如,您可以定义三种布局(美国/基本、德语和俄语/语音),可通过按键切换Menu:
$ setxkbmap -layout us,de,ru -variant basic,,phonetic -option grp:menu_toggle
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us(basic)+de:2+ru(phonetic):3+inet(evdev)+group(menu_toggle)+ctrl(nocaps)" };
xkb_geometry { include "pc(pc105)" };
};
如果您想查看完整的扩展 xkb 配置,可以使用以下命令:
xkbcomp $DISPLAY - | less
这将显示合并后的三个布局,例如。对于\关键:
xkb_symbols "pc+us(basic)+de:2+ru(phonetic):3+inet(evdev)+group(menu_toggle)+ctrl(nocaps)" {
name[group1]="English (US)";
name[group2]="German";
name[group3]="Russian (phonetic)";
...
key <BKSL> {
type[group2]= "FOUR_LEVEL",
type[group3]= "ALPHABETIC",
symbols[Group1]= [ backslash, bar ],
symbols[Group2]= [ numbersign, apostrophe, rightsinglequotemark, dead_breve ],
symbols[Group3]= [ Cyrillic_e, Cyrillic_E ]
};
可以使用相同的xkbcomp
工具来加载自定义配置,而无需成为 root 并处理其中的系统文件和目录/usr/share
:
xkbcomp $DISPLAY ~/.xkb_conf
# modify ~/.xkb_conf
# then load it:
xkbcomp ~/.xkb_conf $DISPLAY
添加最后一行~/.xsession
可能适用于“现代”桌面环境,也可能不适用于“现代”桌面环境,这些环境使用 C 等效项强制加载固定键盘设置,setxkbmap
并且不容易被说服不妨碍。