如何检测 Windows python3+ 中的组合键?

Ptm*_*lol 0 python keyboard pynput

我正在尝试编写一些程序来检测何时按下组合键并调用某个函数。所以我需要程序在按下时检测类似 ctrl+v 的内容并执行某些操作,但程序似乎无法同时识别 ctrl+v,但当我只测试 1 个键时它会识别:

COMBINATION = [
    {keyboard.Key.ctrl, keyboard.KeyCode(char='v')}
]
Run Code Online (Sandbox Code Playgroud)

在这段代码中,如果我删除 2 个中的 1 个,程序似乎会检测到密钥,但如果它们在一起,则不会。这就是我用来检测密钥的方法:

def on_press(key):
    if any([key in COMBO for COMBO in COMBINATION]):
        current.add(key)
        if any(all(k in current for k in comb) for comb in COMBINATION):
            execute()
Run Code Online (Sandbox Code Playgroud)

execute()如果两个参数都被放入,该函数永远不会被执行COMBINATION,但如果只有一个参数,它似乎确实有效。我使用 pynput 来表示按下的按键,并使用一个侦听器来监听所有按下的按键:

with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 5

所以有一个超级简单的库叫做keyboard

安装它pip install keyboard

import keyboard

if keyboard.is_pressed('ctrl+v'):
   # Call your function
Run Code Online (Sandbox Code Playgroud)

我希望我对你有帮助。