[Crates.io](https://crates.io/crates/vjoy) [docs.rs](https://docs.rs/vjoy/latest/vjoy/) Crates.io Safe and idiomatic wrapper for for [vjoy-sys](https://crates.io/crates/vjoy-sys). ## About vJoy vJoy simulates up to 16 input devices with up to 128 buttons, 8 axes, and 4 hat switches (4-way or continuous). The virtual devices can be used to 1) Emulate gamepads/joysticks for older games that require a specific kind of input. 2) Combine multiple physical devices into one virtual. 3) Apply transformations from a physical device to a virtual device (e.g. 2-button to axis rebind, software filtering etc.). The virtual devices appear to applications as regular input devices. ## Usage The [vJoy driver](https://sourceforge.net/projects/vjoystick/files/Beta%202.x/2.1.9.1-160719/) version 2.1.9.1 needs to be installed and is only available for Windows. The vJoy shared library is loaded at runtime via libloading. See the integration tests for specifics. ## Example ```rust use vjoy::{VJoy, ButtonState, Error, HatState, FourWayHat}; fn main() -> Result<(), Error>{ let mut vjoy = VJoy::from_default_dll_location()?; let device_1 = vjoy.get_device_state_mut(1)?; device_1.set_button(1, ButtonState::Pressed)?; device_1.set_axis(1, i32::MAX)?; let hat_type = device_1.hat_type(); let value = match hat_type{ HatState::Discrete(_) => HatState::Discrete(FourWayHat::East), HatState::Continuous(_) => HatState::Continuous(90 * 100), }; device_1.set_hat(1, value)?; vjoy.update_all_devices()?; Ok(()) } ```