mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-02-01 18:41:54 +08:00
some keyboard code
This commit is contained in:
@@ -29,8 +29,12 @@ class Ps2Keyboard(multiprocessing.Process):
|
||||
self.__event.set()
|
||||
self.join()
|
||||
|
||||
def send_byte(self, code: int) -> None:
|
||||
self.__queue.put(code)
|
||||
def send_event(self, code: str, state: bool) -> None:
|
||||
if state:
|
||||
get_logger().info("Key pressed: %s", code)
|
||||
else:
|
||||
get_logger().info("Key released: %s", code)
|
||||
# TODO: self.__queue.put(code)
|
||||
|
||||
def cleanup(self) -> None:
|
||||
if self.is_alive():
|
||||
|
||||
@@ -124,11 +124,25 @@ class Server: # pylint: disable=too-many-instance-attributes
|
||||
aiohttp.web.run_app(app, host=host, port=port, print=self.__run_app_print)
|
||||
|
||||
async def __ws_handler(self, request: aiohttp.web.Request) -> aiohttp.web.WebSocketResponse:
|
||||
logger = get_logger(0)
|
||||
ws = aiohttp.web.WebSocketResponse(heartbeat=self.__heartbeat)
|
||||
await ws.prepare(request)
|
||||
await self.__register_socket(ws)
|
||||
async for msg in ws:
|
||||
if msg.type == aiohttp.web.WSMsgType.TEXT:
|
||||
try:
|
||||
event = json.loads(msg.data)
|
||||
except Exception:
|
||||
logger.exception("Can't parse JSON event from websocket")
|
||||
else:
|
||||
if event.get("event_type") == "key_event":
|
||||
key_code = str(event.get("key_code", ""))[:64].strip()
|
||||
key_state = event.get("key_state")
|
||||
if key_code and key_state in [True, False]:
|
||||
self.__keyboard.send_event(key_code, key_state)
|
||||
continue
|
||||
else:
|
||||
logger.error("Invalid websocket event: %r", event)
|
||||
await ws.send_str(json.dumps({"msg_type": "echo", "msg": msg.data}))
|
||||
else:
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user