def __init__(self, conn, keys=None): if keys is None: keys = {} self.numlockmask = get_numlock_mask(conn) self.syms = Keysyms(conn) for keystr in keys: self.bind(keystr, keys[keystr])
def get_numlock_mask(conn): syms = Keysyms(conn) numlock = syms.get_keycode(keysyms['Num_Lock']) modmap = conn.core.GetModifierMapping().reply() for i in range(8): for j in range(modmap.keycodes_per_modifier): keycode = modmap.keycodes[i * modmap.keycodes_per_modifier + j] if keycode == numlock: return MASKS[i] return 0