@ -63,6 +63,7 @@ pub struct CrosstermBackend<W: Write> {
buffer : W ,
buffer : W ,
capabilities : Capabilities ,
capabilities : Capabilities ,
supports_keyboard_enhancement_protocol : OnceCell < bool > ,
supports_keyboard_enhancement_protocol : OnceCell < bool > ,
mouse_capture_enabled : bool ,
}
}
impl < W > CrosstermBackend < W >
impl < W > CrosstermBackend < W >
@ -74,6 +75,7 @@ where
buffer ,
buffer ,
capabilities : Capabilities ::from_env_or_default ( config ) ,
capabilities : Capabilities ::from_env_or_default ( config ) ,
supports_keyboard_enhancement_protocol : OnceCell ::new ( ) ,
supports_keyboard_enhancement_protocol : OnceCell ::new ( ) ,
mouse_capture_enabled : false ,
}
}
}
}
@ -123,6 +125,7 @@ where
execute ! ( self . buffer , terminal ::Clear ( terminal ::ClearType ::All ) ) ? ;
execute ! ( self . buffer , terminal ::Clear ( terminal ::ClearType ::All ) ) ? ;
if config . enable_mouse_capture {
if config . enable_mouse_capture {
execute ! ( self . buffer , EnableMouseCapture ) ? ;
execute ! ( self . buffer , EnableMouseCapture ) ? ;
self . mouse_capture_enabled = true ;
}
}
if self . supports_keyboard_enhancement_protocol ( ) {
if self . supports_keyboard_enhancement_protocol ( ) {
execute ! (
execute ! (
@ -136,6 +139,19 @@ where
Ok ( ( ) )
Ok ( ( ) )
}
}
fn reconfigure ( & mut self , config : Config ) -> io ::Result < ( ) > {
if self . mouse_capture_enabled ! = config . enable_mouse_capture {
if config . enable_mouse_capture {
execute ! ( self . buffer , EnableMouseCapture ) ? ;
} else {
execute ! ( self . buffer , DisableMouseCapture ) ? ;
}
self . mouse_capture_enabled = config . enable_mouse_capture ;
}
Ok ( ( ) )
}
fn restore ( & mut self , config : Config ) -> io ::Result < ( ) > {
fn restore ( & mut self , config : Config ) -> io ::Result < ( ) > {
// reset cursor shape
// reset cursor shape
write! ( self . buffer , "\x1B[0 q" ) ? ;
write! ( self . buffer , "\x1B[0 q" ) ? ;