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)