27 lines
625 B
Python
27 lines
625 B
Python
# -*- coding: utf-8 -*-
|
|
import mouse
|
|
import fileinput
|
|
import json
|
|
import sys
|
|
|
|
class_by_name = {
|
|
'ButtonEvent': mouse.ButtonEvent,
|
|
'WheelEvent': mouse.WheelEvent,
|
|
'MoveEvent': mouse.MoveEvent,
|
|
}
|
|
|
|
def print_event_json(event):
|
|
# Could use json.dumps(event.__dict__()), but this way we guarantee semantic order.
|
|
d = event._asdict()
|
|
d['event_class'] = event.__class__.__name__
|
|
print(json.dumps(d))
|
|
sys.stdout.flush()
|
|
mouse.hook(print_event_json)
|
|
|
|
def load(line):
|
|
d = json.loads(line)
|
|
class_ = class_by_name[d['event_class']]
|
|
del d['event_class']
|
|
return class_(**d)
|
|
|
|
mouse.play(load(line) for line in fileinput.input()) |