summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2021-05-13 17:15:13 +0200
committerGitHub <noreply@github.com>2021-05-13 17:15:13 +0200
commit8cdc7fbb6922bc1ae22b05c5a7d4f731d376249a (patch)
treec2cb65cfcb1799295dfbc6edec92e7c75b02b6b5
parentb93e51cf88d23e57b844be193829caa68dadbcf1 (diff)
fix(input): forward unknown keys to active terminal (#501)v0.10.0
* fix(input): forward unknown keys to active terminal * docs(changelog): update change
-rw-r--r--CHANGELOG.md1
-rw-r--r--src/common/input/handler.rs10
2 files changed, 11 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 90e97afde..488fe460d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
* Handle pasted text properly (https://github.com/zellij-org/zellij/pull/494)
* Fix default keybinds for tab -> resize mode (https://github.com/zellij-org/zellij/pull/497)
* Terminal compatibility: device reports (https://github.com/zellij-org/zellij/pull/500)
+* Forward unknown keys to the active terminal (https://github.com/zellij-org/zellij/pull/501)
## [0.9.0] - 2021-05-11
* Add more functionality to unbinding the default keybindings (https://github.com/zellij-org/zellij/pull/468)
diff --git a/src/common/input/handler.rs b/src/common/input/handler.rs
index 2dbec0803..b2f4d0a32 100644
--- a/src/common/input/handler.rs
+++ b/src/common/input/handler.rs
@@ -75,6 +75,10 @@ impl InputHandler {
self.pasting = true;
} else if unsupported_key == bracketed_paste_end {
self.pasting = false;
+ } else {
+ // this is a hack because termion doesn't recognize certain keys
+ // in this case we just forward it to the terminal
+ self.handle_unknown_key(raw_bytes);
}
}
termion::event::Event::Mouse(_) => {
@@ -87,6 +91,12 @@ impl InputHandler {
}
}
}
+ fn handle_unknown_key(&mut self, raw_bytes: Vec<u8>) {
+ if self.mode == InputMode::Normal || self.mode == InputMode::Locked {
+ let action = Action::Write(raw_bytes);
+ self.dispatch_action(action);
+ }
+ }
fn handle_key(&mut self, key: &Key, raw_bytes: Vec<u8>) {
let keybinds = &self.config.keybinds;
if self.pasting {