From 8dfd6473599d43405c67f3fab57dcf4325c59d95 Mon Sep 17 00:00:00 2001 From: zjamnik Date: Fri, 17 Apr 2026 22:42:25 +0000 Subject: [PATCH] Add app.py --- app.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 app.py diff --git a/app.py b/app.py new file mode 100644 index 0000000..39965b0 --- /dev/null +++ b/app.py @@ -0,0 +1,42 @@ +from flask import Flask, request, render_template, jsonify +import os + +app = Flask(__name__) + +KEYBOARD = "/dev/hidg0" +MOUSE = "/dev/hidg1" + +def send_keyboard(code): + # 8-byte HID keyboard report: [mod, 0, key, 0, 0, 0, 0, 0] + report = bytes([0, 0, code, 0, 0, 0, 0, 0]) + release = bytes([0] * 8) + with open(KEYBOARD, "wb") as f: + f.write(report) + f.write(release) + +def send_mouse(dx, dy, buttons): + # 4-byte HID mouse report: [buttons, dx, dy, wheel] + report = bytes([buttons & 0x07, dx & 0xFF, dy & 0xFF, 0]) + with open(MOUSE, "wb") as f: + f.write(report) + +@app.route("/") +def index(): + return render_template("index.html") + +@app.route("/key", methods=["POST"]) +def key(): + code = int(request.form["code"]) + send_keyboard(code) + return "OK" + +@app.route("/mouse", methods=["POST"]) +def mouse(): + dx = int(request.form.get("dx", 0)) + dy = int(request.form.get("dy", 0)) + buttons = int(request.form.get("buttons", 0)) + send_mouse(dx, dy, buttons) + return "OK" + +if __name__ == "__main__": + app.run(host="0.0.0.0", port=80)