diff --git a/capture.py b/capture.py index cdaf786..05f23fd 100644 --- a/capture.py +++ b/capture.py @@ -41,40 +41,39 @@ def main() -> None: print("You cannot specify 'delay' and 'trigger'") sys.exit(1) - now = time.time() _do_delay(args.delay) _do_trigger(args.trigger) + LOGGER.info("Capturing...") + now = time.time() # Add dummy events to lock in the time start - event_queue = queue.Queue() - event_queue.put( - mouse.ButtonEvent( - event_type=mouse.UP, - button=mouse.RIGHT, - time=now, - )) - event_queue.put( - keyboard.KeyboardEvent( - event_type=keyboard.KEY_UP, - name=" ", - scan_code=57, - time=now, - ) - ) - hook = functools.partial(_on_hook, event_queue) - keyhook = keyboard.hook(hook) - mousehook = mouse.hook(hook) - print("Capturing...") - try: - keyboard.wait(args.trigger) - except KeyboardInterrupt: - keyboard.unhook(keyhook) - mouse.unhook(mousehook) + with open(args.output, "w") as output: + hook = functools.partial(_on_hook, now, output) + keyhook = keyboard.hook(hook) + mousehook = mouse.hook(hook) + try: + keyboard.wait(args.trigger) + except KeyboardInterrupt: + keyboard.unhook(keyhook) + mouse.unhook(mousehook) + LOGGER.info("Wrote %s", args.output) - _save_events(event_queue, args.output) - -def _on_hook(event_queue, event): +def _on_hook(start, output, event): LOGGER.debug(str(event)) - event_queue.put(event, block=False) + relative_time = event.time - start + if isinstance(event, keyboard.KeyboardEvent): + output.write( + f"{relative_time},k,{event.event_type},{event.scan_code},{event.name}\n") + elif isinstance(event, mouse.ButtonEvent): + output.write( + f"{relative_time},mb,{event.event_type},{event.button}\n") + elif isinstance(event, mouse.MoveEvent): + output.write( + f"{relative_time},mm,{event.x},{event.y}\n") + elif isinstance(event, mouse.WheelEvent): + output.write( + f"{relative_time},mw,{event.delta}\n") + else: + raise ValueError(f"{event} is not recognized") def _do_delay(delay: int) -> None: if not delay: diff --git a/playback.py b/playback.py index d7f72e9..26c6867 100644 --- a/playback.py +++ b/playback.py @@ -73,6 +73,7 @@ def _play_event_mouse(event) -> None: mouse.press(event.button) elif isinstance(event, mouse.MoveEvent): mouse.move(event.x, event.y, absolute=True) + # mouse.move(event.x, event.y) elif isinstance(event, mouse.WheelEvent): mouse.wheel(event.delta)