MacOS Mojave および python 2.7.15 では、次のコード:
from pynput import keyboard
def on_press(key):
print('Key {} pressed.'.format(key))
def on_release(key):
print('Key {} released.'.format(key))
if str(key) == 'Key.esc':
print('Exiting...')
return False
with keyboard.Listener(
on_press = on_press,
on_release = on_release) as listener:
listener.join()
キー「hjs escape」が順番に押されると、この出力が生成されます
hKey 'h' pressed.
Key 'h' released.
Key 'j' pressed.
jKey 'j' released.
Key 's' pressed.
sKey 's' released.
Key Key.esc pressed.
^[Key Key.esc released.
Exiting...
%hjs
私はなぜなのか理解していない
1) 文字 'h' が on_press 関数の出力の前にある
2) 文字 'j'、's' 、' ^[Key ' が on_release 関数の出力の前にある
3) プログラムの実行が終了した後、端末プロンプトの後に「hjs」という文字が表示される
キーボード入力がpynputによって傍受されたような気がしますが、プログラムの実行中にpynputが再び端末にエコーアウトします。これを抑えることはできますか?しかし、プログラムが終了した後、文字 AGAIN が表示されます。これらはどこから来て、どうすればその行動を抑えることができますか?
継続的に実行されるループを持つプログラムを終了するためのノンブロッキング キーボード入力を追加しようとしています。