Tauri plugin to provide access to USB HID devices.
Uses hidapi-rs on MacOS, Windows and Linux.
Uses Android UsbManager on Android.
Features:
- Enumerate devices
- Open multiple devices simultaneously
- Read and write input and output reports
Limitations:
- Feature reports not supported yet
- Currently only tested on macOS, Windows and Android.
Install the plugin with cargo:
cd src-tauri
cargo add tauri-plugin-hidAlternatively add the dependency directly to Cargo.toml:
[dependencies]
tauri-plugin-hid = "0.1.1"Install the ts/js api:
npm add @redfernelec/tauri-plugin-hid-apiAdd the plugin to src-tauri/src/lib.rs, for example:
tauri::Builder::default()
    .plugin(tauri_plugin_opener::init())
    .plugin(tauri_plugin_hid::init())   // Register hid plugin
    .run(tauri::generate_context!())
    .expect("error while running tauri application");Add permisions to src-tauri/capabilities/default.json:
"permissions": [
    "core:default",
    "opener:default",
    "hid:default"
]Basic usage:
import { HidDevice, enumerate } from "@redfernelec/tauri-plugin-hid-api";
let myDevice: HidDevice | null = null;
// Enumerate devices and find one based on product string
let devices = await enumerate();
for (const device of devices) {
    if (device.productString === "My Device") {
        myDevice = device;
        break;
    }
}
if(myDevice) {
    await myDevice.open();
    await myDevice.write(new Uint8Array([0x00, 0x00]));
    let data = await myDevice.read(2);
    await myDevice.close();
}An example Vue app is also included in examples/tauri-plugin-hid-vue-example.