我正在尝试使用Python 来代替AutoHotkey。我已经设置了 pynput 来监听按键,并且大部分内容都按照我的预期工作。但是,我有一个问题,如果我通过监听键盘并在按键上执行某些操作来“重新绑定”一个键,它仍然会发送原始命令。我不了解 DirectInput 幕后的事情,更不用说其上的所有层了,所以很难解释我的问题。
我想要的示例(“重新绑定”F3 到鼠标单击):
Press F3
Mouse click input is sent
发生情况的示例:
Press F3
F3 input is sent
Mouse click input is sent
如何防止发送多余的密钥,从而只发送我的“反弹”操作?
当您设置键盘侦听器时pynput
,你应该能够设置suppress = True
; from 文档 https://pynput.readthedocs.io/en/latest/keyboard.html:
抑制 (bool) – 是否抑制事件。将其设置为 True 将阻止输入事件传递到系统的其余部分。
例如,代替文档中的示例代码:
# Collect events until released
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
您可以通过这种方式修改它以阻止事件传递到系统的其余部分:
# Collect events until released
with keyboard.Listener(
suppress=True,
on_press=on_press,
on_release=on_release) as listener:
listener.join()
请注意,没有选项可以仅阻止某些键,因此如果您想阻止热键并允许其他键通过,您可能需要在on_press
通过按下与刚刚通过相同类型注册的相同的键来传递回调keyboard.Controller
您用来“重新绑定”热键的机制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)