【发布时间】:2018-02-16 21:37:49
【问题描述】:
我已经尝试了键盘监听器的所有代码。我遇到过一篇帖子,上面说 Mac 会阻止系统听键盘按键。我正在使用python。我也使用 pynput 作为库。我怎样才能让 Mac 听我的按键?它只听“Shift”、“Alt”和“Command”等特殊键。
【问题讨论】:
-
你在问如何为 mac 构建键盘记录器?
我已经尝试了键盘监听器的所有代码。我遇到过一篇帖子,上面说 Mac 会阻止系统听键盘按键。我正在使用python。我也使用 pynput 作为库。我怎样才能让 Mac 听我的按键?它只听“Shift”、“Alt”和“Command”等特殊键。
【问题讨论】:
这不是 pynput 中的错误,而是 os x 的安全特性。您必须以 root 身份运行 Python 才能绕过它。
sudo python3 app.py
如果您不想继续使用 sudo,永久解决方法是进入安全和隐私首选项并将 Python 添加到可访问性选项卡。
来自文档:
像这样使用 pynput.keyboard.Listener:
from pynput import keyboard def on_press(key): try: print('alphanumeric key {0} pressed'.format( key.char)) except AttributeError: print('special key {0} pressed'.format( key)) def on_release(key): print('{0} released'.format( key)) if key == keyboard.Key.esc: # Stop listener return False # Collect events until released with keyboard.Listener( on_press=on_press, on_release=on_release) as listener: listener.join()键盘监听器是一个threading.Thread,所有的回调都将是 从线程调用。
从任何地方调用 pynput.keyboard.Listener.stop,引发 StopException 或从回调中返回 False 以停止侦听器。
传递给回调的 key 参数是一个 pynput.keyboard.Key,用于 特殊键,普通字母数字键的 pynput.keyboard.KeyCode, 或者只是 None 用于未知键。
【讨论】: