Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pynput键盘记录器仅返回Shift、Command、Space和Capslock键_Python_Macos - Fatal编程技术网

Python Pynput键盘记录器仅返回Shift、Command、Space和Capslock键

Python Pynput键盘记录器仅返回Shift、Command、Space和Capslock键,python,macos,Python,Macos,我希望这不是以前讨论过的话题。我的搜索结果没有返回任何相关信息,但请随时告诉我 我正在编写一个非常基本的Python键盘记录器(用于一个更大项目的一部分)。我使用pynput来监听击键,并使用日志模块将其写入txt文件(见下文)。到目前为止,它似乎还在工作,唯一的问题是它只记录shift、command、space和caps锁键。不记录所有其他按键,如字母、数字等 我正在运行OSX 10.12(Sierra),Python 3.5.2 如果您有任何关于原因(以及可能的解决方案)的建议/想法,我们

我希望这不是以前讨论过的话题。我的搜索结果没有返回任何相关信息,但请随时告诉我

我正在编写一个非常基本的Python键盘记录器(用于一个更大项目的一部分)。我使用pynput来监听击键,并使用日志模块将其写入txt文件(见下文)。到目前为止,它似乎还在工作,唯一的问题是它只记录shift、command、space和caps锁键。不记录所有其他按键,如字母、数字等

我正在运行OSX 10.12(Sierra),Python 3.5.2

如果您有任何关于原因(以及可能的解决方案)的建议/想法,我们将不胜感激

谢谢

    from pynput.keyboard import Key, Listener
    import logging

    log_dir = ""

    logging.basicConfig(filename=(log_dir + 'key_log.txt'), level=logging.DEBUG, format='%(asctime)s: %(message)s')

    def on_press(key):
        logging.info(str(key))

    with Listener(on_press=on_press) as listener:
        listener.join() 

单字符键和其他键的处理方式不同。为您的on_press功能尝试以下操作:

def on_press(key):
    try: logging.info(key.char) # letters, numbers etc
    except: logging.info(key.name) # other keys
快速解决方案:以root用户身份运行 这本书有一些有用的东西

MacOSX 出于安全原因,Mac OSX的最新版本限制了对键盘的监控。出于这个原因,其中一个 以下内容必须正确:

  • 进程必须以root用户身份运行。
  • 您的应用程序必须在“启用辅助访问”下的白色列表中 设备。请注意,这可能需要 您必须打包应用程序,否则整个Python安装都必须是白名单


请注意,这不适用于鼠标或触摸板的监控。

更多的研究发现了一些可能存在的问题。pynput 1.2概述文档()强调OSX的安全协议可能限制程序监视键盘的能力,并建议编译代码并将.exe文件白名单以使其正常工作。我使用pyinstaller-w-F进行了一次尝试,但似乎没有任何帮助。有人在这里有任何经验/意见吗?嗨,你能找到解决方案吗?我已经找了两天了..嗨@Prakash047,我在OSX中白名单了空闲。这似乎可以在空闲状态下执行代码(包括写入外部日志文件),但当我尝试将已编译的exe列入白名单时,它似乎不起作用。如果你能找到解决办法,请告诉我!嗨,山姆,这里又是一样的!!顺便问一下,你是如何把你的python代码编译成exe或app的?谢谢@祥瑞找到了解决办法