From 5ca781a407d439a2a8d52013a19768ac9c30142e Mon Sep 17 00:00:00 2001 From: ishbosamiya Date: Wed, 13 Aug 2025 14:46:21 +0530 Subject: [PATCH] tui: enable KeyboardEnhancementFlags::DISAMBIGUATE_ESCAPE_CODES This is so that media controls work when implemented. --- src/tui.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/tui.rs b/src/tui.rs index 9121106..9cc7c00 100644 --- a/src/tui.rs +++ b/src/tui.rs @@ -1,6 +1,10 @@ use std::io::{self, stderr, stdout, Stdout}; -use crossterm::{execute, terminal::*}; +use crossterm::{ + event::{KeyboardEnhancementFlags, PopKeyboardEnhancementFlags, PushKeyboardEnhancementFlags}, + execute, + terminal::*, +}; use ratatui::prelude::*; /// A type alias for the terminal type used in this application @@ -10,7 +14,15 @@ pub type Tui = Terminal>; pub fn init() -> io::Result { execute!(stdout(), EnterAlternateScreen)?; execute!(stderr(), EnterAlternateScreen)?; + if let Ok(true) = crossterm::terminal::supports_keyboard_enhancement() { + execute!( + stdout(), + PushKeyboardEnhancementFlags(KeyboardEnhancementFlags::DISAMBIGUATE_ESCAPE_CODES) + )?; + } + enable_raw_mode()?; + Terminal::new(CrosstermBackend::new(stdout())) } @@ -18,6 +30,11 @@ pub fn init() -> io::Result { pub fn restore() -> io::Result<()> { execute!(stdout(), LeaveAlternateScreen)?; execute!(stderr(), LeaveAlternateScreen)?; + if let Ok(true) = crossterm::terminal::supports_keyboard_enhancement() { + execute!(stdout(), PopKeyboardEnhancementFlags)?; + } + disable_raw_mode()?; + Ok(()) } -- 2.51.2