答案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
似乎可以使用脚本来覆盖这种极其烦人的行为。请看这里: