def grab_button(self, mouse: config.Mouse) -> int: """Configure the backend to grab the mouse event""" keysym = wlrq.buttons.get(mouse.button_code) assert keysym is not None mask_key = wlrq.translate_masks(mouse.modifiers) self.grabbed_buttons.append((keysym, mask_key)) return mask_key
def grab_key(self, key: Union[config.Key, config.KeyChord]) -> Tuple[int, int]: """Configure the backend to grab the key event""" keysym = xkb.keysym_from_name(key.key, case_insensitive=True) mask_key = wlrq.translate_masks(key.modifiers) self.grabbed_keys.append((keysym, mask_key)) return keysym, mask_key
def ungrab_key(self, key: Union[config.Key, config.KeyChord]) -> Tuple[int, int]: """Release the given key event""" keysym = xkb.keysym_from_name(key.key, case_insensitive=True) mask_key = wlrq.translate_masks(key.modifiers) self.grabbed_keys.remove((keysym, mask_key)) return keysym, mask_key
def simulate_keypress(self, modifiers: List[str], key: str) -> None: """Simulates a keypress on the focused window.""" keysym = xkb.keysym_from_name(key, case_insensitive=True) mods = wlrq.translate_masks(modifiers) if (keysym, mods) in self.grabbed_keys: self.qtile.process_key_event(keysym, mods) return if self.focused_internal: self.focused_internal.process_key_press(keysym)