A virtual input device manager - written in Rust.
Reroute input:
- Combine input from multiple gamepads, joysticks, throttles etc. to one virtual joystick.
Transform input:
- Create analog axes from buttons.
- Apply button- or axis-trim to existing axes.
- Create tempo or toggle buttons from momentary buttons.
Shift-modes:
- Assign multiple output rebinds to one input via shift-modes.
Windows 10/11 64 bit only for now. Linux support is blocked by a missing vJoy alternative.
vJoy driver version 2.2.1.1 needs to be installed.
Rebind maps can be created one rebind at a time with the existing UI. Rebinds can be edited and saved/loaded to/from a custom location. Input is properly transformed and piped.
The existing set of rebind types is enough to setup a proper flight sim configuration, but the setup takes a while.
-
Easier rebind setup with quick-configurations ('setup wizard').
-
More rebind variants:
- Split hat into 4/8 buttons.
- Combine buttons to hats.
- More axes merge options.
- Split axis into +/- component.
-
Documentation/Guide for the available rebinds.
-
In-application console for logging.
Either call one of the launch batchfiles from the workspace root or build and copy to output manually:
Debug build:
cargo build
- Copy
assets/
totarget/debug
- Copy
SDL2.dll
totarget/debug
Profiling build:
cargo build --release --features "profile"
- Copy
assets/
totarget/release
- Copy
SDL2.dll
totarget/release
- Start Tracy client and connect running instance to collect traces.
Dist build:
cargo build --profile dist
- Copy
assets/
totarget/dist
- Copy
SDL2.dll
totarget/dist
Input is read through SDL2 as generic joystick input.
Output is piped to vJoy through a Rust wrapper library.
The GUI of choice: egui.
Which is rendered via Vulkan through a custom wrapper: VKU.
Rebind maps are de-/serialized to TOML through the Serde framework.
Profiling is supported through Tracy.