import socket import time from evdev import UInput, ecodes as e # Create a virtual mouse device ui = UInput( { e.EV_REL: [e.REL_X, e.REL_Y], e.EV_KEY: [e.BTN_LEFT, e.BTN_RIGHT] }, name='virtual-mouse' ) HOST = '0.0.0.0' PORT = 2025 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind((HOST, PORT)) print(f"Listening on {HOST}:{PORT}") try: while True: data, addr = sock.recvfrom(1024) x_str, y_str = data.decode().split(',') dx = int(float(x_str)) dy = int(float(y_str)) # Note: uinput typically handles relative motion (REL_X / REL_Y) ui.write(e.EV_REL, e.REL_X, dx) ui.write(e.EV_REL, e.REL_Y, dy) ui.syn() print(f"Moved mouse relative: dX={dx}, dY={dy}") except KeyboardInterrupt: print("\nUDP server shutting down.") finally: ui.close() sock.close()