
我已經使用 Ubuntu 好幾年了並且非常喜歡它。我以開發 PHP 和 Javascript 軟體為生。
我唯一的小煩惱是,我希望電腦切換回英語作為主要鍵盤語言,因為我有時會忘記希伯來語,然後當我返回輸入一些 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