Coverage for /home/antoine/projects/xpra-git/dist/python3/lib64/python/xpra/server/keyboard_config_base.py : 46%
Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# -*- coding: utf-8 -*-
2# This file is part of Xpra.
3# Copyright (C) 2010-2018 Antoine Martin <antoine@xpra.org>
4# Xpra is released under the terms of the GNU GPL v2, or, at your option, any
5# later version. See the file COPYING for details.
8class KeyboardConfigBase:
9 """ Base class representing the keyboard configuration for a server.
10 """
12 def __init__(self):
13 self.enabled = True
14 self.owner = None
15 self.sync = True
16 self.pressed_translation = {}
18 def __repr__(self):
19 return "KeyboardConfigBase"
21 def get_info(self) -> dict:
22 return {
23 "enabled" : self.enabled,
24 "owner" : self.owner or "",
25 "sync" : self.sync,
26 }
28 def parse_options(self, props):
29 self.sync = props.boolget("keyboard_sync", True)
31 def get_hash(self):
32 return b""
34 def set_layout(self, layout, variant, options):
35 pass
37 def set_keymap(self, translate_only=False):
38 pass
40 def set_default_keymap(self):
41 pass
43 def make_keymask_match(self, modifier_list, ignored_modifier_keycode=None, ignored_modifier_keynames=None):
44 pass
46 def get_keycode(self, client_keycode, keyname, pressed, modifiers, keyval, keystr, group):
47 if not keyname and client_keycode<0:
48 return -1, group
49 if not pressed:
50 r = self.pressed_translation.get(client_keycode)
51 if r:
52 #del self.pressed_translation[client_keycode]
53 return r
54 keycode, group = self.do_get_keycode(client_keycode, keyname, pressed, modifiers, keyval, keystr, group)
55 if pressed and keycode not in (None, -1):
56 #keep track of it so we can unpress the same key:
57 self.pressed_translation[client_keycode] = keycode, group
58 return keycode, group
60 def do_get_keycode(self, client_keycode, keyname, pressed, modifiers, keyval, keystr, group):
61 from xpra.log import Logger
62 log = Logger("keyboard")
63 log("do_get_keycode%s", (client_keycode, keyname, pressed, modifiers, keyval, keystr, group))
64 log.warn("Warning: %s does not implement get_keycode!", type(self))
65 return -1
67 def is_modifier(self, _keycode):
68 #should be overriden in subclass
69 return False