use keyflow::prelude::*;
use std::sync::Arc;
use std::sync::atomic::{AtomicBool, Ordering};
use std::thread;
use std::time::Duration;
fn main() -> Result<()> {
Keyflow::builder()
.with_screen(Screen::default())
.with_hotkeys()
.initialize()?;
let running = Arc::new(AtomicBool::new(true));
let running_clone = running.clone();
let save = Arc::new(AtomicBool::new(false));
let save_clone = save.clone();
Keyflow::register_hotkey("quit", Hotkey::new(Key::Q).with_ctrl(), move || {
running_clone.store(false, Ordering::Relaxed);
})?;
Keyflow::register_hotkey("save", Hotkey::new(Key::S).with_ctrl(), move || {
save_clone.store(true, Ordering::Relaxed);
println!("Ctrl+S pressed.");
})?;
let mut counter = 0;
while running.load(Ordering::Relaxed) {
thread::sleep(Duration::from_secs(1));
counter += 1;
if counter % 10 == 0 {
println!("Running for {counter} seconds...");
}
if save.load(Ordering::Relaxed) {
save.store(false, Ordering::Relaxed);
}
}
println!("Quit hotkey was pressed.");
Ok(())
}