2012-09-12 24 views
7

Tôi muốn tạo một tập lệnh python có thể chạy ở chế độ nền nhưng in văn bản khi có sự cố hoặc sự kiện xảy ra. Có bất kỳ thư viện/chức năng dựng sẵn nào để đạt được điều này không? Hoặc bất kỳ lệnh hệ thống nào tôi có thể gọi để nhận thông tin này? Là gốc không có vấn đề gì.Làm thế nào tôi có thể chụp được các từ khóa và các từ khóa bằng cách sử dụng python trong nền trên linux

+0

như vậy - như một keylogger? –

+0

Có. ... giới hạn ký tự ... – jett

+0

Bạn phải đọc các sự kiện đầu vào từ các thiết bị trong '/ dev/input'. –

Trả lời

11

Tôi đoán, bạn có thể sử dụng các ràng buộc python cho evdev: http://packages.python.org/evdev/index.html. Trong hướng dẫn họ đưa ra một ví dụ cho bàn phím, nhưng nó phải là tương tự cho các sự kiện chuột:

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

Hãy xem pynput, ví dụ:

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