5个版本
0.1.4 | 2022年8月1日 |
---|---|
0.1.3 | 2022年6月8日 |
0.1.2 | 2022年2月20日 |
0.1.1 | 2021年8月26日 |
0.1.0 | 2021年7月7日 |
#324 in 硬件支持
每月下载量:397
48KB
1K SLoC
Rust编写的ViGEm客户端
ViGEm 是一个虚拟游戏手柄仿真框架。本库实现了 ViGEmBus 驱动程序 的客户端。此库要发挥作用,必须安装该驱动程序。
客户端完全使用Rust编写,未使用ViGEm的客户端C库。当然,它必须与WinAPI通信,这意味着它仅适用于Windows平台。
与竞争对手不同,此库提供了优化、安全且符合习惯的接口。
使用方法
此库可在 crates.io 上找到,并在 docs.rs 上提供文档。
在你的 Cargo.toml
中添加
[dependencies]
vigem-client = "0.1"
示例
尝试以下示例: cargo run --example readme
use std::{thread, time};
fn main() {
// Connect to the ViGEmBus driver
let client = vigem_client::Client::connect().unwrap();
// Create the virtual controller target
let id = vigem_client::TargetId::XBOX360_WIRED;
let mut target = vigem_client::Xbox360Wired::new(client, id);
// Plugin the virtual controller
target.plugin().unwrap();
// Wait for the virtual controller to be ready to accept updates
target.wait_ready().unwrap();
// The input state of the virtual controller
let mut gamepad = vigem_client::XGamepad {
buttons: vigem_client::XButtons!(UP | RIGHT | LB | A | X),
..Default::default()
};
let start = time::Instant::now();
loop {
let elapsed = start.elapsed().as_secs_f64();
// Play for 10 seconds
if elapsed >= 10.0 {
break;
}
// Spin the left thumb stick in circles
gamepad.thumb_lx = (elapsed.cos() * 30000.0) as i16;
gamepad.thumb_ly = (elapsed.sin() * 30000.0) as i16;
// Spin the right thumb stick in circles
gamepad.thumb_rx = -gamepad.thumb_ly;
gamepad.thumb_ry = gamepad.thumb_lx;
// Twiddle the triggers
gamepad.left_trigger = ((((elapsed * 1.5).sin() * 127.0) as i32) + 127) as u8;
gamepad.right_trigger = ((((elapsed * 1.5).cos() * 127.0) as i32) + 127) as u8;
let _ = target.update(&gamepad);
thread::sleep(time::Duration::from_millis(10));
}
}
许可证
根据 MIT 许可证 授予许可,请参阅 license.txt。
贡献
除非你明确说明,否则你提交的任何有意包含在作品中的贡献,都应按照上述条款许可,无需任何附加条款或条件。
依赖关系
~225KB