예제 #1
0
파일: keymap.py 프로젝트: rudresh2319/Xpra
def get_gtk_keymap(ignore_keys=[None, "VoidSymbol"]):
    """
        Augment the keymap we get from gtk.gdk.keymap_get_default()
        by adding the keyval_name.
        We can also ignore some keys
    """
    from xpra.gtk_common.gobject_compat import import_gdk
    gdk = import_gdk()
    try:
        keymap = gdk.keymap_get_default()
    except:
        keymap = None
        return []
    keycodes = []
    used_keycodes = []
    max_entries = 1
    for i in range(0, 2**8):
        entries = keymap.get_entries_for_keycode(i)
        if entries:
            max_entries = max(max_entries, len(entries))
            for keyval, keycode, group, level in entries:
                name = gdk.keyval_name(keyval)
                if name not in ignore_keys:
                    keycodes.append((nn(keyval), nn(name), nn(keycode),
                                     nn(group), nn(level)))
                    used_keycodes.append(keycode)
    return keycodes
예제 #2
0
파일: keymap.py 프로젝트: svn2github/Xpra
def get_gtk_keymap(ignore_keys=[None, "VoidSymbol"]):
    """
        Augment the keymap we get from gtk.gdk.keymap_get_default()
        by adding the keyval_name.
        We can also ignore some keys
    """
    from xpra.gtk_common.gobject_compat import import_gdk
    gdk = import_gdk()
    try:
        keymap = gdk.keymap_get_default()
    except:
        keymap = None
        return  []
    keycodes=[]
    used_keycodes = []
    max_entries = 1
    for i in range(0, 2**8):
        entries = keymap.get_entries_for_keycode(i)
        if entries:
            max_entries = max(max_entries, len(entries))
            for keyval, keycode, group, level in entries:
                name = gdk.keyval_name(keyval)
                if name not in ignore_keys:
                    keycodes.append((nn(keyval), nn(name), nn(keycode), nn(group), nn(level)))
                    used_keycodes.append(keycode)
    return keycodes
예제 #3
0
 def parse_key_event(self, event, pressed):
     key_event = GTKKeyEvent()
     key_event.modifiers = self._client.mask_to_names(event.state)
     key_event.keyname = nn(gdk.keyval_name(event.keyval))
     key_event.keyval = nn(event.keyval)
     key_event.keycode = event.hardware_keycode
     key_event.group = event.group
     key_event.string = nn(event.string)
     key_event.pressed = pressed
     return key_event
예제 #4
0
 def parse_key_event(self, event, pressed):
     key_event = GTKKeyEvent()
     key_event.modifiers = self._client.mask_to_names(event.state)
     key_event.keyname = nn(gdk.keyval_name(event.keyval))
     key_event.keyval = nn(event.keyval)
     key_event.keycode = event.hardware_keycode
     key_event.group = event.group
     key_event.string = nn(event.string)
     key_event.pressed = pressed
     return key_event
예제 #5
0
 def get_keymap_properties(self):
     props = {}
     for x in ("print", "query", "mod_meanings", "mod_managed",
               "mod_pointermissing", "keycodes", "x11_keycodes"):
         p = "xkbmap_%s" % x
         props[p] = nn(getattr(self, p))
     return props
예제 #6
0
 def get_keymap_properties(self):
     props = {}
     for x in ("print", "query", "mod_meanings",
               "mod_managed", "mod_pointermissing", "keycodes", "x11_keycodes"):
         p = "xkbmap_%s" % x
         props[p] = nn(getattr(self, p))
     return  props
예제 #7
0
파일: keymap.py 프로젝트: rudresh2319/Xpra
def get_gtk_keymap(ignore_keys=[None, "VoidSymbol"]):
    """
        Augment the keymap we get from gtk.gdk.keymap_get_default()
        by adding the keyval_name.
        We can also ignore some keys
    """
    from xpra.gtk_common.gtk_util import get_default_keymap, import_gdk, is_gtk3
    gdk = import_gdk()
    keymap = get_default_keymap()
    keycodes = []
    for i in range(0, 2**8):
        entries = keymap.get_entries_for_keycode(i)
        log("%s.get_entries_for_keycode(%s)=%s", keymap, i, entries)
        if not entries:
            continue
        if is_gtk3():
            found, keys, keyvals = entries
            if not found:
                continue
            for i in range(len(keys)):
                key = keys[i]
                keyval = keyvals[i]
                name = gdk.keyval_name(keyval)
                if name not in ignore_keys:
                    keycodes.append((nn(keyval), nn(name), nn(key.keycode),
                                     nn(key.group), nn(key.level)))
        else:
            #gtk2:
            for keyval, keycode, group, level in entries:
                #assert keycode==i
                name = gdk.keyval_name(keyval)
                #ugly workaround for "period" key on win32 (see ticket 588)
                #which is reported as "period" instead of "KP_Decimal",
                #despite being on the numeric keypad just like all the other KP_* keys...
                if name == "period" and keyval == 46 and keycode == 110:
                    name = "KP_Decimal"
                elif name == "dead_tilde" and keyval == 65107 and keycode == 50:
                    name = "asciitilde"
                elif name == "dead_grave" and keyval == 65104 and keycode == 55:
                    name = "grave"
                if name not in ignore_keys:
                    keycodes.append((nn(keyval), nn(name), nn(keycode),
                                     nn(group), nn(level)))
    log("get_gtk_keymap(%s)=%s (keymap=%s)", ignore_keys, keycodes, keymap)
    return keycodes
예제 #8
0
 def get_keymap_properties(self):
     props = {}
     for x in [
             "xkbmap_print", "xkbmap_query", "xkbmap_mod_meanings",
             "xkbmap_mod_managed", "xkbmap_mod_pointermissing",
             "xkbmap_keycodes", "xkbmap_x11_keycodes"
     ]:
         props[x] = nn(getattr(self, x))
     return props
예제 #9
0
파일: keymap.py 프로젝트: svn2github/Xpra
def get_gtk_keymap(ignore_keys=[None, "VoidSymbol"]):
    """
        Augment the keymap we get from gtk.gdk.keymap_get_default()
        by adding the keyval_name.
        We can also ignore some keys
    """
    from xpra.gtk_common.gtk_util import get_default_keymap, import_gdk, is_gtk3
    gdk = import_gdk()
    keymap = get_default_keymap()
    keycodes=[]
    for i in range(0, 2**8):
        entries = keymap.get_entries_for_keycode(i)
        log("%s.get_entries_for_keycode(%s)=%s", keymap, i, entries)
        if not entries:
            continue
        if is_gtk3():
            found, keys, keyvals = entries
            if not found:
                continue
            for i in range(len(keys)):
                key = keys[i]
                keyval = keyvals[i]
                name = gdk.keyval_name(keyval)
                if name not in ignore_keys:
                    keycodes.append((nn(keyval), nn(name), nn(key.keycode), nn(key.group), nn(key.level)))
        else:
            #gtk2:
            for keyval, keycode, group, level in entries:
                #assert keycode==i
                name = gdk.keyval_name(keyval)
                #ugly workaround for "period" key on win32 (see ticket 588)
                #which is reported as "period" instead of "KP_Decimal",
                #despite being on the numeric keypad just like all the other KP_* keys...
                if name=="period" and keyval==46 and keycode==110:
                    name = "KP_Decimal"
                elif name=="dead_tilde" and keyval==65107 and keycode==50:
                    name = "asciitilde"
                elif name=="dead_grave" and keyval==65104 and keycode==55:
                    name = "grave"
                if name not in ignore_keys:
                    keycodes.append((nn(keyval), nn(name), nn(keycode), nn(group), nn(level)))
    log("get_gtk_keymap(%s)=%s (keymap=%s)", ignore_keys, keycodes, keymap)
    return keycodes
예제 #10
0
 def get_keymap_properties(self):
     props = {}
     for x in ["xkbmap_print", "xkbmap_query", "xkbmap_mod_meanings",
           "xkbmap_mod_managed", "xkbmap_mod_pointermissing", "xkbmap_keycodes", "xkbmap_x11_keycodes"]:
         props[x] = nn(getattr(self, x))
     return  props