mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-02-01 18:41:54 +08:00
otg mouse
This commit is contained in:
@@ -37,6 +37,7 @@ from ....validators.os import valid_abs_path
|
||||
from .. import BaseHid
|
||||
|
||||
from .keyboard import KeyboardProcess
|
||||
from .mouse import MouseProcess
|
||||
|
||||
|
||||
# =====
|
||||
@@ -44,11 +45,13 @@ class Plugin(BaseHid):
|
||||
def __init__( # pylint: disable=super-init-not-called
|
||||
self,
|
||||
keyboard: Dict[str, Any],
|
||||
mouse: Dict[str, Any],
|
||||
noop: bool,
|
||||
state_poll: float,
|
||||
) -> None:
|
||||
|
||||
self.__keyboard_proc = KeyboardProcess(noop=noop, **keyboard)
|
||||
self.__mouse_proc = MouseProcess(noop=noop, **mouse)
|
||||
|
||||
self.__state_poll = state_poll
|
||||
|
||||
@@ -64,19 +67,33 @@ class Plugin(BaseHid):
|
||||
"write_retries_delay": Option(0.1, type=valid_float_f01),
|
||||
},
|
||||
|
||||
"mouse": {
|
||||
"device": Option("", type=valid_abs_path, unpack_as="device_path"),
|
||||
"select_timeout": Option(1.0, type=valid_float_f01),
|
||||
"write_retries": Option(5, type=valid_int_f1),
|
||||
"write_retries_delay": Option(0.1, type=valid_float_f01),
|
||||
},
|
||||
|
||||
"noop": Option(False, type=valid_bool),
|
||||
"state_poll": Option(0.1, type=valid_float_f01),
|
||||
}
|
||||
|
||||
def start(self) -> None:
|
||||
self.__keyboard_proc.start()
|
||||
self.__mouse_proc.start()
|
||||
|
||||
def get_state(self) -> Dict:
|
||||
return {"online": self.__keyboard_proc.is_online()}
|
||||
keyboard_online = self.__keyboard_proc.is_online()
|
||||
mouse_online = self.__mouse_proc.is_online()
|
||||
return {
|
||||
"online": (keyboard_online and mouse_online),
|
||||
"keyboard": {"online": keyboard_online},
|
||||
"mouse": {"online": mouse_online},
|
||||
}
|
||||
|
||||
async def poll_state(self) -> AsyncGenerator[Dict, None]:
|
||||
prev_state: Dict = {}
|
||||
while self.__keyboard_proc.is_alive():
|
||||
while self.__keyboard_proc.is_alive() and self.__mouse_proc.is_alive():
|
||||
state = self.get_state()
|
||||
if state != prev_state:
|
||||
yield self.get_state()
|
||||
@@ -85,23 +102,28 @@ class Plugin(BaseHid):
|
||||
|
||||
async def reset(self) -> None:
|
||||
self.__keyboard_proc.send_reset_event()
|
||||
self.__mouse_proc.send_reset_event()
|
||||
|
||||
async def cleanup(self) -> None:
|
||||
self.__keyboard_proc.cleanup()
|
||||
try:
|
||||
self.__keyboard_proc.cleanup()
|
||||
finally:
|
||||
self.__mouse_proc.cleanup()
|
||||
|
||||
# =====
|
||||
|
||||
async def send_key_event(self, key: str, state: bool) -> None:
|
||||
self.__keyboard_proc.send_key_event(key, state)
|
||||
|
||||
async def send_mouse_move_event(self, to_x: int, to_y: int) -> None:
|
||||
pass
|
||||
|
||||
async def send_mouse_button_event(self, button: str, state: bool) -> None:
|
||||
pass
|
||||
self.__mouse_proc.send_button_event(button, state)
|
||||
|
||||
async def send_mouse_move_event(self, to_x: int, to_y: int) -> None:
|
||||
self.__mouse_proc.send_move_event(to_x, to_y)
|
||||
|
||||
async def send_mouse_wheel_event(self, delta_y: int) -> None:
|
||||
pass
|
||||
self.__mouse_proc.send_wheel_event(delta_y)
|
||||
|
||||
async def clear_events(self) -> None:
|
||||
self.__keyboard_proc.send_clear_event()
|
||||
self.__mouse_proc.send_clear_event()
|
||||
|
||||
Reference in New Issue
Block a user