use std::fs::OpenOptions;
use std::io::Write;
use std::time::Duration;
use turbo_vision::app::Application;
use turbo_vision::core::event::{EventType, KB_CTRL_C};
fn main() -> turbo_vision::core::error::Result<()> {
let mut app = Application::new()?;
let mut log_file = OpenOptions::new().create(true).write(true).truncate(true).open("mouse_test.txt").expect("Failed to create log file");
macro_rules! log {
($($arg:tt)*) => {{
eprintln!($($arg)*);
writeln!(log_file, $($arg)*).ok();
}};
}
log!("Mouse test started. Click anywhere or press Ctrl+C to exit.");
log!("If you see 'MouseDown' messages, mouse capture is working.");
app.running = true;
let mut event_count = 0;
while app.running && event_count < 10 {
if let Ok(Some(event)) = app.terminal.poll_event(Duration::from_millis(100)) {
log!("Event received: {:?}", event);
match event.what {
EventType::MouseDown => {
log!(" -> Mouse click at ({}, {})", event.mouse.pos.x, event.mouse.pos.y);
event_count += 1;
}
EventType::Keyboard => {
if event.key_code == KB_CTRL_C {
app.running = false;
}
}
_ => {}
}
}
}
log!("Mouse test complete. Captured {} mouse clicks.", event_count);
Ok(())
}