Linki

2012-09-12 38 views
7

arka planında python kullanarak mouseevents ve keyevents'ı nasıl yakalayabilirim Arka planda çalışabilen ancak bir mouseevent veya keyevent olduğunda metin yazdırabilen bir python betiği yapmak istiyorum. Bunu başarmak için herhangi bir kütüphane/yerleşik işlevsellik var mı? Ya da bu bilgiyi almak için arayabileceğim herhangi bir sistem komutu? Kök olmak sorun değil.Linki

+0

yüzden - bir keylogger gibi? –

+0

Evet. ... karakter sınırı ... – jett

+0

Girdi olaylarını '/ dev/input' içindeki cihazlardan okumalısınız. –

cevap

11

Sanırım, evde yaşananlar için python bağlamaları kullanabilirsiniz: http://packages.python.org/evdev/index.html. eğitimde bunlar klavye için bir örnek vermek, ama bu fare olayları için benzer olmalıdır:

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

örneğin pynput bir göz atın:

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