如何在 Python 中防止 "sending" 输入某些特定键
How to prevent certain certain keys from "sending" input in Python
我正在尝试使用 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
;来自 the documentation:
suppress (bool) – Whether to suppress events. Setting this to True will prevent the input events from being passed to the rest of the system.
因此,例如,而不是文档中的示例代码:
# 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
回调中设置默认情况通过按下与刚刚通过与 'rebind' 热键相同的 keyboard.Controller
机制注册的相同键来通过。
我正在尝试使用 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
;来自 the documentation:
suppress (bool) – Whether to suppress events. Setting this to True will prevent the input events from being passed to the rest of the system.
因此,例如,而不是文档中的示例代码:
# 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
回调中设置默认情况通过按下与刚刚通过与 'rebind' 热键相同的 keyboard.Controller
机制注册的相同键来通过。