我正在使用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()
语句上,当我按下并释放键盘上的键时,我什么也没打印。
答案 0 :(得分:1)
这可能有点晚了,但是答案是:
Security & Privacy
Privacy
标签+
并按住CMD
+ SHIFT
+ .
(这样您就可以查看隐藏
文件/文件夹)/usr/local/bin
或安装Python的任何地方okay
。应该这样做。
注意
如果您尝试通过终端运行应用程序,则需要将terminal.app添加到允许的应用程序列表中,就像上面对Python所做的那样。
答案 1 :(得分:1)
这也可能有点晚了,但简单的答案是进入:
答案 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和选项键,但是现在在超级用户中它可以获取键。