【问题标题】:How to prevent certain certain keys from "sending" input in Python如何防止某些特定键在 Python 中“发送”输入
【发布时间】:2021-03-27 09:44:54
【问题描述】:

我正在尝试使用 Python 来替换 AutoHotkey。我已经设置了 pynput 来收听按键,并让大部分工作都按我的预期工作。但是,我有一个问题,如果我通过听键盘并在按键上做某事来“重新绑定”一个键,它仍然会发送原始命令。我不了解 DirectInput 幕后的东西,更不用说上面的所有层了,所以很难解释我的问题。

我想要的示例(“重新绑定”F3 到鼠标点击):

Press F3
Mouse click input is sent

发生情况的示例:

Press F3
F3 input is sent
Mouse click input is sent

如何防止发送多余的密钥,所以只发送我的“反弹”动作?

【问题讨论】:

    标签: python python-3.x pyautogui pynput


    【解决方案1】:

    当您使用pynput 设置键盘监听器时,您应该可以设置suppress = True;来自the documentation

    suppress (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 机制注册的相同键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多