如何检测 Windows python3+ 中的组合键?
How can i detect key combinations in Windows python3+?
我正在尝试编写程序来检测何时按下组合键并调用特定功能。所以我需要程序在按下时检测像 ctrl+v 这样的东西并做一些事情,但似乎程序不能同时识别 ctrl+v,但是当我只测试 1 个键时它会识别:
COMBINATION = [
{keyboard.Key.ctrl, keyboard.KeyCode(char='v')}
]
在此代码中,如果我删除 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()
如果两个参数都放在 COMBINATION
中,execute()
函数就永远不会执行,但如果只有一个,它似乎确实有效。
我将 pynput 用于按下的键和一个监听所有按下的键的监听器:
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
谢谢!
所以有一个超级简单的库叫做 keyboard
使用 pip install keyboard
安装
import keyboard
if keyboard.is_pressed('ctrl+v'):
# Call your function
希望对你有所帮助。
我正在尝试编写程序来检测何时按下组合键并调用特定功能。所以我需要程序在按下时检测像 ctrl+v 这样的东西并做一些事情,但似乎程序不能同时识别 ctrl+v,但是当我只测试 1 个键时它会识别:
COMBINATION = [
{keyboard.Key.ctrl, keyboard.KeyCode(char='v')}
]
在此代码中,如果我删除 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()
如果两个参数都放在 COMBINATION
中,execute()
函数就永远不会执行,但如果只有一个,它似乎确实有效。
我将 pynput 用于按下的键和一个监听所有按下的键的监听器:
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
谢谢!
所以有一个超级简单的库叫做 keyboard
使用 pip install keyboard
import keyboard
if keyboard.is_pressed('ctrl+v'):
# Call your function
希望对你有所帮助。