#!/bin/bash # VM 화면의 좌표를 클릭한다 (usb-tablet 절대좌표). # 사용법: ./click.sh [화면폭 화면높이] 기본 1280x800 set -euo pipefail python3 - "$@" <<'PY' import json, socket, sys, time x, y = int(sys.argv[1]), int(sys.argv[2]) W = int(sys.argv[3]) if len(sys.argv) > 3 else 1280 H = int(sys.argv[4]) if len(sys.argv) > 4 else 800 s = socket.socket(socket.AF_UNIX); s.settimeout(20) s.connect("/home/claude/win-ci/qmp.sock"); f = s.makefile("rwb"); f.readline() def cmd(o): f.write((json.dumps(o)+"\n").encode()); f.flush() while True: m = json.loads(f.readline()) if "return" in m or "error" in m: return m cmd({"execute": "qmp_capabilities"}) ax, ay = int(x / W * 32767), int(y / H * 32767) ev = [{"type": "abs", "data": {"axis": "x", "value": ax}}, {"type": "abs", "data": {"axis": "y", "value": ay}}] print(cmd({"execute": "input-send-event", "arguments": {"events": ev}})) time.sleep(0.3) print(cmd({"execute": "input-send-event", "arguments": {"events": [ {"type": "btn", "data": {"down": True, "button": "left"}}]}})) time.sleep(0.15) print(cmd({"execute": "input-send-event", "arguments": {"events": [ {"type": "btn", "data": {"down": False, "button": "left"}}]}})) PY