2012-09-12 44 views
7

Me gustaría hacer un script de python que se pueda ejecutar en segundo plano pero que imprima texto cuando ocurra un evento de mouse o keyevent. ¿Hay alguna biblioteca/funcionalidad incorporada para lograr esto? O cualquier comando del sistema que pueda llamar para obtener esta información? Ser root no es un problema.Cómo puedo capturar mouseeventos y keyevents usando python en background en linux

+0

manera - como un keylogger? –

+0

Sí. ... límite de caracteres ... – jett

+0

Debe leer los eventos de entrada de los dispositivos en '/ dev/input'. –

Respuesta

11

Supongo que puede usar enlaces de python para evdev: http://packages.python.org/evdev/index.html. En el tutorial que dan un ejemplo para el teclado, pero debe ser similar para los eventos del ratón:

>>> 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 
2

Tome un vistazo a pynput, por ejemplo:

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() 
Cuestiones relacionadas