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
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
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
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
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
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
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
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