def test_parse_shortcuts(self): kh = KeyboardHelper(None) shortcuts = [ 'Control+Menu:toggle_keyboard_grab', 'Shift+Menu:toggle_pointer_grab', 'Shift+F11:toggle_fullscreen', '#+F1:show_menu', '#+F2:show_start_new_command', '#+F3:show_bug_report', '#+F4:quit', '#+F5:increase_quality', '#+F6:decrease_quality', '#+F7:increase_speed', '#+F8:decrease_speed', '#+F10:magic_key', '#+F11:show_session_info', '#+F12:toggle_debug', '#+plus:scaleup', '#+minus:scaledown', '#+underscore:scaledown', '#+KP_Add:scaleup', '#+KP_Subtract:scaledown', '#+KP_Multiply:scalereset', '#+bar:scalereset', '#+question:scalingoff', ] parsed = kh.parse_shortcuts(shortcuts) assert len(parsed)>10 def noop(): pass window = AdHocStruct() window.quit = noop assert kh.key_handled_as_shortcut(window, "F4", ("mod1", "shift"), True) assert not kh.key_handled_as_shortcut(window, "F1", (), True)
def cleanup(self): KeyboardHelper.cleanup(self) if self._keymap_change_handler_id: try: self._keymap.disconnect(self._keymap_change_handler_id) self._keymap_change_handler_id = None except Exception as e: log.warn("failed to disconnect keymap change handler: %s", e)
def cleanup(self): KeyboardHelper.cleanup(self) if self._keymap_change_handler_id: try: self._keymap.disconnect(self._keymap_change_handler_id) self._keymap_change_handler_id = None except Exception as e: log.warn("failed to disconnect keymap change handler: %s", e)
def __init__(self, *args): KeyboardHelper.__init__(self, *args) #used for delaying the sending of keymap changes #(as we may be getting dozens of such events at a time) self._keymap_changing = False self._keymap_change_handler_id = None self._keymap = get_default_keymap() self.update() if self._keymap: self._keymap_change_handler_id = self._keymap.connect("keys-changed", self.keymap_changed)
def __init__(self, net_send, keyboard_sync, key_shortcuts, send_layout, send_keymap): self.send_layout = send_layout self.send_keymap = send_keymap KeyboardHelper.__init__(self, net_send, keyboard_sync, key_shortcuts) self._keymap_changing = False try: self._keymap = gdk.keymap_get_default() except: self._keymap = None self._do_keys_changed() if self._keymap: self._keymap.connect("keys-changed", self._keys_changed)
def __init__(self, net_send, keyboard_sync, key_shortcuts): KeyboardHelper.__init__(self, net_send, keyboard_sync, key_shortcuts) #used for delaying the sending of keymap changes #(as we may be getting dozens of such events at a time) self._keymap_changing = False self._keymap_change_handler_id = None try: self._keymap = gdk.keymap_get_default() except: self._keymap = None self.update() if self._keymap: self._keymap_change_handler_id = self._keymap.connect("keys-changed", self._keys_changed)
def __init__(self, net_send, keyboard_sync, key_shortcuts): KeyboardHelper.__init__(self, net_send, keyboard_sync, key_shortcuts) #used for delaying the sending of keymap changes #(as we may be getting dozens of such events at a time) self._keymap_changing = False self._keymap_change_handler_id = None try: self._keymap = gdk.keymap_get_default() except: self._keymap = None self.update() if self._keymap: self._keymap_change_handler_id = self._keymap.connect("keys-changed", self.keymap_changed)
def test_modifier(self): kh = KeyboardHelper(None) from xpra.gtk_common.gtk_util import SHIFT_MASK, LOCK_MASK, CONTROL_MASK, META_MASK #, SUPER_MASK, HYPER_MASK def checkmask(mask, *modifiers): #print("checkmask(%s, %s)", mask, modifiers) mods = kh.mask_to_names(mask) assert set(mods) == set( modifiers), "expected %s got %s" % (modifiers, mods) checkmask(SHIFT_MASK, "shift") checkmask(LOCK_MASK, "lock") if getattr(kh.keyboard, "swap_keys", False): checkmask(SHIFT_MASK | META_MASK, "shift", "control") #turn swap off and run again: kh.keyboard.swap_keys = False checkmask(SHIFT_MASK | CONTROL_MASK, "shift", "control") kh.cleanup()
def test_modifier(self): kh = KeyboardHelper(None) def checkmask(mask, *modifiers): #print("checkmask(%s, %s)", mask, modifiers) mods = kh.mask_to_names(mask) assert set(mods) == set( modifiers), "expected %s got %s" % (modifiers, mods) from gi.repository import Gdk checkmask(Gdk.ModifierType.SHIFT_MASK, "shift") checkmask(Gdk.ModifierType.LOCK_MASK, "lock") if getattr(kh.keyboard, "swap_keys", False): checkmask(Gdk.ModifierType.SHIFT_MASK | Gdk.ModifierType.META_MASK, "shift", "control") #turn swap off and run again: kh.keyboard.swap_keys = False checkmask(Gdk.ModifierType.SHIFT_MASK | Gdk.ModifierType.CONTROL_MASK, "shift", "control") kh.cleanup()
def test_parse_shortcuts(self): shortcuts = [ 'Control+Menu:toggle_keyboard_grab', 'Shift+Menu:toggle_pointer_grab', 'Shift+F11:toggle_fullscreen', '#+F1:show_menu', '#+F2:show_start_new_command', '#+F3:show_bug_report', '#+F4:quit', '#+F5:increase_quality', '#+F6:decrease_quality', '#+F7:increase_speed', '#+F8:decrease_speed', '#+F10:magic_key', '#+F11:show_session_info', '#+F12:toggle_debug', '#+plus:scaleup', '#+minus:scaledown', '#+underscore:scaledown', '#+KP_Add:scaleup', '#+KP_Subtract:scaledown', '#+KP_Multiply:scalereset', '#+bar:scalereset', '#+question:scalingoff', ] kh = KeyboardHelper(None, key_shortcuts=shortcuts) parsed = kh.parse_shortcuts() assert kh.shortcut_modifiers, "no shortcut modifiers: %s" % ( kh.shortcut_modifiers, ) assert len(parsed) > 10, "not enough shortcuts parsed: %s" % (parsed, ) def noop(): pass window = AdHocStruct() window.quit = noop modifier_names = kh.get_modifier_names() modifiers_used = tuple( modifier_names.get(x, x) for x in kh.shortcut_modifiers) assert kh.key_handled_as_shortcut(window, "F4", modifiers_used, True) assert not kh.key_handled_as_shortcut(window, "F1", (), True) kh.cleanup()
def __init__(self, net_send, keyboard_sync, key_shortcuts, send_layout, send_keymap): self.send_layout = send_layout self.send_keymap = send_keymap KeyboardHelper.__init__(self, net_send, keyboard_sync, key_shortcuts)
def test_keymap_properties(self): kh = KeyboardHelper(None) p = kh.get_keymap_properties() assert p and len(p) > 10 kh.cleanup()
def __init__(self, net_send, keyboard_sync, key_shortcuts, send_layout, send_keymap): self.send_layout = send_layout self.send_keymap = send_keymap KeyboardHelper.__init__(self, net_send, keyboard_sync, key_shortcuts)