我有一个可以连接游戏手柄的 Android 设备(它是一个完全标准的 XBox 360 控制器,但我还需要支持其他品种)。游戏手柄显示为带有一些模拟轴和一些按钮的 InputDevice。
我需要能够查询 Android 以找出游戏手柄支持的按钮。有谁知道如何做到这一点?
我知道系统有这些信息,因为如果我编写一个命令行应用程序,它/dev/input/event...
使用 ioctl 打开和查询按钮EVIOCGBIT
,我会从内核中得到一个很好的支持按钮列表。但我无法从 Android 应用程序执行此操作,因为我无权直接访问输入设备。
看起来应该可以获取 InputDevice 的 KeyCharacterMap 对象并进行查询;但看起来 Android 已将默认的 QWERTY 键盘键盘映射附加到游戏手柄,而不是构建一个与游戏手柄支持的实际匹配的键盘映射。这会很高兴地告诉我游戏手柄有一个 Q 键,它没有,它没有 BUTTON_X 键,它有,我正在接收按键事件。所以这没有帮助。
有没有办法做到这一点?