Enable the enhanced keyboard protocol if supported
This commit is contained in:
parent
79bf5e3094
commit
a066815833
1 changed files with 18 additions and 1 deletions
|
@ -40,7 +40,8 @@ use anyhow::{Context, Error};
|
|||
use crossterm::{
|
||||
event::{
|
||||
DisableBracketedPaste, DisableFocusChange, DisableMouseCapture, EnableBracketedPaste,
|
||||
EnableFocusChange, EnableMouseCapture, Event as CrosstermEvent,
|
||||
EnableFocusChange, EnableMouseCapture, Event as CrosstermEvent, KeyboardEnhancementFlags,
|
||||
PopKeyboardEnhancementFlags, PushKeyboardEnhancementFlags,
|
||||
},
|
||||
execute, terminal,
|
||||
tty::IsTty,
|
||||
|
@ -111,6 +112,9 @@ fn restore_term() -> Result<(), Error> {
|
|||
let mut stdout = stdout();
|
||||
// reset cursor shape
|
||||
write!(stdout, "\x1B[0 q")?;
|
||||
if matches!(terminal::supports_keyboard_enhancement(), Ok(true)) {
|
||||
execute!(stdout, PopKeyboardEnhancementFlags)?;
|
||||
}
|
||||
// Ignore errors on disabling, this might trigger on windows if we call
|
||||
// disable without calling enable previously
|
||||
let _ = execute!(stdout, DisableMouseCapture);
|
||||
|
@ -1062,6 +1066,19 @@ impl Application {
|
|||
if self.config.load().editor.mouse {
|
||||
execute!(stdout, EnableMouseCapture)?;
|
||||
}
|
||||
if matches!(terminal::supports_keyboard_enhancement(), Ok(true)) {
|
||||
log::debug!("The enhanced keyboard protocol is supported on this terminal");
|
||||
execute!(
|
||||
stdout,
|
||||
PushKeyboardEnhancementFlags(
|
||||
KeyboardEnhancementFlags::DISAMBIGUATE_ESCAPE_CODES
|
||||
| KeyboardEnhancementFlags::REPORT_ALTERNATE_KEYS
|
||||
)
|
||||
)?;
|
||||
} else {
|
||||
log::debug!("The enhanced keyboard protocol is not supported on this terminal");
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue