键盘按下检测与输出


from pynput import keyboard 
def on_press(key): 
print('Key %s pressed' % key) 
def on_release(key): 
print('Key %s released' %key) 
with keyboard.Listener( on_press=on_press, on_release=on_release) as listener: 
listener.join()

如果我一直按F1键并释放,它说

Key Key.f1 pressed
Key Key.f1 pressed
Key Key.f1 pressed
Key Key.f1 pressed
Key Key.f1 pressed
Key Key.f1 pressed
Key Key.f1 pressed
Key Key.f1 pressed
Key Key.f1 pressed
Key Key.f1 pressed
Key Key.f1 pressed
Key Key.f1 released

如果我一直按F1键并释放,我希望它像下面这样工作

Key Key.f1 pressed
Key Key.f1 released

请帮帮我:)

pressed = False
def on_press(key): 
global pressed
if not pressed and key == keyboard.Key.f1: # only if key is not held
print('Key %s pressed' % key) 
pressed = True # key is held
def on_release(key):
global pressed 
if key == keyboard.Key.f1:
print('Key %s released' %key) 
pressed = False # key is released

代码不言自明,您只需提供一个布尔值pressed,每当您按下F1键时,它就是True,每当您释放它时,它就是False。如果pressFalse,则忽略on_press信号。

如果你想对每个键实现这一点,你必须将每个键的状态存储在字典中(或作为类似的对象)。

pressed = {}
def on_press(key): 
if key not in pressed: # Key was never pressed before
pressed[key] = False

if not pressed[key]: # Same logic
pressed[key] = True
print('Key %s pressed' % key) 
def on_release(key):  # Same logic
pressed[key] = False
print('Key %s released' %key) 

最新更新