diff options
author | Devaev Maxim <[email protected]> | 2020-10-08 15:26:37 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2020-10-08 15:26:37 +0300 |
commit | a0b920a9d6ca0a9b1ac65276e08292dc30aed2d8 (patch) | |
tree | 70e591dcbc6472ac9e6f3b7da750e7f29df1637d /kvmd/keyboard/keysym.py | |
parent | f1910f7c8ec085eece1adc56ff999527881e71d9 (diff) |
vnc: qemu ext keys
Diffstat (limited to 'kvmd/keyboard/keysym.py')
-rw-r--r-- | kvmd/keyboard/keysym.py | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/kvmd/keyboard/keysym.py b/kvmd/keyboard/keysym.py index 0f3568ed..a535a5e2 100644 --- a/kvmd/keyboard/keysym.py +++ b/kvmd/keyboard/keysym.py @@ -23,7 +23,6 @@ import pkgutil import functools -from typing import Tuple from typing import List from typing import Dict @@ -32,6 +31,7 @@ import Xlib.keysymdef from ..logging import get_logger from .mappings import At1Key +from .mappings import WebModifiers from .mappings import X11_TO_AT1 from .mappings import AT1_TO_WEB @@ -43,23 +43,6 @@ class SymmapModifiers: CTRL: int = 0x4 -def switch_symmap_modifiers(modifiers: int, code: int, state: bool) -> Tuple[bool, int]: - mod = 0 - if code == 65505 or code == 65506: # XK_Shift_L, XK_Shift_R - mod = SymmapModifiers.SHIFT - elif code == 65027: # AltGR aka XK_ISO_Level3_Shift - mod = SymmapModifiers.ALTGR - elif code == 65507 or code == 65508: # XK_Control_L, XK_Control_R - mod = SymmapModifiers.CTRL - if mod == 0: - return (False, modifiers) - if state: - modifiers |= mod - else: - modifiers &= ~mod - return (True, modifiers) - - def build_symmap(path: str) -> Dict[int, Dict[int, str]]: # https://github.com/qemu/qemu/blob/95a9457fd44ad97c518858a4e1586a5498f9773c/ui/keymaps.c logger = get_logger() @@ -74,9 +57,9 @@ def build_symmap(path: str) -> Dict[int, Dict[int, str]]: web_name = AT1_TO_WEB.get(key.code) if web_name is not None: if ( - (web_name in ["ShiftLeft", "ShiftRight"] and key.shift) # pylint: disable=too-many-boolean-expressions - or (web_name in ["AltLeft", "AltRight"] and key.altgr) - or (web_name in ["ControlLeft", "ControlRight"] and key.ctrl) + (web_name in WebModifiers.SHIFTS and key.shift) # pylint: disable=too-many-boolean-expressions + or (web_name in WebModifiers.ALTS and key.altgr) + or (web_name in WebModifiers.CTRLS and key.ctrl) ): logger.error("Invalid modifier key at mapping %s: %s / %s", src, web_name, key) continue |