vnc: force absolute usb mouse_output

This commit is contained in:
Maxim Devaev
2023-06-05 16:37:02 +03:00
parent 82aedb9c4e
commit 66c1d321d2
4 changed files with 36 additions and 15 deletions

View File

@@ -82,6 +82,7 @@ from ..validators.net import valid_mac
from ..validators.net import valid_ssl_ciphers
from ..validators.hid import valid_hid_key
from ..validators.hid import valid_hid_mouse_output
from ..validators.hid import valid_hid_mouse_move
from ..validators.kvm import valid_stream_quality
@@ -662,8 +663,9 @@ def _get_config_scheme() -> dict:
},
"vnc": {
"desired_fps": Option(30, type=valid_stream_fps),
"keymap": Option("/usr/share/kvmd/keymaps/en-us", type=valid_abs_file),
"desired_fps": Option(30, type=valid_stream_fps),
"mouse_output": Option("usb", type=valid_hid_mouse_output),
"keymap": Option("/usr/share/kvmd/keymaps/en-us", type=valid_abs_file),
"server": {
"host": Option("::", type=valid_ip_or_host),

View File

@@ -69,6 +69,7 @@ def main(argv: (list[str] | None)=None) -> None:
x509_key_path=config.server.tls.x509.key,
desired_fps=config.desired_fps,
mouse_output=config.mouse_output,
keymap_path=config.keymap,
kvmd=KvmdClient(user_agent=user_agent, **config.kvmd._unpack()),

View File

@@ -77,6 +77,7 @@ class _Client(RfbClient): # pylint: disable=too-many-instance-attributes
x509_key_path: str,
desired_fps: int,
mouse_output: str,
keymap_name: str,
symmap: dict[int, dict[int, str]],
@@ -105,6 +106,7 @@ class _Client(RfbClient): # pylint: disable=too-many-instance-attributes
)
self.__desired_fps = desired_fps
self.__mouse_output = mouse_output
self.__keymap_name = keymap_name
self.__symmap = symmap
@@ -159,6 +161,9 @@ class _Client(RfbClient): # pylint: disable=too-many-instance-attributes
assert self.__kvmd_session
try:
logger.info("%s [kvmd]: Applying HID params: mouse_output=%s ...", self._remote, self.__mouse_output)
await self.__kvmd_session.hid.set_params(mouse_output=self.__mouse_output)
async with self.__kvmd_session.ws() as self.__kvmd_ws:
logger.info("%s [kvmd]: Connected to KVMD websocket", self._remote)
self.__stage3_ws_connected.set_passed()
@@ -429,6 +434,7 @@ class VncServer: # pylint: disable=too-many-instance-attributes
vencrypt_enabled: bool,
desired_fps: int,
mouse_output: str,
keymap_path: str,
kvmd: KvmdClient,
@@ -484,6 +490,7 @@ class VncServer: # pylint: disable=too-many-instance-attributes
x509_cert_path=x509_cert_path,
x509_key_path=x509_key_path,
desired_fps=desired_fps,
mouse_output=mouse_output,
keymap_name=keymap_name,
symmap=symmap,
kvmd=kvmd,