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 linkedlibusb
backend on Linux (default)linux-static-hidraw
: uses statically linkedhidraw
backend on Linuxlinux-shared-libusb
: uses dynamically linkedlibusb
backend on Linuxlinux-shared-hidraw
: uses dynamically linkedhidraw
backend on Linuxillumos-static-libusb
: uses statically linkedlibusb
backend on Illumos (default)illumos-shared-libusb
: uses statically linkedhidraw
backend 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 supports 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