如何同时使用pynput键盘监听器和控制器?

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

我是 python 编程的初学者,我一直在开发一个非常简单的程序来帮助我在应用程序中自动执行任务。基本上,在按下 F5 时,我希望执行一系列特定的命令,而在按下 F6 时,我希望也运行另一组特定的命令。

我的方法是使用 pynput 库: 此代码用于检测我何时按下 f5 或 f6:

with keyboard.GlobalHotKeys({
    '<f5>': on_activate_f5,
    '<f6>': on_activate_f6}) as h:
    h.join()

然后是执行指令的代码(函数 on_activate_f5 导致此):

def leave():
    printer("----LEAVE INITIATED----")
    Controller().press(Key.esc)
    Controller().release(Key.esc)
    print("--step1 complete--")
    pyautogui.click(300,420)
    print("--step2 complete--")
    pyautogui.click(920,560)
    print("--step3 complete--")
    printer("----LEAVE COMPLETE----")

但是我在上面的代码中遇到了几个问题:

1:首先,“f”键无法正常工作。当我用这个替换热键代码时...

with keyboard.GlobalHotKeys({
    '<ctrl>+<alt>+h': on_activate_f5,
    '<ctrl>+<alt>+j': on_activate_f6}) as h:
    h.join()

...然后正确检测到 ctrl alt 和 h / j 键。然而,当我尝试使用所有 f 键(f6、f5、f10 等)时,虽然我没有收到错误消息,但 pynput 似乎没有检测到任何一个键:/

2:每当我尝试使用 pynput 键盘按转义键时,它只会离开应用程序窗口返回控制台。我根本不知道为什么。它实际上与其他键(key.space)等完美配合,但每次我使用 key.esc 时它都会离开窗口。

代码本身实际上要长得多(大约 300 行),因为它包括基本的 tkinter GUI、线程等。

如果问题出在代码的其余部分,那么如果有人觉得有必要,我将发送整个版本。但根据我的测试,我非常有信心错误就在这几行中。

基本上,如果有人可以向我解释“f”键如何/为什么不能与 pynput 一起使用以及为什么使用 Controller().press(key.esc) 离开窗口,我将非常感激。

补充信息:

  • Windows 10
  • Python 3.8
  • Pynput 1.7.6
  • Visual Studio 2019
  • 整个程序的导入完成:

节省您的时间,有任何问题都可以问!

python keyboard python-3.8 hotkeys pynput
2个回答
1
投票

您可以在任何窗口中按“alt+esc”找到答案。 如果在从热键中释放 alt 键之前按程序中的 esc 键,窗口将立即关闭,因为“alt+esc”是关闭窗口的热键。


0
投票

”和“”不起作用的原因是您无法使用该键类型。而是分别使用 '<116>''<117>'。热键的解析返回这些类型的键。

© www.soinside.com 2019 - 2024. All rights reserved.