kro*_*dil 7 keyboard input-language shortcut-keys language
我在文本输入设置中配置了 3 个输入源(语言)。让我们称它们为 E(如英语)和 A 和 B 表示其他两种语言。主要是我在英语和 A 或英语和 B 之间切换,几乎从不在 A 和 B 之间切换。但是切换键盘快捷键总是在 E->A->B 或 E<-A<-B 方向循环。这是非常不方便的。
我正在寻找一种方法来做到这一点,因为它是在 MacOS 下实现的,默认情况下,切换器在最后两种语言之间循环,但您可以使用单独的快捷方式或通过工具栏菜单强制它前进到第三种语言,如截图如下:
是否可以在 Ubuntu 上配置这样的东西?
编辑:下面的 Jacob 解决方案允许创建自定义快捷方式以在两种语言之间切换。我修改了他的脚本以复制 MacOS 切换方案,其中最后 2 种语言是自动循环。你可以在这里看到它。在这里解释详细信息的博客文章。
您所描述的基本上是在两种输入语言之间切换的键盘快捷键。下面的脚本将提供该选项。
#!/usr/bin/env python3
import subprocess
import sys
args = sys.argv[1:]
k = ["org.gnome.desktop.input-sources", "current"]
def get(command): return subprocess.check_output(command).decode("utf-8")
currlang = get(["gsettings", "get", k[0], k[1]]).strip().split()[-1]
newlang = args[1] if currlang == args[0] else args[0]
subprocess.Popen(["gsettings", "set", k[0], k[1], newlang])
Run Code Online (Sandbox Code Playgroud)
set_lang.py在终端窗口中,运行以下命令:
gsettings get org.gnome.desktop.input-sources sources
Run Code Online (Sandbox Code Playgroud)
这将输出如下:
[('xkb', 'us+intl'), ('xkb', 'us'), ('xkb', 'nl')]
Run Code Online (Sandbox Code Playgroud)
此列表代表您的输入语言。该指数的语言等于在列表中的位置,开始0,例如('xkb', 'us')具有指数(对我来说)1。
现在测试运行脚本以在两个索引之间切换。在('xkb', 'us+intl')和('xkb', 'nl')(索引0和2)之间切换:
python3 /path/to/set_lang.py 1 3
Run Code Online (Sandbox Code Playgroud)
其中机器人语言由参数表示
1 3
Run Code Online (Sandbox Code Playgroud)如果一切正常,请将其添加到快捷键:选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并添加命令:
python3 /path/to/set_lang.py 1 3
Run Code Online (Sandbox Code Playgroud)
到您选择的快捷方式。
然后您可以使用现有的快捷方式浏览所有语言,或(当然)菜单。
可以通过以下命令检索可用语言:
gsettings get org.gnome.desktop.input-sources sources
Run Code Online (Sandbox Code Playgroud)在当前设置的语言可以通过以下命令获取:
gsettings get org.gnome.desktop.input-sources current
Run Code Online (Sandbox Code Playgroud)
它将输出 (ao)当前设置语言的索引。
我们可以通过(例如)命令设置语言:
gsettings set org.gnome.desktop.input-sources current 0
Run Code Online (Sandbox Code Playgroud)
将语言设置为列表中的第一个(索引 0)
简而言之:如果我们运行脚本,我们将两种语言(索引)作为参数,脚本将查看当前索引是什么,将切换到另一种。
下面的脚本版本将在最后使用的两种语言之间切换,结果与 MacOs 的行为类似。
gsettings get org.gnome.desktop.input-sources sources
Run Code Online (Sandbox Code Playgroud)
我添加了这个版本作为附加选项。重新启动后,最后使用的两种语言将保留(记住)。
switchlang.py通过以下命令测试运行脚本:
python3/ path/to/switchlang.py
Run Code Online (Sandbox Code Playgroud)
第一次运行后,从菜单切换语言,现在运行
python3/ path/to/switchlang.py
Run Code Online (Sandbox Code Playgroud)
再次。从那时起,脚本将始终在最后使用的两种语言之间切换。