def __parse_keystring(key_string): modifiers = 0 keycode = None for part in key_string.split('-'): if hasattr(xcb.xproto.KeyButMask, part): modifiers |= getattr(xcb.xproto.KeyButMask, part) else: if len(part) == 1: part = part.lower() keycode = keysym.lookup_string(state.conn, state.get_kbmap(), part) return modifiers, keycode
def cb_MappingNotifyEvent(e): newmap = keysym.get_keyboard_mapping(state.conn).reply() # Update the key codes that may have changed if e.request == xcb.xproto.Mapping.Keyboard: changes = {} for kc in xrange(*keysym.get_min_max_keycode(state.conn)): knew = keysym.get_keysym(state.conn, newmap, kc) oldkc = keysym.get_keycode(state.conn, state.get_kbmap(), knew) if oldkc != kc: changes[oldkc] = kc state.set_kbmap(newmap) events.regrab(changes) # Update the modifier mappings that may have changed elif e.request == xcb.xproto.Mapping.Modifier: state.set_keys_to_mods(keysym.get_keys_to_mods(state.conn))