aboutsummaryrefslogtreecommitdiff
path: root/src/app/input/mod.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-23 03:47:34 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-23 03:47:44 +0300
commite7fc85bfdb51f89488430adbfe5bbced3be79c2f (patch)
treec1c0324f28040c50d0075d6407bdf6ab14d1b8c0 /src/app/input/mod.rs
parent2a20e90a026936d0d5b96823d74e2e4fe13a166f (diff)
fix: preserve kitty printable key releases
refs #1746
Diffstat (limited to 'src/app/input/mod.rs')
-rw-r--r--src/app/input/mod.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/app/input/mod.rs b/src/app/input/mod.rs
index 5eee4250..738b7963 100644
--- a/src/app/input/mod.rs
+++ b/src/app/input/mod.rs
@@ -71,21 +71,23 @@ use super::App;
// ---------------------------------------------------------------------------
impl App {
- pub(super) async fn handle_key(&mut self, key: TerminalKey) {
+ pub(super) async fn handle_key(
+ &mut self,
+ key: TerminalKey,
+ ) -> Option<super::TerminalInputTarget> {
if self.state.popup_pane.is_some() {
- self.handle_terminal_key(key).await;
- return;
+ return self.handle_terminal_key(key).await;
}
let key_event = key.as_key_event();
if modal_paste_target_active(&self.state) && is_modal_paste_shortcut(&key_event) {
if let Some(text) = crate::platform::read_clipboard_text() {
self.paste_into_active_text_input(&text);
}
- return;
+ return None;
}
match self.state.mode {
- Mode::Terminal => self.handle_terminal_key(key).await,
+ Mode::Terminal => return self.handle_terminal_key(key).await,
Mode::Prefix => self.handle_prefix_key(key),
Mode::Navigate => self.handle_navigate_key(key),
Mode::Copy => self.handle_copy_mode_key(key),
@@ -114,6 +116,7 @@ impl App {
Mode::Terminal => unreachable!(),
},
}
+ None
}
pub(super) async fn handle_paste(&mut self, text: String) {