diff options
author | Devaev Maxim <[email protected]> | 2019-09-30 00:43:35 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2019-09-30 00:43:35 +0300 |
commit | a089334371c13bd9ece2f04b8122204e14ee3661 (patch) | |
tree | 6cc1395cd6b2fb3c7d3493aeff4593e2374d3705 | |
parent | a60e4142b88f22e0de4d0d74b279754f7a3ea365 (diff) |
separate keyboard and mouse statuses
-rw-r--r-- | kvmd/plugins/hid/serial.py | 9 | ||||
-rw-r--r-- | 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() { |