2012-09-12 5 views
7

पर पृष्ठभूमि में पायथन का उपयोग करके माउसवेंट्स और कीवेंड्स कैप्चर कैसे कर सकता हूं, मैं एक पायथन स्क्रिप्ट बनाना चाहता हूं जो पृष्ठभूमि में चल सकता है लेकिन जब माउसवेन्ट या कीवेन्ट होता है तो टेक्स्ट प्रिंट करें। क्या यह प्राप्त करने के लिए कोई पुस्तकालय/अंतर्निहित कार्यक्षमता है? या कोई सिस्टम कमांड मैं इस जानकारी को पाने के लिए कॉल कर सकता हूं? जड़ होने के नाते कोई मुद्दा नहीं है।मैं लिनक्स

+0

तो - एक keylogger की तरह? –

+0

हां। ... चरित्र सीमा ... – jett

+0

आपको '/ dev/input' में डिवाइस से इनपुट इवेंट पढ़ना होगा। –

उत्तर

11

मुझे लगता है, आप evdev के लिए पाइथन बाइंडिंग का उपयोग कर सकते हैं: http://packages.python.org/evdev/index.html। ट्यूटोरियल में वे कीबोर्ड के लिए एक उदाहरण देता है, लेकिन यह माउस की घटनाओं के लिए समान होनी चाहिए:

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

उदाहरण के लिए, pynput पर एक नज़र डालें:

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