Pynput 有没有办法测试在 òn_pressed 或 on_release 处理程序中是否按下了 ctrl、shift 或 alt?
[如果我们参考这里的 pynput 文档,我们就可以做:-
def on_press(key):
if key == keyboard.Key.ctrl:
print("Ctrl key pressed")
elif key == keyboard.Key.shift:
print("Shift key pressed")
elif key == keyboard.Key.alt:
print("Alt key pressed")
def on_release(key):
if key == keyboard.Key.esc:
# Stop listener
return False
# Collect events until released
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
或者如果您希望甚至可以将键存储在字典中以便像这样迭代:-
COMBINATION = {keyboard.Key.ctrl, keyboard.Key.shift, keyboard.Key.alt}
] 1
在上面提供的示例中,我们使用 pynput.keyboard.Listener 来检查 òn_pressed 或 on_release 处理程序中是否按下了 ctrl、shift 或 alt
另一种方法是使用 pynput.keyboard.Controller
[这是我们可以做的:-
alt_pressed
Whether any alt key is pressed. Please note that this reflects only the internal state of this controller. See modifiers for more information.
ctrl_pressed
Whether any ctrl key is pressed. Please note that this reflects only the internal state of this controller. See modifiers for more information.
shift_按下
Whether any shift key is pressed, or caps lock is toggled. Please note that this reflects only the internal state of this controller. See modifiers for more information.
因此我们可以简单地使用这些函数:-
kb = keyboard.Controller()
if kb.ctrl_pressed:
print("Ctrl key is pressed")
if kb.shift_pressed:
print("Shift key is pressed")
if kb.alt_pressed:
print("Alt key is pressed")
print(f"Key pressed: {key.char}")
]2