Ubuntu 22.04 键盘布局的快捷键

Pav*_*.F. 6 keyboard-layout

我正在使用多种键盘布局 - en、cs、no、zh 我想在每个键盘使用不同的快捷键之间进行切换,例如

  • Ctrl-Shift-1 - 英语
  • Ctrl-Shift-2 - 捷克语
  • Ctrl-Shift-3 - 挪威语
  • Ctrl-Shift-4 - 中文

这样我就可以非常快速地在布局之间切换,而无需跟踪我实际使用的布局,就像使用 Opt-Space 循环切换一样。

在 20.04 中,我使用了以下脚本,但它似乎在 22.04 中不起作用

gdbus call --session --dest org.gnome.Shell \                      
 --object-path /org/gnome/Shell \
 --method org.gnome.Shell.Eval \
 "imports.ui.status.keyboard.getInputSourceManager().inputSources[$1]"
Run Code Online (Sandbox Code Playgroud)

知道如何在最新版本中实现同样的目标吗?

van*_*ium 1

您可能缺少activate()命令部分:

gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
 "imports.ui.status.keyboard.getInputSourceManager().inputSources[$1].activate()"
Run Code Online (Sandbox Code Playgroud)

  • 是的,正确的,当我激活它时,它会打印出以下内容:````(false,'')```但不幸的是并没有改变布局 (2认同)

Pav*_*.F. 0

首先,问题是从 GNOME 41 开始,dbus 方法 Eval() 现在受到MetaContext:unsafe-mode属性限制(请参阅此提交)。

对我有用的解决方案:

  1. 安装GNOME 扩展 Eval-GJs - 此扩展提供不受限制的 Eval() dbus 方法,用于在合成器中运行任意代码。
  2. 重写布局切换脚本以使用上述扩展
gdbus call --session --dest org.gnome.Shell \
--object-path /dev/ramottamado/EvalGjs \
--method dev.ramottamado.EvalGjs.Eval \
"imports.ui.status.keyboard.getInputSourceManager().inputSources[$1].activate()"
Run Code Online (Sandbox Code Playgroud)