Crate vjoy

Source
Expand description

Crates.io docs.rs Crates.io

Safe and idiomatic wrapper for for 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 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

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(())
}

Structs§

Axis
Current state of an enabled device axis.
Button
Current state of an enabled device button.
Device
Current state of an enabled vJoy device.
Hat
Current state of an enabled device hat switch.
VJoy
Main entry for this crate and controller for all vJoy devices.

Enums§

AppError
Errors that arise from incorrect usage of the wrapper API - e.g. requesting buttons outside reported limits.
ButtonState
Error
FFIError
Errors that arise from incorrect usage of the C API - e.g. updating devices before acquisition.
FourWayHat
HatState
Common state for either a 4-way hat or a continuous 360° hat switch