@@ -63,6 +63,7 @@ pub struct CrosstermBackend<W: Write> {
63 buffer: W,
63 buffer: W,
64 capabilities: Capabilities,
64 capabilities: Capabilities,
65 supports_keyboard_enhancement_protocol: OnceCell<bool>,
65 supports_keyboard_enhancement_protocol: OnceCell<bool>,
66+ mouse_capture_enabled: bool,
68impl<W> CrosstermBackend<W>
69impl<W> CrosstermBackend<W>
@@ -74,6 +75,7 @@ where
75 capabilities: Capabilities::from_env_or_default(config),
76 capabilities: Capabilities::from_env_or_default(config),
76 supports_keyboard_enhancement_protocol: OnceCell::new(),
77 supports_keyboard_enhancement_protocol: OnceCell::new(),
78+ mouse_capture_enabled: false,
@@ -123,6 +125,7 @@ where
123 execute!(self.buffer, terminal::Clear(terminal::ClearType::All))?;
125 execute!(self.buffer, terminal::Clear(terminal::ClearType::All))?;
124 if config.enable_mouse_capture {
126 if config.enable_mouse_capture {
125 execute!(self.buffer, EnableMouseCapture)?;
127 execute!(self.buffer, EnableMouseCapture)?;
128+ self.mouse_capture_enabled = true;
127 if self.supports_keyboard_enhancement_protocol() {
130 if self.supports_keyboard_enhancement_protocol() {
128 execute!(
131 execute!(
@@ -136,6 +139,19 @@ where
142+ fn reconfigure(&mut self, config: Config) -> io::Result<()> {
143+ if self.mouse_capture_enabled != config.enable_mouse_capture {
144+ if config.enable_mouse_capture {
145+ execute!(self.buffer, EnableMouseCapture)?;
147+ execute!(self.buffer, DisableMouseCapture)?;
149+ self.mouse_capture_enabled = config.enable_mouse_capture;
139 fn restore(&mut self, config: Config) -> io::Result<()> {
155 fn restore(&mut self, config: Config) -> io::Result<()> {
140 // reset cursor shape
156 // reset cursor shape
141 write!(self.buffer, "\x1B[0 q")?;
157 write!(self.buffer, "\x1B[0 q")?;