StickUp
๐ Update: v0.2.1 is here!
StickUp v0.2.1 adds per-frame input snapshots, intuitive binding resolution ("joy0.axis1"), and cleaner device control withDeviceManager.
Built to scale with sim rigs, overlays, game engines, and beyond.
๐ Already over 1,000 downloads in under 48 hours โ huge thanks to everyone testing, sharing, and supporting the launch!
๐ฎ What is StickUp?
StickUp is a modular, high-performance input framework for Rust.
It supports both real HID devices and virtual inputs with clarity, precision, and stability.
Part of the CelerisTech stack by Belegrade Studio
๐ Security Note
The name stickup was previously used in 2023 for a malicious crate that has since been removed from crates.io.
This version โ authored by Belegrade Studio โ is a clean and fully rewritten project, unrelated to the original.
โ No
build.rs
โ No network activity
โ 100% open and auditable
Transparency matters. Feel free to inspect the source or reach out directly.
โจ Features
- ๐ Plug-and-play device management via
DeviceManager - ๐ฎ Unified
Devicetrait for axis + button input - ๐ง Persistent device identity (hardware fingerprinting)
- ๐งฐ Binding resolution like
"joy0.axis1"โOption<f32> - ๐ Snapshot-based polling and input state tracking
- ๐ง Hotplug-friendly and fully extendable
- ๐ Supports
hidandvirtualbackends via optional features - ๐ก Zero magic โ minimal, intentional design
๐งญ Philosophy
StickUp is about presence, clarity, and persistence.
It doesnโt guess. It doesnโt simulate. It reflects exactly what your device is doing โ no more, no less.
๐ฆ Installation
= { = "0.2.1", = ["hid", "virtual"] }
use DeviceManager;
๐งฌ Device Identity
StickUp assigns a stable, persistent ID to each device:
vendor_id:product_id:serial_number
# Example: 044f:0402:ABCD1234
This allows for consistent bindings across reboots and USB port changes.
๐ Examples
Run any with:
pollโ Print a full snapshot of all input statevirtual_demoโ Feed input into a simulated virtual device
๐ ๏ธ Optional Features
| Feature | Description |
|---|---|
hid (default) |
Enables HID device support via hidapi |
virtual |
Enables manually fed virtual devices |
๐ฎ Coming Next: Event Listeners
StickUp currently uses snapshot-based polling for simplicity and determinism.
Next release will introduce event listener support:
Low-latency, per-device events that let you respond to input as it happens โ perfect for overlays, sim triggers, and reactive UIs.
Example:
device.add_listener;
This will coexist with polling โ giving you full control and flexibility.
๐ License
This project is licensed under the Pact of the Amaranth Rite.
See LICENSE for details.
Third-Party Dependencies
hidapiโ MIT/Apache-2.0 (HID support)serdeโ MIT/Apache-2.0 (serialization)serde_jsonโ MIT/Apache-2.0 (layout/config IO)tomlโ MIT/Apache-2.0 (if config parsing used)
๐ฌ Connect
- โ๏ธ Email: belegrade@belegrades.gg
- ๐ฌ Discord: Join the Chat
- ๐ฎ Sim pilots & devs: Iโd love to hear how youโre using StickUp.