feat(gamepad): dualsense-windows-test grows --edge (drives device_type 2, cycles R4/L4)
Used for the .173 on-glass verify: the Edge devnode enumerates (SWD\PUNKTFUNK\PF_EDGE_1, driver pf_dualsenseedge attaches, proto 2), and Steam's live controller.txt confirms the identity end to end — 'type: 054c 0df2', 'Product: DualSense Edge Wireless Controller', 'Controller using HIDAPI driver, vid=0x054c, pid=0x0df2' — with probe lightbar/player-LED feedback flowing back on the 0xCD plane. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -427,6 +427,15 @@ fn real_main() -> Result<()> {
|
|||||||
.unwrap_or(0);
|
.unwrap_or(0);
|
||||||
let ds4 = args.iter().any(|a| a == "--ds4");
|
let ds4 = args.iter().any(|a| a == "--ds4");
|
||||||
let xbox = args.iter().any(|a| a == "--xbox");
|
let xbox = args.iter().any(|a| a == "--xbox");
|
||||||
|
// `--edge` drives the DualSense Edge backend (device_type 2) and additionally holds
|
||||||
|
// the R4/L4 paddles on the pressed beats, so a HID read shows the Edge bits in
|
||||||
|
// report byte 10 (0x80|0x40) next to Cross.
|
||||||
|
let edge = args.iter().any(|a| a == "--edge");
|
||||||
|
let extra_buttons: u32 = if edge {
|
||||||
|
punktfunk_core::input::gamepad::BTN_PADDLE1 | punktfunk_core::input::gamepad::BTN_PADDLE2
|
||||||
|
} else {
|
||||||
|
0
|
||||||
|
};
|
||||||
// Same drive loop for either backend (identical method surface): Arrival creates the pad,
|
// Same drive loop for either backend (identical method surface): Arrival creates the pad,
|
||||||
// State pushes a cycling report, pump surfaces a game's rumble/lightbar feedback.
|
// State pushes a cycling report, pump surfaces a game's rumble/lightbar feedback.
|
||||||
macro_rules! drive {
|
macro_rules! drive {
|
||||||
@@ -455,7 +464,7 @@ fn real_main() -> Result<()> {
|
|||||||
last = Instant::now();
|
last = Instant::now();
|
||||||
i += 1;
|
i += 1;
|
||||||
let buttons = if i % 2 == 0 {
|
let buttons = if i % 2 == 0 {
|
||||||
punktfunk_core::input::gamepad::BTN_A // Cross
|
punktfunk_core::input::gamepad::BTN_A | extra_buttons // Cross (+ Edge paddles)
|
||||||
} else {
|
} else {
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
@@ -520,6 +529,11 @@ fn real_main() -> Result<()> {
|
|||||||
inject::dualshock4_windows::DualShock4WindowsManager::new(),
|
inject::dualshock4_windows::DualShock4WindowsManager::new(),
|
||||||
"DualShock 4"
|
"DualShock 4"
|
||||||
);
|
);
|
||||||
|
} else if edge {
|
||||||
|
drive!(
|
||||||
|
inject::dualsense_edge_windows::DualSenseEdgeWindowsManager::new(),
|
||||||
|
"DualSense Edge"
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
drive!(
|
drive!(
|
||||||
inject::dualsense_windows::DualSenseWindowsManager::new(),
|
inject::dualsense_windows::DualSenseWindowsManager::new(),
|
||||||
|
|||||||
Reference in New Issue
Block a user