hid_monitor 0.1.1

Cross-platform Rust library for monitoring HID device plug/unplug events and enumerating current HID devices. Supports Windows and macOS.
Documentation
hid_monitor-0.1.1 has been yanked.

hid_monitor

一个用于 监控 HID 设备插拔事件并枚举当前 HID 设备 的跨平台 Rust 库,当前支持 WindowsmacOS
This is a cross-platform Rust library for monitoring HID device plug/unplug events and listing current HID devices, currently supporting Windows and macOS.


特性 Features

  • 设备枚举 Device enumeration:列出当前所有 HID 设备(含路径、VID、PID 等信息)。
    List all currently connected HID devices (path, VID, PID, etc.).
  • 事件监听 Event monitoring:实时监听 HID 设备的插入和移除事件。
    Receive real-time events when HID devices are plugged in or removed.
  • 跨平台 Cross-platform:统一 API,内部根据目标平台调用 Windows / macOS 实现。
    Unified API with platform-specific implementations under the hood.
  • 纯 Rust 接口 Pure Rust API:当前版本仅提供 Rust API,不再暴露 C FFI 接口。
    This version only exposes a Rust API; C FFI bindings are not provided.

安装 Installation

在你的 Cargo.toml 中添加:
Add this to your Cargo.toml:

[dependencies]
hid_monitor = "0.1"

注意:版本号仅为示例,请以 crates.io 上实际发布的版本为准。
Note: The version is an example, please use the actual version published on crates.io.


快速上手 Quick Start

列出当前 HID 设备

List current HID devices

use hid_monitor::{list_devices};

fn main() {
    for device in list_devices() {
        println!(
            "Device: path={} vid={:?} pid={:?}",
            device.path,
            device.vid,
            device.pid,
        );
    }
}

监听插拔事件

Monitor plug/unplug events

use hid_monitor::{start_hid_monitor, HidEvent};

fn main() {
    let rx = start_hid_monitor();
    println!("HID monitor started. Plug/unplug devices to see events...");

    loop {
        match rx.recv() {
            Ok(HidEvent::Arrived(info)) => {
                println!(
                    "Device arrived: path={} vid={:?} pid={:?}",
                    info.path, info.vid, info.pid
                );
            }
            Ok(HidEvent::Removed(info)) => {
                println!(
                    "Device removed: path={} vid={:?} pid={:?}",
                    info.path, info.vid, info.pid
                );
            }
            Err(e) => {
                eprintln!("monitor channel error: {e}");
                break;
            }
        }
    }
}

平台支持与注意事项 Platform Support & Notes

  • Windows:基于 windows crate 调用 Win32 API。
    Uses Win32 APIs via the windows crate.
  • macOS:基于 core-foundationio-kit-sys
    Uses core-foundation and io-kit-sys on macOS.
  • 其他平台 Other platforms:当前返回空设备列表,且不产生事件。
    On unsupported platforms, the library returns an empty device list and no events.

某些系统/环境下,访问 HID 设备可能需要较高权限(例如管理员权限)。
On some systems/environments, elevated privileges (e.g. administrator) may be required to access HID devices.


许可证 License

本项目采用 MIT License
This project is licensed under the MIT License.