How can I capture mouseevents and keyevents using python in the background on linux

I want to make a python script that can run in the background, but print text when a mouseevent or keyevent event occurs. Are there any libraries / built-in functions to achieve this? Or any system commands that I can call to get this information? Being root is not a problem.

+7
source share
2 answers

I think you could use python bindings for evdev: http://packages.python.org/evdev/index.html . In the tutorial, they give an example for the keyboard, but it should look like mouse events:

>>> from evdev import InputDevice, categorize, ecodes >>> from select import select >>> dev = InputDevice('/dev/input/event1') >>> print(dev) device /dev/input/event1, name "Dell Dell USB Keyboard", phys "usb-0000:00:12.1-2/input0" >>> while True: ... r,w,x = select([dev], [], []) ... for event in dev.read(): ... if event.type == ecodes.EV_KEY: ... print(categorize(event)) ... # hitting a and holding space key event at 1337016188.396030, 30 (KEY_A), down key event at 1337016188.492033, 30 (KEY_A), up key event at 1337016189.772129, 57 (KEY_SPACE), down key event at 1337016190.275396, 57 (KEY_SPACE), hold key event at 1337016190.284160, 57 (KEY_SPACE), up 
+11
source

Take a look at pynput , for example:

 from pynput.keyboard import Key, Listener #defining function to print when key is pressed def on_press(key): print('{0} pressed'.format( key)) #defining function to print when key is released def on_release(key): print('{0} release'.format( key)) if key == Key.esc: # Stop listener return False # Collect events until released with Listener( on_press=on_press, on_release=on_release) as listener: listener.join() 
+2
source

All Articles