tui: Handle keyboard enhancement check failure (#6438)
If the terminal doesn't send the primary device attributes response to the query, the `terminal::supports_keyboard_enhancement` function from crossterm may timeout and return an Err. We should interpret this error to mean that the terminal doesn't support the keyboard enhancement protocol rather than an error in claiming the terminal.
This commit is contained in:
parent
6a323c0b1b
commit
bbcdcd04a5
1 changed files with 8 additions and 9 deletions
|
@ -78,21 +78,20 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn supports_keyboard_enhancement_protocol(&self) -> io::Result<bool> {
|
fn supports_keyboard_enhancement_protocol(&self) -> bool {
|
||||||
self.supports_keyboard_enhancement_protocol
|
*self.supports_keyboard_enhancement_protocol
|
||||||
.get_or_try_init(|| {
|
.get_or_init(|| {
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
|
|
||||||
let now = Instant::now();
|
let now = Instant::now();
|
||||||
let support = terminal::supports_keyboard_enhancement();
|
let supported = matches!(terminal::supports_keyboard_enhancement(), Ok(true));
|
||||||
log::debug!(
|
log::debug!(
|
||||||
"The keyboard enhancement protocol is {}supported in this terminal (checked in {:?})",
|
"The keyboard enhancement protocol is {}supported in this terminal (checked in {:?})",
|
||||||
if matches!(support, Ok(true)) { "" } else { "not " },
|
if supported { "" } else { "not " },
|
||||||
Instant::now().duration_since(now)
|
Instant::now().duration_since(now)
|
||||||
);
|
);
|
||||||
support
|
supported
|
||||||
})
|
})
|
||||||
.copied()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +124,7 @@ where
|
||||||
if config.enable_mouse_capture {
|
if config.enable_mouse_capture {
|
||||||
execute!(self.buffer, EnableMouseCapture)?;
|
execute!(self.buffer, EnableMouseCapture)?;
|
||||||
}
|
}
|
||||||
if self.supports_keyboard_enhancement_protocol()? {
|
if self.supports_keyboard_enhancement_protocol() {
|
||||||
execute!(
|
execute!(
|
||||||
self.buffer,
|
self.buffer,
|
||||||
PushKeyboardEnhancementFlags(
|
PushKeyboardEnhancementFlags(
|
||||||
|
@ -143,7 +142,7 @@ where
|
||||||
if config.enable_mouse_capture {
|
if config.enable_mouse_capture {
|
||||||
execute!(self.buffer, DisableMouseCapture)?;
|
execute!(self.buffer, DisableMouseCapture)?;
|
||||||
}
|
}
|
||||||
if self.supports_keyboard_enhancement_protocol()? {
|
if self.supports_keyboard_enhancement_protocol() {
|
||||||
execute!(self.buffer, PopKeyboardEnhancementFlags)?;
|
execute!(self.buffer, PopKeyboardEnhancementFlags)?;
|
||||||
}
|
}
|
||||||
execute!(
|
execute!(
|
||||||
|
|
Loading…
Reference in a new issue