pynput键盘侦听器在Mac OS X上检测不到按键



我使用pynput通过OS X Mojave上的Listener记录击键。我使用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()语句上,当我按下并释放键盘上的键时,我什么也没有打印出来。

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

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

应该这样。

注意

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

发现问题。

由于一些奇怪的原因;OSX对返回事件非常挑剔,所以除非你在安全设置中启用Pycharm,使其位于允许使用辅助功能的应用程序列表中,否则它不会起作用。

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

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

  • 首选项
  • 安全性&隐私
  • 输入监控->确认PyCharm

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

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

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

我认为,尝试superuser($sudo-su(并在终端中运行您的python代码它应该工作

Im使用OSX 10.12,pynput在按下时只获得cmd-ctrl-fn和选项键,但现在在超级用户中它获得了这些键。

最新更新