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"
这使得可以非常轻松地在脚本和自定义快捷方式中使用它。
免责声明:我是这个扩展的开发者。