Esempio n. 1
0
	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)
Esempio n. 2
0
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
 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)
Esempio n. 5
0
 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)
Esempio n. 6
0
 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)
Esempio n. 7
0
 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)
Esempio n. 8
0
    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()
Esempio n. 9
0
    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()
Esempio n. 10
0
    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()
Esempio n. 11
0
 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)
Esempio n. 12
0
 def test_keymap_properties(self):
     kh = KeyboardHelper(None)
     p = kh.get_keymap_properties()
     assert p and len(p) > 10
     kh.cleanup()
Esempio n. 13
0
 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)