我使用 Ubuntu 已有好几年了,非常喜欢它。我以开发 PHP 和 Javascript 软件为生。
我唯一的小烦恼是,我希望 PC 能为我切换回英语作为主键盘语言,因为我有时会忘记希伯来语,然后当我返回输入一些 shell 命令或只是解锁它时,我注意到按下 Enter 后它是另一种语言。
您可能会认为这是一个非常极端的情况,但我很好奇我是否可以编写一个脚本来设置一个计时器,当键盘处于一定程度的不活动状态后(我可能正在阅读一些电子书并使用鼠标),它会切换回我的默认语言,即键盘设置上的英语。
如果我可以从脚本中排除箭头键、向下翻页键和类似的键,并让计时器在按下这些键时继续滴答作响,那将是一个额外的好处。
答案1
这是完全可能的,借助后台脚本,使用xprintidle
,返回当前空闲时间。
您需要先安装它:
sudo apt-get install xprintidle
下面的脚本读取命令的输出xprintidle
,并在设定的时间过去时设置键盘。
如何获取要设置的键盘(索引)
要创建正确的命令,脚本需要知道目标键盘的索引。为此,请运行以下命令:
gsettings get org.gnome.desktop.input-sources sources
输出结果如下:
[('xkb', 'us+intl'), ('xkb', 'us'), ('xkb', 'nl')]
现在,如果您想在 x 时间之后设置最后一个,它的索引是 2,因为列表中的第一个项目始终是 0。
如何使用脚本
- 如上所述,首先安装
xprintidle
- 将以下脚本复制到一个空文件中
- 在脚本的头部部分,设置:
- 目标键盘语言的索引,如上所述
- 更改键盘语言的空闲时间(以秒为单位)
- 将脚本另存为
change_kb.py
使用以下命令从终端进行测试运行:
python3 /path/to/change_kb.py
如果一切正常,请将其添加到启动应用程序中:Dash > 启动应用程序 > 添加
剧本
#!/usr/bin/env python3
import subprocess
import time
#---
kb_id = 2 # set the targeted keyboard index (first = 0)
set_time = 300 # idle tim in seconds
#---
get_t = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
t1 = int(get_t(["xprintidle"]))
idle_t = set_time*1000
while True:
time.sleep(1)
t2 = int(get_t(["xprintidle"]))
if all([t1<idle_t, t2>idle_t]):
cmd = "gsettings set org.gnome.desktop.input-sources current "+str(kb_id)
subprocess.Popen(["/bin/bash", "-c", cmd])
else:
pass
t1 = t2