예제 #1
0
 def update_modifier_map(self, display, xkbmap_mod_meanings):
     try:
         from xpra.x11.gtk_x11.keys import grok_modifier_map
         self.modifier_map = grok_modifier_map(display, xkbmap_mod_meanings)
     except ImportError:
         self.modifier_map = MODIFIER_MAP
     log.debug("update_modifier_map(%s, %s) modifier_map=%s", display, xkbmap_mod_meanings, self.modifier_map)
예제 #2
0
파일: keyboard.py 프로젝트: ljmljz/xpra
 def update_modifier_map(self, display, xkbmap_mod_meanings):
     try:
         from xpra.x11.gtk_x11.keys import grok_modifier_map
         self.modifier_map = grok_modifier_map(display, xkbmap_mod_meanings)
     except ImportError:
         self.modifier_map = MODIFIER_MAP
     try:
         dn = "%s %s" % (type(display).__name__, display.get_name())
     except Exception as e:
         dn = str(display)
     log("update_modifier_map(%s, %s) modifier_map=%s", dn, xkbmap_mod_meanings, self.modifier_map)
예제 #3
0
파일: keyboard.py 프로젝트: TianyouLi/Xpra
 def update_modifier_map(self, display, xkbmap_mod_meanings):
     try:
         from xpra.x11.gtk_x11.keys import grok_modifier_map
         self.modifier_map = grok_modifier_map(display, xkbmap_mod_meanings)
     except ImportError:
         self.modifier_map = MODIFIER_MAP
     try:
         dn = "%s %s" % (type(display).__name__, display.get_name())
     except:
         dn = str(display)
     log("update_modifier_map(%s, %s) modifier_map=%s", dn,
         xkbmap_mod_meanings, self.modifier_map)
예제 #4
0
파일: keyboard.py 프로젝트: svn2github/Xpra
 def update_modifier_map(self, display, xkbmap_mod_meanings):
     try:
         from xpra.x11.gtk_x11.keys import grok_modifier_map
         self.modifier_map = grok_modifier_map(display, xkbmap_mod_meanings)
     except ImportError:
         self.modifier_map = MODIFIER_MAP
     #force re-query on next call:
     self.keymap_modifiers = None
     try:
         dn = "%s %s" % (type(display).__name__, display.get_name())
     except:
         dn = str(display)
     log("update_modifier_map(%s, %s) modifier_map=%s", dn, xkbmap_mod_meanings, self.modifier_map)
예제 #5
0
    def test_grok_modifier_map(self):
        self.clear_xmodmap()
        mm = keys.grok_modifier_map(self.display)
        print(mm)
        assert mm == {
            "shift": 1,
            "lock": 2,
            "control": 4,
            "mod1": 8,
            "mod2": 16,
            "mod3": 32,
            "mod4": 64,
            "mod5": 128,
            "scroll": 0,
            "num": 0,
            "meta": 0,
            "super": 0,
            "hyper": 0,
            "alt": 0,
            "nuisance": 2
        }

        self.xmodmap("""add Mod1 = Num_Lock Hyper_L
                        add Mod2 = Hyper_R Meta_L Alt_L
                        add Mod3 = Super_R
                        add Mod4 = Alt_R Meta_R Super_L
                        add Mod5 = Scroll_Lock Super_R
                        """)
        mm = keys.grok_modifier_map(self.display)
        print(mm)
        assert mm["scroll"] == 128
        assert mm["num"] == 8
        assert mm["meta"] == 16 | 64
        assert mm["super"] == 32 | 64 | 128
        assert mm["hyper"] == 8 | 16
        assert mm["alt"] == 16 | 64
        assert mm["nuisance"] == 2 | 8 | 128
예제 #6
0
    def test_parse_unparse_keys(self):
        self.clear_xmodmap()
        self.xmodmap("""add Mod1 = Meta_L Meta_R Alt_L
                        !add Mod2 =
                        add Mod3 = Super_L Super_R
                        !add Mod4 =
                        add Mod5 = Scroll_Lock
                        keycode 240 = p P
                        """)
        gtk.gdk.flush()
        mm = keys.grok_modifier_map(self.display)
        keymap = gtk.gdk.keymap_get_for_display(self.display)

        o_keyval = gtk.gdk.keyval_from_name("o")
        o_keycode = keymap.get_entries_for_keyval(o_keyval)[0][0]

        assert parse_key("o", keymap, mm) == (0, [o_keycode])
        assert parse_key("O", keymap, mm) == (0, [o_keycode])
        assert parse_key("<alt>O", keymap, mm) == (8, [o_keycode])
        assert parse_key("<ALT>O", keymap, mm) == (8, [o_keycode])
        assert parse_key("<meTa>O", keymap, mm) == (8, [o_keycode])
        assert parse_key("<meTa><mod5>O", keymap, mm) == (8, [o_keycode])
        assert parse_key("<mod2>O", keymap, mm) == (16, [o_keycode])
        assert (parse_key("<mod4><mod3><MOD1><mod3>O", keymap,
                          mm) == (8 | 32 | 64, [o_keycode]))

        p_keyval = gtk.gdk.keyval_from_name("p")
        p_keycodes = [
            entry[0] for entry in keymap.get_entries_for_keyval(p_keyval)
        ]
        assert len(p_keycodes) > 1
        assert parse_key("P", keymap, mm) == (0, p_keycodes)
        assert parse_key("<alt>p", keymap, mm) == (8, p_keycodes)

        assert unparse_key(0, o_keycode, keymap, mm) == "o"
        assert unparse_key(8, o_keycode, keymap, mm) == "<alt>o"
        assert unparse_key(16, o_keycode, keymap, mm) == "<mod2>o"
        assert unparse_key(32, o_keycode, keymap, mm) == "<super>o"
        assert (unparse_key(16 | 32, o_keycode, keymap,
                            mm) == "<mod2><super>o")
        assert (unparse_key(8 | 32, o_keycode, keymap, mm) == "<super><alt>o")
        assert (unparse_key(1 | 2 | 4, o_keycode, keymap,
                            mm) == "<shift><control>o")
예제 #7
0
 def compute_modifier_map(self):
     self.modifier_map = grok_modifier_map(gtk.gdk.display_get_default(), self.xkbmap_mod_meanings)
     log("modifier_map(%s)=%s", self.xkbmap_mod_meanings, self.modifier_map)
예제 #8
0
 def compute_modifier_map(self):
     self.modifier_map = grok_modifier_map(gtk.gdk.display_get_default(), self.xkbmap_mod_meanings)
     log("modifier_map(%s)=%s", self.xkbmap_mod_meanings, self.modifier_map)
예제 #9
0
 def test_grok_modifier_map(self):
     from xpra.x11.gtk_x11.keys import grok_modifier_map
     from gi.repository.Gdk import Display
     display = Display.get_default()
     grok_modifier_map(display, None)
     grok_modifier_map(display, {})