#tauri-plugin #devices #plugin #hid #api

sys tauri-plugin-hid

A Tauri plugin to provide access to USB HID devices

8 releases

new 0.2.2 Apr 22, 2025
0.2.1 Apr 22, 2025
0.1.4 Apr 3, 2025

#460 in Hardware support

Download history 389/week @ 2025-03-30 72/week @ 2025-04-06 2/week @ 2025-04-13 296/week @ 2025-04-20

759 downloads per month

MIT license

43KB
839 lines

Tauri Plugin HID

Tauri plugin to provide access to USB HID devices.

Uses hidapi-rs on MacOS, Windows and Linux.

Uses Android UsbManager on Android.

⚠️ Warning: Work in Progress ⚠️

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.

Installation

Install the plugin with cargo:

cd src-tauri
cargo add tauri-plugin-hid

Alternatively 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-api

Add 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"
]

Example usage in Frontend

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.

Dependencies

~18–55MB
~874K SLoC