【问题标题】:Dualshock 5 and AndroidDualshock 5 和安卓
【发布时间】:2021-09-12 09:10:40
【问题描述】:

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

我尝试使用 USB-c 和蓝牙进行连接,但两种连接类型的效果都一样差。

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

  • Cross -> 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(我猜是测试版?)。我以为安卓已经支持DS5了?谁能确认他们是否从他们的 DS5 控制器获得了同样奇怪的值?

【问题讨论】:

    标签: android gamepad


    【解决方案1】:

    通过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 中。

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

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

    【讨论】:

    • 我将 Pixel 4a 更新到了 Android 12 测试版 (SPB2.210513.011),并在 Gamepad Tester 应用中看到了 USB 和蓝牙的正确映射。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2014-05-26
    • 2011-05-17
    • 2011-03-08
    • 2012-10-20
    相关资源
    最近更新 更多