RGB*_*GBD 20 gnome3 keyboard-layout
我正在使用 gnome 3.22.1,但问题自 3.18 以来就存在。
在此之前(不记得确切版本)我能够使用xkb-witch切换键盘布局,这是一个在底层使用 X.org 绑定的简单应用程序。
在 3.18 之后,如果您运行 xkb-switch,键盘布局将不会在 gnome 中切换。进一步的调查表明布局切换是有效的,但时间很短。
如果你运行这个脚本:
for i in $(seq 1000); do
lang=$(xkb-switch -s ru; xkb-switch);
if [[ "$lang" == "ru" ]]; then
echo $lang;
fi;
done
Run Code Online (Sandbox Code Playgroud)
您将获得 3 到 20 次“成功”的布局切换,具体取决于您的幸运程度。
在谷歌搜索这个问题后,我提出以下建议:
gsettings set org.gnome.desktop.input-sources current 0
Run Code Online (Sandbox Code Playgroud)
设置正在更改,但布局保持不变。
我找到了一种“hacky”方法来更改布局:
setxkbmap us,ru
setxkbmap ru,us
Run Code Online (Sandbox Code Playgroud)
但是 gnome shell 不知道这种变化,并且在布局指示器中显示了错误的语言。
我已经发布了关于这个问题(抱歉,没有足够的声誉,https://bbs.archlinux.org/viewtopic.php?pid=1657582 https://github.com/ierton/xkb-switch/issues/15),但没有得到任何好的答案。
在这一点上,我被卡住了。我不够熟练,无法识别 gnome shell 代码中的问题。我什至不确定这是(gnome shell 的)问题。
我想要的是一种gnome-aware方式来从终端切换键盘布局。有人可以指出我正确的方向吗?我是否应该将此作为错误提交(尤其是无法通过 gsettings 更改键盘布局这一事实)?
san*_*mai 15
由于 gnome-shell 在 DBus 上公开了一个可以访问所有变量的 JS eval 接口,因此可以使用以下命令实现这一壮举:
gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
"imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
Run Code Online (Sandbox Code Playgroud)
这将激活第 0 个布局,依此类推。将这些命令分配给未充分利用的???和??在您的日语键盘上的命令是微不足道的。
这是如何切换到上次使用的输入法(来自评论):
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources[1].activate()"
Run Code Online (Sandbox Code Playgroud)
如果您使用 IBus 作为您的输入法(这可能是默认设置),您可以使用以下ibus命令更改您的输入:
# Set the layout to US English
ibus engine xkb:us::eng
# Set the input method to Japanese Mozc IME
ibus engine mozc-jp
# Set the layout to Russian
ibus engine xkb:ru::rus
Run Code Online (Sandbox Code Playgroud)
您可以使用该ibus list-engine命令查看所有可用的布局。
必须指出这种方法并没有改变语言的指标,但它工作可靠,否则。
小智 5
即使您之前没有使用鼠标设置过该输入法,您也可以在命令行上设置并切换到该输入法:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'ru')]"
对于 Dvorak,请使用us+dvorak(或者gb+dvorak如果您在英国,或者其他任何地方)。
使用gsettings。
设置org.gnome.desktop.input-sources.sources为空列表“[]”,允许您使用X 服务器键盘配置,而无需gnome-shell尝试配置它,因此您可以像以前一样进行操作。
$ gsettings set org.gnome.desktop.input-sources sources '[]'
Run Code Online (Sandbox Code Playgroud)