DF-3590 / inject_mouse.py
#!/usr/bin/env python3 """Inject PS/2 mouse events into the guest via the QEMU HMP monitor socket.""" import socket, sys, time SOCK = "dfbsd-qemu/boot-mon.sock" def main(): dur = float(sys.argv[1]) if len(sys.argv) > 1 else 30.0 s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) s.connect(SOCK) s.settimeout(2.0) try: s.recv(4096) # banner except Exception: pass def cmd(c): try: s.sendall((c + "\n").encode()) time.sleep(0.02) try: s.settimeout(0.3) return s.recv(65536).decode(errors="replace") except socket.timeout: return "" except Exception as e: return "ERR %s" % e print(cmd("info mice")) t0 = time.time() i = 0 while time.time() - t0 < dur: dx = (i % 7) - 3 dy = ((i * 3) % 11) - 5 cmd("mouse_move %d %d" % (dx, dy)) if i % 500 == 0: cmd("mouse_button 1"); cmd("mouse_button 0") i += 1 time.sleep(0.002) print("sent %d moves" % i) main() |