如何将热键添加到 Python 脚本,从而在系统的其余部分抑制它们?

问题描述 投票:0回答:0

我想制作一个热键来启动 def Python 脚本的特定部分,而这些热键不会在其他应用程序中执行任何其他操作。

直到今天,我一直在使用“键盘”模块通过 keyboard.add_hotkey() 命令添加它们,但是由于系统的其余部分仍在使用热键 - 一直使用它们有点令人沮丧。

我读过有关将“suppress=True”添加到代码中的信息,但它对我不起作用(Win 10)-热键有效但它们仍在控制系统的其余部分。

接下来我尝试使用 pynput 来做同样的事情。我已经取得了部分成功,因为我可以抑制整个键盘(这不是理想的解决方案),我发现一篇文章的代码使用“win32_event_filter”来抑制我想要的任何键......但发现其余的键盘的工作,键被抑制 - 热键也不起作用(它被抑制)。

我已经阅读了很多,但仍然一无所获。有谁知道我该怎么做?

提前非常感谢,干杯!

编辑:

澄清更多-我正在尝试做这样的事情:

import keyboard as kb

def test():
  print('it works')

kb.add_hotkey('ctrl+e', test, suppress=True)
kb.wait()

它应该在不允许操作系统注册“ctrl+e”热键的情况下启动 def 代码。这很有趣,因为我看到它有时有效,但有时抑制不起作用并且热键被操作系统看到。

接下来我尝试使用:

import keyboard as kb
from PyHotKey import Key, keyboard_manager as manager

manager.start()
manager.suppress=True


def test():
  print('it works')

id1 = manager.register_hotkey([Key.ctrl_l, 'e'], None, test)
kb.wait()

但是,def 脚本再次启动 - 但操作系统看到了那个热键。

最后我尝试使用 pynput 和在 GitHub 上找到的代码来做到这一点,但在那种情况下 - 代码会抑制操作系统和脚本本身中的热键。

任何人都知道为什么 'keyboard.add_hotkey('ctrl+e', test, suppress=True)' 这适用于一个简单的代码,但是当我试图将它添加到更复杂的代码时 - 操作系统仍然在听对那些热键做出反应?

干杯!

python keyboard hotkeys pynput suppress
© www.soinside.com 2019 - 2024. All rights reserved.