2012-09-12 6 views
7

私は、背景で実行できるテキストスクリプトを作成したいと思いますが、mouseeventやkeyeventが発生したときにテキストを表示します。これを実現するライブラリ/組み込み機能はありますか?または、私がこの情報を取得するために呼び出すことができるシステムコマンド?根源は何の問題もありません。Linuxでバックグラウンドでpythonを使ってmouseeventsとkeyeventsをキャプチャするには

+0

そう - キーロガーのような? –

+0

はい。 ...文字制限... – jett

+0

'/ dev/input'のデバイスから入力イベントを読み込む必要があります。 –

答えて

11

evdev:http://packages.python.org/evdev/index.htmlのpythonバインディングを使用すると思います。チュートリアルでは、彼らは、キーボードのための例を与えるが、それはマウスイベントのために類似しているべきである:

>>> 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() 
関連する問題