Expand description
This crate provides a rust abstraction over the features of the C library hidapi by signal11.
Usage
This crate is on crates.io and can be
used by adding hidapi to the dependencies in your project’s Cargo.toml.
Example
extern crate hidapi;
use hidapi::HidApi;
fn main() {
println!("Printing all available hid devices:");
match HidApi::new() {
Ok(api) => {
for device in api.device_list() {
println!("{:04x}:{:04x}", device.vendor_id(), device.product_id());
}
},
Err(e) => {
eprintln!("Error: {}", e);
},
}
}Feature flags
linux-static-libusb: uses statically linkedlibusbbackend on Linux (default)linux-static-hidraw: uses statically linkedhidrawbackend on Linuxlinux-shared-libusb: uses dynamically linkedlibusbbackend on Linuxlinux-shared-hidraw: uses dynamically linkedhidrawbackend on Linuxillumos-static-libusb: uses statically linkedlibusbbackend on Illumos (default)illumos-shared-libusb: uses statically linkedhidrawbackend on Illumosmacos-shared-device: enables shared access to HID devices on MacOS
Linux backends
On linux the libusb backends do not support DeviceInfo::usage() and DeviceInfo::usage_page().
The hidraw backend has support for them, but it might be buggy in older kernel versions.
MacOS Shared device access
Since hidapi 0.12 it is possible to open MacOS devices with shared access, so that multiple
HidDevice handles can access the same physical device. For backward compatibility this is
an opt-in that can be enabled with the macos-shared-device feature flag.
Structs
Device information. Use accessors to extract information about Hid devices.
Object for handling hidapi context and implementing RAII for it.
Only one instance can exist at a time.
Object for accessing HID device