我使用的是 gnome 3.22.1,但从 3.18 开始就存在问题。
在此之前(不记得确切的版本)我可以使用切换键盘布局xkb女巫,在底层使用 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
您将获得 3 到 20 次“成功”的布局切换,具体取决于您的幸运程度。
谷歌搜索这个问题后我如下建议:
gsettings set org.gnome.desktop.input-sources current 0
设置正在更改,但布局保持不变。
我发现了一种“hacky”方法来更改布局:
setxkbmap us,ru
setxkbmap ru,us
但 gnome shell 不知道该更改,并在布局指示器中显示错误的语言。
我已经发布了有关此问题的文章(抱歉,声誉不够,https://bbs.archlinux.org/viewtopic.php?pid=1657582 https://github.com/ierton/xkb-switch/issues/15),但没有运气得到任何好的答案。
此时我陷入困境。我的技术不够熟练,无法识别 gnome shell 代码中的问题。我什至不确定这是(gnome shell)的问题。
我想要的是一个侏儒感知从终端切换键盘布局的方法。有人能指出我正确的方向吗?我应该将其归档为错误(尤其是键盘布局无法通过 gsettings 更改的事实)吗?
答案1
由于 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()"
这将激活第 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()"
答案2
如果您使用 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
您可以使用该命令查看所有可用的布局ibus list-engine
。
必须注意的是,这种方法确实不是更改语言指示器,尽管它在其他方面工作可靠。
答案3
即使您之前没有使用鼠标设置过输入法,您也可以在命令行上设置并切换到该输入法:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'ru')]"
对于德沃夏克,请使用us+dvorak
(或者gb+dvorak
如果您在英国,或其他地方)。
答案4
我认为你应该尝试sudo dpkg-reconfigure keyboard-configuration