1

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 が表示されます。これらはどこから来て、どうすればその行動を抑えることができますか?

継続的に実行されるループを持つプログラムを終了するためのノンブロッキング キーボード入力を追加しようとしています。

4

0 に答える 0