68 lines
1.5 KiB
Python

from ipkvm import app, ui
from ipkvm import frame_buffer, esp32_serial
from flask import Response, render_template
from ipkvm.util.mkb import HIDKeyCode, HIDMouseScanCodes
def generate_frames():
while True:
frame_buffer.new_frame.wait()
frame_buffer.new_frame.clear()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame_buffer.cur_frame + b'\r\n')
@ui.on('key_down')
def handle_keydown(data: str):
msg = {
"key_down": HIDKeyCode[data].value
}
esp32_serial.mkb_queue.put(msg)
@ui.on('key_up')
def handle_keyup(data: str):
msg = {
"key_up": HIDKeyCode[data].value
}
esp32_serial.mkb_queue.put(msg)
@ui.on("mouse_move")
def handle_mousemove(data: list[int]):
msg = {
"mouse_coord": {
"x": data[0],
"y": data[1]
}
}
esp32_serial.mkb_queue.put(msg)
@ui.on('mouse_down')
def handle_mousedown(data: int):
msg = {
"mouse_down": HIDMouseScanCodes[data]
}
esp32_serial.mkb_queue.put(msg)
@ui.on('mouse_up')
def handle_mouseup(data: int):
msg = {
"mouse_up": HIDMouseScanCodes[data]
}
esp32_serial.mkb_queue.put(msg)
@app.route('/video_feed')
def video_feed():
return Response(generate_frames(),
mimetype='multipart/x-mixed-replace; boundary=frame')
@app.route('/')
def index():
return render_template('index.html')
"""@socketio.on("connect")
def kvm_client():
ui.start_background_task(mkb_handler)"""