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