Hide keyboard shortcuts

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. 

6 

7 

8class KeyboardConfigBase: 

9 """ Base class representing the keyboard configuration for a server. 

10 """ 

11 

12 def __init__(self): 

13 self.enabled = True 

14 self.owner = None 

15 self.sync = True 

16 self.pressed_translation = {} 

17 

18 def __repr__(self): 

19 return "KeyboardConfigBase" 

20 

21 def get_info(self) -> dict: 

22 return { 

23 "enabled" : self.enabled, 

24 "owner" : self.owner or "", 

25 "sync" : self.sync, 

26 } 

27 

28 def parse_options(self, props): 

29 self.sync = props.boolget("keyboard_sync", True) 

30 

31 def get_hash(self): 

32 return b"" 

33 

34 def set_layout(self, layout, variant, options): 

35 pass 

36 

37 def set_keymap(self, translate_only=False): 

38 pass 

39 

40 def set_default_keymap(self): 

41 pass 

42 

43 def make_keymask_match(self, modifier_list, ignored_modifier_keycode=None, ignored_modifier_keynames=None): 

44 pass 

45 

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 

59 

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 

66 

67 def is_modifier(self, _keycode): 

68 #should be overriden in subclass 

69 return False