3

我正在使用 pynput 通过 OS X 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()声明处,当我按下并释放键盘上的一个键时,我什么也没有打印出来。

4

5 回答 5

9

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

  1. 设置 ->Security & Privacy
  2. 单击Privacy选项卡
  3. 单击+按住CMD++ (以便您可以看到隐藏的文件/文件SHIFT.
  4. 导航到/usr/local/bin或安装了 Python 的任何位置
  5. 单击okay

那应该这样做。

笔记

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

于 2019-02-12T22:54:25.753 回答
2

发现了问题。

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

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

于 2018-10-31T18:03:25.840 回答
1

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

  • 偏爱
  • 安全与隐私
  • 输入监控 -> 确认 PyCharm
于 2021-01-15T07:30:13.837 回答
0

尝试超级用户 ($sudo su) 并在终端中运行您的 python 代码,我认为它应该可以工作

我正在使用 OSX 10.12,pynput 在按下时只得到 cmd ctrl fn 和选项键,但现在在超级用户中它得到了键。

于 2020-05-04T04:59:34.867 回答
0

有人说,将 IDLE 添加到支持的辅助功能应用程序是允许 python 本身运行侦听器的原因。

当您在查找器窗口中时,如果您按 cmd+shft+'.' (句点键)它将显示隐藏文件,这将允许您导航到 usr/local/bin 并查找您的 python 实现。

在 Windows 上,这略有不同,我总是以管理员身份运行 python/pycharm,它从来没有给我任何问题。

于 2019-01-09T19:23:22.550 回答