Controller Tester
DualSense / DualSense Edge / Xbox / Switch Pro 即插即测:按键、摇杆、扳机、震动,浏览器里全部看得到。无需安装任何软件。
DualSense 标准版 · 没有背键与 Fn
Fn 键本身能读到,但 Fn + 面键切配置档这类组合键被手柄内部处理,浏览器拿不到改写后的键值。
下面这些是「写入手柄」的功能,通过 WebHID 直接下发给手柄,仅 Chrome / Edge 可用,需要先点上面的「连接」。
分段阻力:推到起始位置后遇到固定阻力;柔扳机:起始到结束之间保持力度;自动连发:按频率把扳机顶回来,像连发枪。
ID 是手指的接触编号:同一根手指滑动时编号不变,抬起再放下会换号。两点同时按即可验证多点触控。
换算按内核 hid-playstation 的标定:陀螺仪 1024 LSB/(rad/s)、加速度计 8192 LSB/g。手柄静止时读数应接近 0(Yaw 有微小零点漂移属正常)。
下面这些是「写入手柄」的功能,通过 WebHID 直接下发给手柄,仅 Chrome / Edge 可用,需要先点上面的「连接」。
通道打开了,但一条报文都没收到。
手柄的灯可能还亮着,数据却被别处截走了。常见原因:开了两个本页的标签页、Steam / DS4Windows 等工具占着手柄、或者手柄刚休眠。先拔插一次线、关掉其它页面,再点下面的按钮重开一次。
已经连上「进阶通道」的话,这里不用再连一次,直接点开始采样即可。采样期间请不断转动摇杆或按按键——部分手柄静止时不会连续发报文。此模块通过 WebHID 直接统计 HID 输入报文,比浏览器 Gamepad API 的估算精确得多,可如实反映 125 / 250 / 500 / 1000 Hz 档位。如果使用 2.4G 无线接收器,轮询率最高在 650~750 Hz 之间属正常现象。
为什么要按一下任意按键?浏览器规定:页面必须先收到一次手柄输入才允许读取手柄,这是隐私保护,不是故障。
体感读数怎么来的:陀螺仪每 1024 个计数对应 1 rad/s,换算成 °/s 就是乘 57.3;加速度计每 8192 对应 1 g,换算成 m/s² 就是乘 9.81。手柄平放在桌面上时 ACC-Z 应接近 9.8,其他两轴接近 0。触控板坐标原始范围是 0–1919 × 0–1079,本页按 1920×1080 显示,第二点的偏移量之前算错了 2 字节,已按内核结构体改为紧邻第一点。
震动 / 灯光页会真的改手柄:马达震动、灯条颜色 / 亮度 / 玩家灯、自适应扳机手感、耳机与扬声器音量、麦克风静音,都会立刻写进手柄。断开连接或拔线后,灯条恢复默认、扳机效果解除;麦克风静音状态由手柄自己记住。调音量会同时把声音路由到对应出口(耳机 / 扬声器二选一),这是手柄硬件的设计。
DualSense Edge 的额外按键:背键(L4 / R4)与 Fn 键按下后在「输入」页的背键与 Fn 区块点亮,手柄图上也会用虚线标出这四个键的位置。不过 Fn 组合键改写后的映射结果、以及 4 组配置档的具体内容存在手柄内部,浏览器只能读不能改——配置请照旧在 PS5 或 PC 端调整。
Switch Pro:Windows 下建议先用 Steam 或 BetterJoy 驱动一次再打开本页,否则部分按键(HOME / 截取)可能读不到。
本页与 daidr/dualsense-tester 同源同好:进阶数据解析参考了开源社区(nondebug/dualsense 等)的协议成果,感谢开源。