6 个版本 (破坏性更新)
0.6.0 | 2024年3月23日 |
---|---|
0.5.0 | 2024年2月19日 |
0.4.0 | 2024年2月4日 |
0.3.0 | 2024年1月8日 |
0.1.0 | 2023年12月18日 |
#219 在 硬件支持
60KB
1.5K SLoC
DualSense
Rust 程序包装库,用于处理 PS5 DualSense 控制器发送和接收的 HID 消息。允许支持在给定时间间隔内连续按下的同时按键或组合(wip)。
用法
读取
添加回调函数以检测属性变化。
记录左右摇杆的位置详细信息
use dualsense_rs::DualSense;
fn main() {
let mut controller = DualSense::new();
controller.on_left_pad_x_changed(&|lpx| println!("left pad x: {lpx}"));
controller.on_left_pad_x_changed(&|lpx| {
if lpx > 127 {
println!("left pad x in right region: {lpx}")
}
});
controller.on_left_pad_y_changed(&|lpy| println!("left pad y: {lpy}"));
controller.on_right_pad_x_changed(&|rpx| println!("right pad x: {rpx}"));
let handle = controller.run();
// can also add after the `.run()` call
controller.on_right_pad_y_changed(&|rpy| println!("right pad y: {rpy}"));
// make sure to join the thread so the program doesn't stop immediately
handle.join().ok();
}
写入
输出值存储在内部缓存中,将在下一个读写周期中发送。如果没有任何变化,则不会发送数据包。
use dualsense_rs::DualSense;
fn main() {
let mut controller = DualSense::new();
controller.set_left_trigger_effect(TriggerEffect::Mode1);
let handle = controller.run();
controller.set_light_red(255);
handle.join().ok();
}
示例
尝试以下示例:
- log_all -> 记录所有按钮、模拟摇杆和触摸板的价值
- sensors -> 记录陀螺仪和加速度计的值
- triggers -> 记录扳机的值并更改它们的状态
cargo run --example <example>
路线图
目前以下功能是优先考虑的
- 蓝牙支持
- CRC 创建和验证
- 充电状态
- 改进 API
- 使回调返回具有实用方法的结构体
- 修复在回调中尝试更新局部变量时的借用问题
- 组合
- 添加在时间框架内检测多个按键被按下的可能性
依赖项
~0.4–11MB
~69K SLoC