Beispiel #1
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)
 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 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_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 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):
        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)
        kh.cleanup()
 def test_keymap_properties(self):
     kh = KeyboardHelper(None)
     p = kh.get_keymap_properties()
     assert p and len(p) > 10
     kh.cleanup()