在 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 再次出现。这些来自哪里,我如何抑制这种行为?
我正在尝试添加非阻塞键盘输入以退出具有持续运行循环的程序