monio 0.1.1

Pure Rust cross-platform input monitoring library with proper drag detection
Documentation
use monio::{display_at_point, displays, mouse_position};

fn main() -> monio::Result<()> {
    let (x, y) = mouse_position()?;
    println!("Current mouse position: ({:.1}, {:.1})", x, y);

    match display_at_point(x, y)? {
        Some(display) => {
            println!("\nMouse is on display {}:", display.id);
            println!(
                "  Bounds: {:.0},{:.0} - {:.0}x{:.0}",
                display.bounds.x, display.bounds.y, display.bounds.width, display.bounds.height
            );
            println!("  Scale factor: {:.1}x", display.scale_factor);
            println!("  Refresh rate: {:?} Hz", display.refresh_rate);
            println!(
                "  Primary: {}",
                if display.is_primary { "Yes" } else { "No" }
            );

            let rel_x = x - display.bounds.x;
            let rel_y = y - display.bounds.y;
            println!(
                "\nRelative position on display: ({:.1}, {:.1})",
                rel_x, rel_y
            );
        }
        None => {
            println!(
                "\nMouse position ({:.1}, {:.1}) is outside all known displays!",
                x, y
            );
        }
    }

    let all_displays = displays()?;
    println!("\nAll displays ({} total):", all_displays.len());
    for display in all_displays {
        let marker = if display.bounds.contains(x, y) {
            " <-- mouse here"
        } else {
            ""
        };
        println!(
            "  Display {}: {}x{} @ ({:.0}, {:.0}){}",
            display.id,
            display.bounds.width,
            display.bounds.height,
            display.bounds.x,
            display.bounds.y,
            marker
        );
    }

    Ok(())
}