Files
crossmouse/client.py
2026-07-31 16:44:10 -04:00

39 lines
906 B
Python

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()