当我使用OpenTK.Input.GamePad.GetName(i)
在OpenTK应用程序中查询PS4 v2连接的控制器的名称时,会出现“未映射的控制器”,并且轴和按钮值到处都是。我想让我的应用程序与Xbox 360 / One以及PS3 / 4控制器一起使用,因此我需要一种区分两者并在需要时应用映射的方法。
首先,我认为OpenTK不支持此类控制器,这就是为什么它将其报告为未映射的控制器(我实际上只是检查了OpenTK源代码,而且似乎为PS4控制器定义了一个特定的映射,很惊讶为什么它不起作用。可能是因为v2版本?)。因此,我需要一种方法来判断我连接的控制器是否为PS4控制器,以便对其应用自定义映射。
有什么方法可以获取OpenTK游戏手柄的真实设备名称,而不是通用的“未映射的控制器”标题?
我正在使用OpenTK 3.0.1。
答案 0 :(得分:0)
OpenTK是跨平台的,可以共享使用它的操作系统吗?许多游戏手柄驱动程序逻辑是特定于平台的。如果您使用的是基于Linux的操作系统,则涉及游戏手柄兼容性问题时,内核版本也很重要。
看起来OpenTK可能正在使用SDL2进行游戏手柄输入。如果是这样,您将需要检查它正在使用哪个SDL2版本,并可能使用新的游戏手柄信息更新gamecontrollerdb.txt配置文件:
https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt
Dualshock 4游戏手柄很复杂,您将需要几个条目来正确支持其所有版本和模式,尤其是在Linux上。除了V1 / V2差异之外,hid-sony Linux驱动程序也进行了更新,从而更改了设备对应用程序的公开方式。需要更新SDL2才能正确使用新映射。