Skip to main content

Crate hidra

Crate hidra 

Source
Expand description

§hidra

A pure-Rust HID library.

hidra talks to HID devices through native OS interfaces, no C library is linked:

PlatformBackend
Linuxhidraw device nodes + sysfs enumeration
Windowshid.dll / SetupAPI via windows-sys declarations
macOSIOHIDManager via direct framework FFI
Any (feature nusb)USB interrupt/control transfers via nusb
WebAssemblyWebHID via web-sys

Following nusb’s model, every Hidra / HidDevice I/O method returns an impl Future. On native targets bring MaybeFuture into scope to drive it blocking with .wait(), or .await it under any async runtime (no executor dependency, wake-ups are plain Wakers like nusb).

On wasm32 the same Hidra / HidDevice types are backed by WebHID; there is no blocking mode, so always .await their futures (no .wait()). Discovery is WebHID-shaped: Hidra::request_device shows the browser’s device chooser (filtered with DeviceFilter) and Hidra::get_devices lists previously granted devices. descriptor offers report-descriptor primitives that work everywhere.

use hidra::MaybeFuture;
let api = hidra::Hidra::new()?;
for dev in api.device_list() {
    println!("{:04x}:{:04x} {}", dev.vendor_id(), dev.product_id(),
             dev.product_string().unwrap_or("<unnamed>"));
}
let device = api.open(0x046d, 0xc216).wait()?;
device.write(&[0x00, 0x01, 0x02]).wait()?; // report ID 0 + payload
let mut buf = [0u8; 64];
let len = device.read(&mut buf).wait()?;

Modules§

descriptor
HID report descriptor primitives.
report_info
WebHID-style collection primitives, also usable standalone.

Structs§

ApiVersion
hidra’s version, mirroring hid_version().
DeviceInfo
Information about a connected HID device, as returned by enumeration.
HidDevice
An open HID device (hid_device equivalent). Closed on drop.
Hidra
Entry point to the library; owns backend state and the cached device list (hid_init / hid_enumerate equivalents).

Enums§

BusType
The underlying transport a HID device is attached through.
HidError
Errors returned by hidra.

Constants§

MAX_REPORT_DESCRIPTOR_SIZE
Largest report descriptor a HID device can have (HID_API_MAX_REPORT_DESCRIPTOR_SIZE).

Traits§

MaybeFuture
Extension trait adding a blocking .wait() to every action.

Functions§

version
Library version (hid_version equivalent).
version_str
Library version string (hid_version_str equivalent).

Type Aliases§

HidResult
Convenience alias used by every fallible API in this crate.