Skip to content

Latest commit

 

History

History
27 lines (21 loc) · 1.47 KB

README.md

File metadata and controls

27 lines (21 loc) · 1.47 KB

libusbd

Cross-OS library for implementing USB device-mode interfaces. WIP. I'm currently working out most of the API details with the programs in examples/.

Current Support

Planned Support

  • Linux FunctionFS

Provided Examples:

  • examples/keyboard: Emulates a HID keyboard that types My laptop is a keyboard. forever.
  • examples/gamepad: Emulates a (Switch-compatible) HORI gamepad.
  • examples/ums: Emulates a USB Mass Storage device from an image file, including writing. Stress tested as a flashdrive-less Ubuntu LiveUSB.
  • examples/rust_async: Emulates a HID keyboard using Rust, with async functions.
  • examples/rust_kvm: A simple software KVM which outputs keystrokes/mouse input performed in a window to an emulated HID device (video here).
  • examples/rust_nintendo: Emulates a wired Nintendo Switch controller. Keyboard input is translated to controller buttonpresses at 120Hz.
  • examples/rust_splatpost: Emulates a wired Nintendo Switch controller, but pressing P will print splatpost.png to Splatoon 2/3.

Linux build dependencies:

sudo apt install build-essential git clang libclang-dev

# Install cargo from https://doc.rust-lang.org/cargo/getting-started/installation.html