simple_custom_input/
simple-custom-input.rs

1use cool_rust_input::{
2    set_terminal_line, CoolInput, CustomInputHandler, HandlerContext, InputTransform,
3};
4use crossterm::{
5    queue,
6    style::{Color, SetForegroundColor},
7};
8use std::io::stdout;
9
10struct MyHandler;
11impl CustomInputHandler for MyHandler {
12    fn get_input_transform(&mut self, ctx: HandlerContext) -> InputTransform {
13        let size = (ctx.terminal_size.0 - 10, ctx.terminal_size.1 - 2);
14        let offset = (5, 2);
15        InputTransform { size, offset }
16    }
17    fn after_draw_text(&mut self, _: HandlerContext) {
18        // we'll use this function to display a title text
19
20        let _ = queue!(stdout(), SetForegroundColor(Color::Green));
21        let _ = set_terminal_line("[MY COOL TEXT EDITOR PROGRAM]", 5, 0, true);
22    }
23}
24
25fn main() -> Result<(), std::io::Error> {
26    let mut my_input = CoolInput::new(MyHandler, 0);
27    my_input.listen()?;
28    Ok(())
29}