Send sequence events to child if they don't match kitty.
This commit is contained in:
parent
f831c34813
commit
774fdd7e94
@ -254,6 +254,8 @@ class Boss:
|
|||||||
self.current_visual_select: Optional[VisualSelect] = None
|
self.current_visual_select: Optional[VisualSelect] = None
|
||||||
self.startup_cursor_text_color = opts.cursor_text_color
|
self.startup_cursor_text_color = opts.cursor_text_color
|
||||||
self.pending_sequences: Optional[SubSequenceMap] = None
|
self.pending_sequences: Optional[SubSequenceMap] = None
|
||||||
|
# A list of events received so far that are potentially part of a sequence keybinding.
|
||||||
|
self.current_sequence: List[KeyEvent] = []
|
||||||
self.default_pending_action: str = ''
|
self.default_pending_action: str = ''
|
||||||
self.cached_values = cached_values
|
self.cached_values = cached_values
|
||||||
self.os_window_map: Dict[int, TabManager] = {}
|
self.os_window_map: Dict[int, TabManager] = {}
|
||||||
@ -1168,6 +1170,7 @@ class Boss:
|
|||||||
sequences = get_shortcut(get_options().sequence_map, ev)
|
sequences = get_shortcut(get_options().sequence_map, ev)
|
||||||
if sequences and not isinstance(sequences, str):
|
if sequences and not isinstance(sequences, str):
|
||||||
self.set_pending_sequences(sequences)
|
self.set_pending_sequences(sequences)
|
||||||
|
self.current_sequence = [ev]
|
||||||
return True
|
return True
|
||||||
if self.global_shortcuts_map and get_shortcut(self.global_shortcuts_map, ev):
|
if self.global_shortcuts_map and get_shortcut(self.global_shortcuts_map, ev):
|
||||||
return True
|
return True
|
||||||
@ -1177,6 +1180,7 @@ class Boss:
|
|||||||
|
|
||||||
def clear_pending_sequences(self) -> None:
|
def clear_pending_sequences(self) -> None:
|
||||||
self.pending_sequences = None
|
self.pending_sequences = None
|
||||||
|
self.current_sequence = []
|
||||||
self.default_pending_action = ''
|
self.default_pending_action = ''
|
||||||
set_in_sequence_mode(False)
|
set_in_sequence_mode(False)
|
||||||
|
|
||||||
@ -1185,6 +1189,8 @@ class Boss:
|
|||||||
set_in_sequence_mode(False)
|
set_in_sequence_mode(False)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if len(self.current_sequence):
|
||||||
|
self.current_sequence.append(ev)
|
||||||
remaining = {}
|
remaining = {}
|
||||||
matched_action = None
|
matched_action = None
|
||||||
for seq, key_action in self.pending_sequences.items():
|
for seq, key_action in self.pending_sequences.items():
|
||||||
@ -1199,9 +1205,15 @@ class Boss:
|
|||||||
self.pending_sequences = remaining
|
self.pending_sequences = remaining
|
||||||
else:
|
else:
|
||||||
matched_action = matched_action or self.default_pending_action
|
matched_action = matched_action or self.default_pending_action
|
||||||
self.clear_pending_sequences()
|
if matched_action is not None and matched_action != '':
|
||||||
if matched_action is not None:
|
self.clear_pending_sequences()
|
||||||
self.combine(matched_action)
|
self.combine(matched_action)
|
||||||
|
else:
|
||||||
|
w = self.active_window
|
||||||
|
if w is not None:
|
||||||
|
for ev in self.current_sequence:
|
||||||
|
w.write_to_child(w.encoded_key(ev))
|
||||||
|
self.clear_pending_sequences()
|
||||||
|
|
||||||
def cancel_current_visual_select(self) -> None:
|
def cancel_current_visual_select(self) -> None:
|
||||||
if self.current_visual_select:
|
if self.current_visual_select:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user