微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Dualshock 5 和安卓

如何解决Dualshock 5 和安卓

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

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

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

  • 十字 -> Button_B,键码 95
  • 圆圈 -> 未知,键码 0
  • 三角形 -> Button_Y,键码 100(正确!)
  • 方形 -> Button_A,kecyode 96

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

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

解决方法

通过 hid-playstation 内核模块支持 DualSense,该模块已添加到 android12-5.4 和 android12-5.10 分支。以前版本的 Android 使用不遵循 Linux Gamepad Specification 的隐藏输入(默认)映射。 hid-playstation 内核模块更新了 DualSense 映射以更符合规范。它还增加了对电池状态、加速度计、陀螺仪、LED 灯条、触觉和触摸板的支持。

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。