使用 pynput 进行键盘按下检测
Posted
技术标签:
【中文标题】使用 pynput 进行键盘按下检测【英文标题】:Keyboard Press Detection with pynput 【发布时间】:2021-04-29 14:04:30 【问题描述】: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
请帮帮我:)
【问题讨论】:
【参考方案1】: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
。如果press
是False
,您只需忽略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)
【讨论】:
我躺下睡觉。我会醒来并提出问题并关闭它。 @g0dst3r 什么意思,有什么不清楚的地方吗? 你能把它应用到所有键以及F1吗? @g0dst3r 是的,访问个人、更新答案更加容易。以上是关于使用 pynput 进行键盘按下检测的主要内容,如果未能解决你的问题,请参考以下文章