簡體   English   中英

使用 pynput 進行鍵盤按下檢測

[英]Keyboard Press Detection with pynput

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

代碼非常不言自明,您只需提供一個 boolean pressed ,無論何時按下F1鍵,它都是True ,無論何時釋放它,它都是False 如果pressFalse ,您只需忽略on_press “信號”。

如果你想用每個鍵來實現這一點,你必須將每個鍵的 state 存儲在字典中(或作為類似對象)。

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) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM