From 8cdc7fbb6922bc1ae22b05c5a7d4f731d376249a Mon Sep 17 00:00:00 2001 From: Aram Drevekenin Date: Thu, 13 May 2021 17:15:13 +0200 Subject: [PATCH] fix(input): forward unknown keys to active terminal (#501) * fix(input): forward unknown keys to active terminal * docs(changelog): update change --- CHANGELOG.md | 1 + src/common/input/handler.rs | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90e97afd..488fe460 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 2dbec080..b2f4d0a3 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) { + 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) { let keybinds = &self.config.keybinds; if self.pasting {