我想知道是否有任何方法可以在 Unity 之外使用标准的 ubuntu 键盘布局。我正在使用不同的 WM(Fluxbox)。
最强力的方法是使用 xkb。我可以这样做。但在我走这条路之前,我想探索其他选项。我尝试过直接运行 ibus-daemon,这似乎可行,但它提供的键盘布局与标准的 ubuntu 不同(而且数量要少得多)。
我注意到我不能直接跑
/usr/lib/x86_64-linux-gnu/indicator-keyboard/indicator-keyboard-service &
有任何想法吗?
Ubuntu版本是15.10。
答案1
因此,我决定放弃不可能的事情,将 Unity 的部分内容提取到 Fluxbox 中。相反,有一个更像 Fluxbox 的解决方案,实际上依赖于 setxkbmap。参考这个unix stack exchange答案我已经在美国键盘上为塞尔维亚语(拉丁语)和德语做了类似的子菜单设置。
在 .fluxbox/menu 中,
[begin] (fluxbox)
[include] (/etc/X11/fluxbox/fluxbox-menu)
[submenu] (keyboards)
[exec] (us) {setxkbmap us}
[exec] (de) {setxkbmap de qwerty}
[exec] (rs) {setxkbmap rs latinunicodeyz}
[end]
上述代码片段设置了三个对应不同键盘布局的项目。
为了使事情更加灵活,我还在 .fluxbox/keys 中添加了键盘快捷键,
Mod4 Shift 1 :Exec chkb.sh us
Mod4 Shift 2 :Exec chkb.sh rs latinunicodeyz
Mod4 Shift 3 :Exec chkb.sh de qwerty
其中 chkb.sh 是一个脚本,内容如下
#!/bin/bash
langsel="$1"
varant="$2"
setxkbmap "$1" "$2"
xmodmap "/home/user/.Xmodmap"
。由于我是 Emacs 用户,我更喜欢将 Caps Lock 绑定到 Ctrl 功能(并将 Ctrl 绑定到 Caps Lock),每次更改键盘布局时,我都需要通过重新读取 .Xmodmap 定义来重复绑定过程。如果将其打包到脚本中,而不是直接通过 :Exec 指令调用,效果会更好。
也许有人还有其他解决方案......