OSX Pynput键盘侦听器无法按预期工作

时间:2018-10-31 17:26:19

标签: python-3.x

我正在使用Pynput在OSX Mojave上通过监听器记录击键。我正在使用pycharm作为IDE来运行代码。

使用pynput网站上的基本示例,到目前为止,我无法使其正常工作。

from pynput.keyboard import Listener as key_listener

class recorder:

    def on_press(self, key):
        print(key)

    def on_release(self, key):
        print(key)


if __name__ == "__main__":
    testme = recorder()

    with key_listener(on_press=testme.on_press, on_release=testme.on_release) as listener:
        listener.join()

我确实完成了所有步骤,并且没有任何错误(除非我将with语句放在函数中而不是在main中,但这是Mojave中线程处理的一个已知问题,据我所知,可以搜索该错误) ,但一切都停留在.join()语句上,当我按下并释放键盘上的键时,我什么也没打印。

5 个答案:

答案 0 :(得分:1)

这可能有点晚了,但是答案是:

  1. 设置-> Security & Privacy
  2. 点击Privacy标签
  3. 点击+并按住CMD + SHIFT + .(这样您就可以查看隐藏 文件/文件夹
  4. 导航至/usr/local/bin或安装Python的任何地方
  5. 点击okay

应该这样做。

注意

如果您尝试通过终端运行应用程序,则需要将terminal.app添加到允许的应用程序列表中,就像上面对Python所做的那样。

答案 1 :(得分:1)

这也可能有点晚了,但简单的答案是进入:

  • 偏好
  • 安全和隐私
  • 输入监控 -> 确认 PyCharm

答案 2 :(得分:0)

发现了问题。

出于某些奇怪的原因; OSX对于返回事件非常挑剔,因此除非您进入安全设置并将Pycharm允许进入允许使用辅助功能的应用程序列表,否则它将无法正常工作。

我还没有在Windows上尝试过,但是我认为这将是同样的问题。我唯一的困扰是我不知道如何将Python本身添加到受支持的辅助功能应用程序列表中。因为控制面板不允许我进入/usr/local/bin,这是我安装Python3(通过Brew)的地方。

答案 3 :(得分:0)

有人指出,将IDLE添加到受支持的辅助功能应用程序中是使python本身可以运行侦听器的原因。

在取景器窗口中,如果您按cmd + shft +'。 (句号),它将显示隐藏文件,这将使您可以导航到usr / local / bin并查找python实现。

在Windows上这略有不同,我始终以admin身份运行python / pycharm,但从来没有给我任何问题。

答案 4 :(得分:0)

尝试超级用户($ sudo su)并在终端中运行python代码 它应该工作

我正在使用OSX 10.12,并且pynput在按下时仅获得cmd ctrl fn和选项键,但是现在在超级用户中它可以获取键。