自宅のKubuntuマシンでは、この洞察に満ちたページを基に、どのウィンドウやアプリケーションにフォーカスがあるかに関係なく、キーを押すたびにビープ音を鳴らすスクリプトを実行しています。
#!/usr/bin/env python
from Xlib.display import Display
import os
import sys
ZERO=[]
for i in range(0,32):
ZERO.append(0)
ignorelist=[ZERO]
def main():
if os.getuid()==0:
os.system("modprobe pcspkr")
print("Speaker enabled, start as normal user")
sys.exit()
print("If no beep is heard, then run as root to enable pcspkr")
disp = Display()
while 1:
keymap=disp.query_keymap()
if keymap not in ignorelist:
os.system("beep")
if __name__ == '__main__':
main()
このスクリプトはうまく機能しますが、デュアルコアIntelマシンの両方のCPUをそれぞれ約80%に固定しているため、このマシンで他にできることはほとんどありません。この単純なスクリプトの動作を妨げることなく、CPU要件を減らすにはどうすればよいですか?つまり、どのウィンドウまたはアプリケーションにフォーカスがあるかに関係なく、キーを押した瞬間にビープ音が鳴るはずです。
Pythonでこれが不可能な場合、他にどのようなテクノロジーを検討する必要がありますか?C?キーが押されたことをアプリケーションに通知するカーネルコンポーネントが存在すると思います。KDEは他にどのようにグローバルショートカットを処理しますか?アプリケーションにこれらの通知も受信させるにはどうすればよいですか?
目標は、各キーが押された瞬間にビープ音を鳴らすことです。これは、キーを押すのを逃さずに、ボトムアウトせずにメカニカルキーボードで入力するように指をトレーニングしているためです。CherryBrownsからCherryBluesに卒業したばかりですが、戦術的なフィードバックがないため、慣れるまでに少し時間がかかります。
どのウィンドウにフォーカスがあるかに関係なく、ソリューションはビープ音を鳴らさなければならないことに注意してください。このプログラムは、私が使用するすべてのアプリケーションのバックグラウンドで実行されるデーモンとして使用することを目的としています。
ありがとう。