iohidmanager 0.10.4

Safe Rust bindings for Apple's IOKit HID — enumerate, inspect, and subscribe to HID devices on macOS
Documentation
use iohidmanager::prelude::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let manager = HidManager::new()?;
    manager.set_device_matching(None)?;

    let Some(device) = manager.live_devices().into_iter().next() else {
        println!("no HID device available");
        return Ok(());
    };

    let _removal = device.on_removal(|| {})?;
    let element_count = device.elements().len();
    let values = device.copy_value_multiple(&[])?;
    println!(
        "device {:?} has {} elements and {} multi-value entries",
        device.info(),
        element_count,
        values.len()
    );
    Ok(())
}