anes/sequences/
terminal.rs

1//! A terminal related ANSI escape sequences.
2
3sequence!(
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
20sequence!(
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
32sequence!(
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)]
43test_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);