stickup 0.1.2

A modular input device abstraction layer with HID and virtual device support.
Documentation
stickup-0.1.2 has been yanked.

StickUp

A modular, high-performance input abstraction layer for Rust applications. Built to handle physical and virtual devices with precision, simplicity, and flexibility.

Created by Belegrade Studio.


Features

  • ๐Ÿ”Œ Plug-and-play device management (HID + virtual devices)
  • ๐ŸŽฎ Axis + button input abstraction via Device trait
  • ๐Ÿ“‹ Snapshot state or stream real-time events
  • ๐Ÿ”ง Configurable BindingProfile system to map inputs to actions
  • โš™๏ธ Optional feature flags (hid, virtual) to control backends
  • ๐Ÿ’ก Clean architecture, built for game engines, overlays, and tools

Installation

Add this to your Cargo.toml:

stickup = { version = "0.1.0", features = ["hid", "virtual"] }

Quick Start

use stickup::DeviceManager;

fn main() {
    let mut manager = DeviceManager::new();
    let snapshot = manager.snapshot();

    for (id, state) in snapshot.iter() {
        println!("Device: {}", id);
        for (axis, value) in &state.axes {
            println!("  Axis {} = {}", axis, value);
        }
        for (button, pressed) in &state.buttons {
            println!("  Button {} is {}", button, if *pressed { "pressed" } else { "released" });
        }
    }
}

Examples

Run these with cargo run --example:

  • poll: Print snapshot of all current input device states
  • virtual_demo: Feed manual input into a virtual device

Optional Features

  • hid (default): Enables HID device support via hidapi
  • virtual: Enables simulated virtual devices

License

Licensed under the Pact of the Amaranth Rite. See LICENSE for details. Inspired by the spirit of the MIT license, with deeper roots.

This crate uses hidapi, licensed under MIT or Apache-2.0.


Philosophy

StickUp isnโ€™t just about input. Itโ€™s about clarity, intention, and presence. Part of the CelerisTech suite.


For questions, contributions, or commercial use: belegrade@belegrades.gg