iohidmanager 0.10.1

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 elements = device.elements();
    if elements.len() < 2 {
        println!("not enough elements to demonstrate attachment");
        return Ok(());
    }

    elements[0].attach(&elements[1]);
    elements[0].detach(&elements[1]);
    println!("element attachment round-trip completed");
    Ok(())
}