"""Private X11 window that reports physical OCR click events.""" import json import sys from Xlib import X, Xatom, display connection = display.Display() screen = connection.screen() root = screen.root window = root.create_window(20, 20, 240, 140, 0, screen.root_depth, X.InputOutput, X.CopyFromParent, event_mask=X.ButtonPressMask | X.ButtonReleaseMask) window.map() root.change_property(connection.intern_atom("_NET_ACTIVE_WINDOW"), Xatom.WINDOW, 32, [window.id]) window.set_input_focus(X.RevertToParent, X.CurrentTime) connection.sync() initial_pointer = root.query_pointer() print(json.dumps({"window": window.id, "width": screen.width_in_pixels, "height": screen.height_in_pixels, "pointer": [initial_pointer.root_x, initial_pointer.root_y]}), flush=True) for line in sys.stdin: if line.strip() != "events": break connection.sync() events = [] while connection.pending_events(): event = connection.next_event() if event.type in (X.ButtonPress, X.ButtonRelease): events.append({"pressed": event.type == X.ButtonPress, "button": event.detail, "x": event.root_x, "y": event.root_y}) pointer = root.query_pointer() print(json.dumps({"events": events, "pointer": [pointer.root_x, pointer.root_y]}), flush=True) connection.close()