From a089334371c13bd9ece2f04b8122204e14ee3661 Mon Sep 17 00:00:00 2001 From: Devaev Maxim Date: Mon, 30 Sep 2019 00:43:35 +0300 Subject: separate keyboard and mouse statuses --- kvmd/plugins/hid/serial.py | 9 +++++++-- web/share/js/kvm/hid.js | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/kvmd/plugins/hid/serial.py b/kvmd/plugins/hid/serial.py index 5edf50a8..31ba0fd6 100644 --- a/kvmd/plugins/hid/serial.py +++ b/kvmd/plugins/hid/serial.py @@ -118,7 +118,7 @@ class _MouseButtonEvent(_BoolEvent): class _MouseWheelEvent(_IntEvent): def __post_init__(self) -> None: assert self.x == 0 # Горизонтальная прокрутка пока не поддерживается - assert -128 <= self.y <= 127 + assert -127 <= self.y <= 127 def make_command(self) -> bytes: return b"\x14\x00" + struct.pack(">b", self.y) + b"\x00\x00" @@ -188,7 +188,12 @@ class Plugin(BaseHid, multiprocessing.Process): # pylint: disable=too-many-inst multiprocessing.Process.start(self) def get_state(self) -> Dict: - return {"online": bool(self.__online_shared.value)} + online = bool(self.__online_shared.value) + return { + "online": online, + "keyboard": {"online": online}, + "mouse": {"online": online}, + } async def poll_state(self) -> AsyncGenerator[Dict, None]: prev_state: Dict = {} diff --git a/web/share/js/kvm/hid.js b/web/share/js/kvm/hid.js index 6fd5f6a0..772b4a45 100644 --- a/web/share/js/kvm/hid.js +++ b/web/share/js/kvm/hid.js @@ -95,8 +95,8 @@ export function Hid() { }; self.setState = function(state) { - __keyboard.setState(state); - __mouse.setState(state); + __keyboard.setState(state.keyboard); + __mouse.setState(state.mouse); }; var __releaseAll = function() { -- cgit v1.2.3