Files
neutuino/examples/input.rs
2025-08-15 14:13:17 -04:00

56 lines
1.5 KiB
Rust

#![warn(clippy::all, clippy::pedantic)]
use neutuino::prelude::*;
use std::io::IsTerminal;
use std::{io, time::Duration};
fn print_line_style_reset(string: &str) {
println!("{}{}{}", string, STYLE_RESET, move_cursor_to_column(0));
}
fn main() -> io::Result<()> {
assert!(io::stdout().is_terminal(), "Not running in a terminal");
enable_ansi()?;
enable_raw_mode()?;
enable_mouse_input()?;
// enable_kitty_keyboard();
println!("q to quit{}", move_cursor_to_column(0));
let next = |x: usize| (x + 1) % COLORS_FG.len();
let terminal_size = get_terminal_size()?;
let terminal_size_str = format!("{:?}", terminal_size);
print!("{}", set_window_title(terminal_size_str).unwrap());
let mut counter = 0;
loop {
let input = poll_input(Duration::new(1, 0));
let string = format!("{input:?}");
match &input {
Err(e) => match e.kind() {
io::ErrorKind::TimedOut => {}
_ => {
print_line_style_reset(&string);
}
},
Ok(_) => {
print_line_style_reset(&string);
}
}
// q to quit
if input.is_ok()
&& input.unwrap() == Event::Key(Key::Char('q'), ButtonType::Press, Modifiers::NONE)
{
break;
}
counter = next(counter);
}
// disable_kitty_keyboard();
disable_raw_mode()?;
disable_mouse_input()?;
Ok(())
}