Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-tui/src/backend/termina.rs')
| -rw-r--r-- | helix-tui/src/backend/termina.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/helix-tui/src/backend/termina.rs b/helix-tui/src/backend/termina.rs index 8c6844d9..f0beb848 100644 --- a/helix-tui/src/backend/termina.rs +++ b/helix-tui/src/backend/termina.rs @@ -1,6 +1,7 @@ use std::io::{self, Write as _}; use helix_view::{ + editor::KittyKeyboardProtocolConfig, graphics::{CursorKind, Rect, UnderlineStyle}, theme::{Color, Modifier}, }; @@ -147,6 +148,15 @@ impl TerminaBackend { let mut capabilities = Capabilities::default(); let start = Instant::now(); + capabilities.kitty_keyboard = match config.kitty_keyboard_protocol { + KittyKeyboardProtocolConfig::Disabled => KittyKeyboardSupport::None, + KittyKeyboardProtocolConfig::Enabled => KittyKeyboardSupport::Full, + KittyKeyboardProtocolConfig::Auto => { + write!(terminal, "{}", Csi::Keyboard(csi::Keyboard::QueryFlags))?; + KittyKeyboardSupport::None + } + }; + // Many terminal extensions can be detected by querying the terminal for the state of the // extension and then sending a request for the primary device attributes (which is // consistently supported by all terminals). If we receive the status of the feature (for @@ -154,9 +164,7 @@ impl TerminaBackend { // If we only receive the device attributes then we know it is not. write!( terminal, - "{}{}{}{}{}{}{}", - // Kitty keyboard - Csi::Keyboard(csi::Keyboard::QueryFlags), + "{}{}{}{}{}{}", // Synchronized output Csi::Mode(csi::Mode::QueryDecPrivateMode(csi::DecPrivateMode::Code( csi::DecPrivateModeCode::SynchronizedOutput |