Dualshock 5 和 Android

Dualshock 5 and Android

我正在尝试为我的应用实现对游戏手柄的支持,但事实证明 Dualshock 5 给了我非常奇怪的值。我还使用外部应用程序 (Gamepad Tester) 对其进行了测试。

我试过同时连接 USB-c 和蓝牙,但这两种连接类型都同样糟糕。

例如,按钮映射到这些键码:

左摇杆工作正常(映射到AXIS_Y和AXIS_X,取值范围-1到1),但右摇杆映射到LTRIGGER/BRAKE和RTRIGGER/GAS .它们的取值范围为 0 - 0.9

这是怎么回事?无论应用程序或连接类型如何,我都会得到所有这些错误的值。我正在使用 Android 12(我猜是测试版?)。我以为 android 已经支持 DS5?谁能确认他们是否从他们的 DS5 控制器获得了同样奇怪的值?

通过 hid-playstation kernel module, which was added to the android12-5.4 and android12-5.10 branches. Previous versions of Android used the hid-input (default) mapping which doesn't follow the Linux Gamepad Specification 支持 DualSense。 hid-playstation 内核模块更新 DualSense 映射以更接近规范。它还增加了对电池状态、加速度计、陀螺仪、灯条 LED、触觉和触摸板的支持。

在 Android 上,有一些键盘布局文件允许系统更改解释来自特定设备的输入的方式。对于游戏手柄,键盘布局文件用于重新映射输入以遵循 Android standard mapping。将 DualSense 与 hid-playstation 一起使用需要在 Android 12.

中添加的新键盘布局文件

我猜你有新的键盘布局文件,但由于某种原因没有使用 hid-playstation 驱动程序。这与您观察到的 Circle 未映射并且右拇指杆映射到触发轴的观察结果一致。 (使用隐藏输入映射,Circle 发出键码 0x132,它不包含在新的键盘布局文件中。右摇杆发出轴 0x02 和 0x05,它们被转换为 LTRIGGER 和 RTRIGGER。)

DualSense 应该在 Android12 中工作,所以这可能是一个错误。您能否编辑您的问题以提供有关您的 Android 设备的更多信息?