操作默认快捷键 Super+Space 以切换到下一个输入源,无需图形表示

操作默认快捷键 Super+Space 以切换到下一个输入源,无需图形表示

CapsLock我有两个命令,它们与键和Shift+绑定,CapsLock正如本问答中提到的再次使用 Caps Lock 进行无模式/无状态布局语言切换(18.04 LTS Bionic Beaver)

我的要求是在屏幕上切换带有Super+不带有图形表示的语言。Space

在此处输入图片描述

我已经禁用切换到下一个输入源和上一个输入源的默认快捷键。

在此处输入图片描述

现在我可以将任何命令绑定到Super+Space如下所示

在此处输入图片描述

想法:

可以将这两个命令作为两个快捷方式,例如:

Super+Space为英语
Shift+ Super+Space为乌克兰语

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()"

当“inputSource[ ]”中的值为 1 时,语言更改为乌克兰语,如果为 0,则语言更改为英语

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 和 1 之间的其他值,以便我可以切换语言而不需要Shift+ Super+Space

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()"

答案1

在@danzel 的帮助下,他提供了链接..https://github.com/Nekotekina/kbhook/blob/master/layout_rotate.sh

我已将以下脚本保存为并使用+~/SL.sh创建快捷方式SuperSpace
/bin/bash /home/pratap/SL.sh

在此处输入图片描述

#!/bin/bash

CURRENT=`gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index"`

if [ "$CURRENT" == "(true, '1')" ]; then
  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()"
else
  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()"
fi

现在Super+Space正在切换我正在寻找的没有图形表示的语言。

在此处输入图片描述

再次感谢@danzel

答案2

快速语言切换Gnome-shell 扩展正是这样做的,并且切换语言是即时发生的。此外,它修复了当前窗口的任何焦点窃取问题,同时不需要自定义快捷方式(常规的会改变行为),所以gnome-tweak-tool选择仍然有效。

免责声明:我是 Quick Lang Switch 的开发者...

答案3

如果您只想为每种输入法分配一个唯一的快捷方式(例如Super+ Space+1代表美国,Super+ Space+2代表英国等),我推荐另一个 GNOME Shell 扩展:什里伍克。它支持旧版(45 之前)和新版 GNOME(45 以上)。它非常简单和简约,甚至没有 GUI。安装后,新的 D-Bus 接口将出现在您的 GNOME Shell 会话中,您将能够以编程方式管理输入法。

带有 CLI 的示例 ( gdbus)。

使用以下命令查询当前配置:

$ 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', 'uk'];
      readonly s currentLayout = 'us';
  };
};

通过 ID 选择输入法:

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

这使得可以非常轻松地在脚本和自定义快捷方式中使用它。

免责声明:我是这个扩展的开发者。

相关内容