MouseDrive is a Windows application that converts mouse and keyboard input into virtual joystick signals via vJoy, designed for racing simulators.
Or browse all versions at Releases.
Extract the
.zip, placevJoyInterface.dllnext tomousedrive.exe, and run.
- Steering — Mouse X movement mapped to vJoy X axis with 4 modes (linear, expo*, filtered*, self-centering)
- Throttle — Left mouse button with configurable ramp/drop curves
- Brake — Right mouse button with full state machine (press, hold, release)
- Gear buttons — W/S keys mapped to vJoy buttons 1/2
- Live dashboard — Real-time progress bars for steering, throttle, brake
- Tabbed settings panel — Collapsible side panel with per-category tuning
- Config persistence — TOML-based config with load/save/reset
- Raw input capture — Works even when the window is not focused (F8 toggle)
- Lock-free architecture — Atomic globals between raw input thread and GUI thread
- Language support — Turkish and English UI (switchable in Settings > General)
*Experimental
| Input | vJoy Output | Control |
|---|---|---|
| Mouse X movement | X Axis | Steering |
| Left mouse button (held) | Y Axis | Throttle |
| Right mouse button (held) | Rz Axis | Brake |
| W key | Button 1 | Gear up |
| S key | Button 2 | Gear down |
| Middle click | — | Reset steering |
| F8 | — | Toggle input capture |
- Install vJoy and create a device with X / Y / Rz axes and 2 buttons enabled (Device 1).
- Make sure
vJoyInterface.dllis accessible (next to the executable or in yourPATH). - Run Executable MouseDrive.
- Bind your game to the vJoy device axes.
- Raw input thread — Dedicated thread with a hidden window that receives
WM_INPUTmessages for mouse deltas and button states. - Atomic communication —
AtomicI64,AtomicBool,AtomicU64for zero-lock data transfer between threads. - GUI thread — eframe/egui loop that reads atomics, runs control logic, updates vJoy, and renders the UI.
- Windows 10/11
- Executable MouseDrive
- vJoy Driver** installed and enabled
vJoyInterface.dllavailable (next to exe or inPATH)
** Tested with V2.2.2.0
cargo build
cargo build --releaseSettings are stored in TOML format. The config file is loaded from:
<exe_directory>/config.toml(portable mode)%APPDATA%\MouseDrive\config.toml(standard)
Use the Save / Load / Default buttons in the settings panel, or edit the file manually.
MouseDrive/
├── src/
│ ├── main.rs # App struct, entry point, vJoy connection
│ ├── config.rs # Config struct, TOML load/save, path resolution
│ ├── input.rs # Raw input thread, atomic globals, key helpers
│ ├── logic.rs # Steering/throttle/brake state machine & math
│ ├── ui.rs # egui UI (side panel, tabs, dashboard)
│ └── vjoy.rs # vJoy FFI (runtime DLL loading, axis/button API)
├── Cargo.toml
├── LICENSE
└── README.md
| Problem | Solution |
|---|---|
| "vJoyInterface.dll not found" | Place the DLL next to the exe or add its folder to PATH |
| "vJoy not enabled" | Check that vJoy driver is installed and the service is running |
| "vJoy device busy" | Another application is using Device 1 — close it or use a different device |
| Mouse not captured | Press F8 to toggle input capture |
| Settings not saving | Check write permissions in %APPDATA%\MouseDrive\ |
Copyright (c) 2025-2026 Toxpox. This project is licensed under the MIT License.
