如何在 Ubuntu GNOME Shell 中快速切换键盘源?

如何在 Ubuntu GNOME Shell 中快速切换键盘源?

切换源的键盘快捷键是Super+ Space。如果我按下它,会弹出此窗口对话框:

带有 en1、en2 和 ar 的键盘切换器对话框的屏幕截图

这是一个相当缓慢的过程。您可以多次按下键盘快捷键,直到突出显示所需的键盘布局。但是,一旦您选择了它,似乎您必须等待一两秒钟才能使用该键盘布局输入,然后对话框就会消失。其他操作系统允许您立即更改键盘布局,有没有办法在 Ubuntu 上做到这一点?

说清楚一点,我很喜欢这个窗口,弹出窗口不是问题。问题是它窃取了键盘焦点。我怎样才能让它不窃取键盘焦点?或者至少有一种方法可以关闭这个窗口,比如用按键Esc

答案1

实现这一目标的一种极快且彻底的方法是无模式和无状态输入布局切换。这意味着,您无需循环切换布局(例如,三种语言:美国 → 德国 → 日本 → 美国 → 德国 → ...),而是为每种输入布局分配一个唯一的组合。例如,Super+F1代表美国,Super+F2代表德国,Super+F3代表日本)。然后,每次您需要特定布局时,只需切换到该布局即可。

这在 Ubuntu 中很难实现,因为你可以通过 Google 搜索到的所有方法都无法正常工作。

  • setxkbmap与 GNOME Shell 的兼容性不佳。
  • gsettings set org.gnome.desktop.input-sources current弃用,不再起作用
  • gdbus call … org.gnome.Shell.Eval …由于安全问题,也被弃用。

因此,我制作了自己的 GNOME Shell 扩展并与全世界分享:什里伍克(也可以从 GitHub 获取:madhead/shyriiwook)。

这是一个非常简单、简约的扩展。它没有任何 GUI。安装后,一个新的 D-Bus 接口将出现在您的 GNOME Shell 会话中。您可以查询当前配置或调用方法来激活所需的布局:

$ gdbus introspect \
    --session \
    --dest org.gnome.Shell \
    --object-path /me/madhead/Shyriiwook \
    --only-properties

node /me/madhead/Shyriiwook {
  interface me.madhead.Shyriiwook {
    properties:
      readonly as availableLayouts = ['us', 'de', 'jp'];
      readonly s currentLayout = 'us';
  };
};

$ gdbus call \
    --session \
    --dest org.gnome.Shell \
    --object-path /me/madhead/Shyriiwook \
    --method me.madhead.Shyriiwook.activate "de"

这很容易编写脚本,您甚至可以将此命令原始放入“设置”→“键盘”→“键盘快捷键”→“查看和自定义快捷键”→“自定义快捷键”下的自定义快捷键中。

而且,就像 OP 想要的那样,它会立即发生并且不会显示弹出窗口。

答案2

似乎可以使用脚本来覆盖这种极其烦人的行为。请看这里:

如何在 GNOME 3 中更改语言时不显示键盘布局选择器弹出窗口

相关内容