summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2019-09-30 00:43:35 +0300
committerDevaev Maxim <[email protected]>2019-09-30 00:43:35 +0300
commita089334371c13bd9ece2f04b8122204e14ee3661 (patch)
tree6cc1395cd6b2fb3c7d3493aeff4593e2374d3705
parenta60e4142b88f22e0de4d0d74b279754f7a3ea365 (diff)
separate keyboard and mouse statuses
-rw-r--r--kvmd/plugins/hid/serial.py9
-rw-r--r--web/share/js/kvm/hid.js4
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() {