问题
I am using pynput to record keystrokes via Listener on OS X Mojave. I am using Pycharm as my IDE for running the code.
I was not able to get it to work using the same example from the pynput site.
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()
I did step through it and I get no errors (unless I put the with
statement in a function, instead of in the main, but that's a known issue with threading in Mojave, from what I can tell after searching for that error), but everything stops at the .join()
statement, and I get nothing printed when I press and release a key on my keyboard.
回答1:
This is probably a bit late, but the answer is to go into:
- Settings ->
Security & Privacy
- Click on the
Privacy
tab - Click the
+
Hold downCMD
+SHIFT
+.
(so that you can see hidden files/folders) - Navigate to
/usr/local/bin
or wherever you have Python installed - Click
okay
.
That should do it.
Note
If you try to run your app via the terminal, you will need to add the terminal.app to the list of allowed apps, as done above for Python.
回答2:
Found the problem.
For some strange reasons; OSX is uber-picky about returning events, so unless you go in the security settings and enable Pycharm to be in the list of apps that are allowed to use accessibility, it won't work.
I didn't try on Windows yet, but I assume it will be the same issue. The only gripe I have is that I have no idea how to add Python itself to the list of supported accessibility apps; since the control panel does not allow me to go in /usr/local/bin
, which is where I have Python3 installed (via Brew).
回答3:
Some people have stated that adding IDLE to supported accessibility apps is what allows python itself to run the listener.
while your in a finder window, if you press cmd+shft+'.' (period key) it will show hidden files, which will allow you to navigate to usr/local/bin and look for your python implementation.
On windows this is slightly different, I always run python/pycharm as admin and it never gives me any issues.
来源:https://stackoverflow.com/questions/53088995/pynput-keyboard-listener-does-not-detect-keys-on-mac-os-x