1 //! A terminal related ANSI escape sequences. 2 3 sequence!( 4 /// Resizes the text area to the given width and height in characters. 5 /// 6 /// # Examples 7 /// 8 /// ```no_run 9 /// use std::io::{stdout, Write}; 10 /// use anes::ResizeTextArea; 11 /// 12 /// let mut stdout = stdout(); 13 /// // Resize the terminal to 80x25 14 /// write!(stdout, "{}", ResizeTextArea(80, 25)); 15 /// ``` 16 struct ResizeTextArea(u16, u16) => 17 |this, f| write!(f, csi!("8;{};{}t"), this.1, this.0) 18 ); 19 20 sequence!( 21 /// Tells the terminal to start reporting mouse events. 22 /// 23 /// Mouse events are not reported by default. 24 struct EnableMouseEvents => concat!( 25 csi!("?1000h"), 26 csi!("?1002h"), 27 csi!("?1015h"), 28 csi!("?1006h") 29 ) 30 ); 31 32 sequence!( 33 /// Tells the terminal to stop reporting mouse events. 34 struct DisableMouseEvents => concat!( 35 csi!("?1006l"), 36 csi!("?1015l"), 37 csi!("?1002l"), 38 csi!("?1000l") 39 ) 40 ); 41 42 #[cfg(test)] 43 test_sequences!( 44 resize_text_area( 45 ResizeTextArea(80, 25) => "\x1B[8;25;80t", 46 ResizeTextArea(1, 1) => "\x1B[8;1;1t", 47 ), 48 enable_mouse_events( 49 EnableMouseEvents => "\x1B[?1000h\x1B[?1002h\x1B[?1015h\x1B[?1006h", 50 ), 51 disable_mouse_events( 52 DisableMouseEvents => "\x1B[?1006l\x1B[?1015l\x1B[?1002l\x1B[?1000l", 53 ) 54 ); 55