工作原理
实时显示手柄向浏览器上报的全部信息:每个按键的模拟值和按压次数计数器、以进度条形式填充的扳机、两个摇杆的精确位置以及移动轨迹记录。适用于 Xbox、PlayStation 和 Nintendo 手柄,也适用于系统能识别的任何 USB 或 Bluetooth 手柄、方向盘和飞行摇杆。
用旧的手柄最常见的两种故障是漂移(drift)和按键失灵或抖动:前者是松开摇杆后无法回到中心,后者是按键不再响应或连击。摇杆静止时,到中心的距离应接近零;圆度测试需要贴着边缘转动摇杆,它还会测量摇杆行程在各个方向上是否均匀到位。
示例
axes[0] = 0.0784 · axes[1] = -0.1137r = 0.138摇杆在没有触碰的情况下偏离中心这么远,就说明存在漂移:在死区较小的游戏中,视角或角色会自己移动。XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE = 78497849 / 32767 ≈ 0.24这是 Microsoft 在 XInput 中为左摇杆建议的死区。小于该值的漂移,在使用死区的游戏中感觉不到,但在为了提高精度而缩小死区的游戏中会被察觉。buttons[7].value = 0.42RT · R2 · ZR → 42 %Xbox 和 PlayStation 的扳机是模拟的,会上报被按下的程度。Nintendo Pro Controller 的 ZL 和 ZR 是数字的,只会在 0 和 1 之间切换。使用场景
- 在申请保修、更换模块或购买二手手柄之前,检查摇杆是否漂移。
- 逐个验证刚修好或刚清洁过的手柄的按键,并通过计数器发现连击。
- 在打开游戏之前,确认 Bluetooth 手柄已正确配对并被系统识别。
- 查看方向盘、街机摇杆或飞行摇杆上报的按键和轴编号,以便在模拟器中进行配置。
- 测试振动马达是否正常工作。
常见问题
为什么我的手柄不显示?
出于隐私考虑,在页面打开并位于前台的情况下按下按键之前,浏览器不会显示任何手柄。如果仍然不显示,请检查系统是否识别到它:在 Windows 中,运行 joy.cpl 即可打开游戏设备。Steam、DS4Windows 或 reWASD 等程序可能会隐藏原始手柄,转而显示一个虚拟手柄。
如何判断摇杆是否漂移?
松开摇杆,观察 r 值,它表示到中心的距离。正常的摇杆只有百分之几;如果在没有触碰的情况下超过 0.1,或者圆点自己移动,就说明存在漂移。把摇杆推到边缘再松开,重复几次:如果每次回到的位置都不一样,说明弹簧或电位器已经磨损。
圆度误差衡量的是什么?
贴着边缘转动摇杆时,工具会记录在 36 个方向上各自到达的最远点,并计算这些点平均偏离完美圆形的程度。数值较大,说明摇杆在某些方向上达不到最大值,或者超过了最大值。有些手柄会有意放大对角线方向,因此在下结论之前,最好对比同一型号的两个手柄。
映射为“非标准”是什么意思?
浏览器了解最常见手柄的布局,并以相同的按键顺序提供它们,这样才能绘制出手柄图示。当浏览器无法识别某个型号时,会按设备上报的顺序提供按键和轴;它们仍然可以使用,只是没有名称。换一个浏览器或换一种连接方式(例如用 USB 代替 Bluetooth),同一个手柄有时就能被识别。
为什么没有显示振动按钮?
只有当浏览器为该手柄提供振动功能时才会显示。Chrome 和 Edge 为大多数 Xbox 和 PlayStation 手柄提供振动;其他浏览器、某些 Bluetooth 连接以及许多通用手柄,即使手柄带有马达,也不会开放振动功能。
可以测量手柄的延迟或轮询率吗?
无法精确测量。浏览器不会在手柄每次变化时通知页面:页面是每个屏幕帧查询一次,所以每秒看到的变化次数永远不会超过显示器的刷新率。要测量真实的轮询率,需要直接读取设备的工具。