@@ -63,6 +63,7 @@ pub struct CrosstermBackend<W: Write> {
6363 buffer: W,
6464 capabilities: Capabilities,
6565 supports_keyboard_enhancement_protocol: OnceCell<bool>,
66+ mouse_capture_enabled: bool,
6667}
6768
6869impl<W> CrosstermBackend<W>
@@ -74,6 +75,7 @@ where
7475 buffer,
7576 capabilities: Capabilities::from_env_or_default(config),
7677 supports_keyboard_enhancement_protocol: OnceCell::new(),
78+ mouse_capture_enabled: false,
7779 }
7880 }
7981
@@ -123,6 +125,7 @@ where
123125 execute!(self.buffer, terminal::Clear(terminal::ClearType::All))?;
124126 if config.enable_mouse_capture {
125127 execute!(self.buffer, EnableMouseCapture)?;
128+ self.mouse_capture_enabled = true;
126129 }
127130 if self.supports_keyboard_enhancement_protocol() {
128131 execute!(
@@ -136,6 +139,19 @@ where
136139 Ok(())
137140 }
138141
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)?;
146+ } else {
147+ execute!(self.buffer, DisableMouseCapture)?;
148+ }
149+ self.mouse_capture_enabled = config.enable_mouse_capture;
150+ }
151+
152+ Ok(())
153+ }
154+
139155 fn restore(&mut self, config: Config) -> io::Result<()> {
140156 // reset cursor shape
141157 write!(self.buffer, "\x1B[0 q")?;