我正在尝试编写一些程序来检测何时按下组合键并调用某个函数。所以我需要程序在按下时检测类似 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)
谢谢!