通过 USB 连接的两个 PS3 控制器被识别为一个

通过 USB 连接的两个 PS3 控制器被识别为一个

我目前正在尝试让 2 个 PS3 控制器(通过 USB 连接)在我的 Ubuntu 12.04 机器上运行。对于大多数游戏来说,这都是开箱即用的,但有些游戏(如 Shutter)将两个控制器识别为只有一个。我发现在“Shatter-case”中,例如 cat /proc/bus/input/devices 提供的“Bus-Vendor-Product-Version”信息用于识别游戏手柄(对于两个控制器而言都是相同的):

I: Bus=0003 Vendor=054c Product=0268 Version=0111
N: Name="Sony PLAYSTATION(R)3 Controller"

Shatter 有一个配置文件(~/.sidhe/Shatter/data/profiles/default_plr_profile.xml),其中存储如下信息:

<singleplayer_controller_guid>gamepad_030000004c0500006802000011010000</singleplayer_controller_guid>

您对如何解决这个问题有什么想法吗(也许更改一个控制器的“产品”ID或类似的东西)?

答案1

这听起来像是 SDL2 中的一个错误。GUID 的生成方式如下:

http://hg.libsdl.org/SDL/file/a9d1c47bb1aa/src/joystick/linux/SDL_sysjoystick.c#l117

主要用于配置控制器。然而,GUID 仅用于识别控制器类型不是实际的控制器,所以两个相同类型的控制器会生成相同的 GUID,而这并不是 GUID 应该做的。

至于解决方法,xboxdrv当通过 USB 连接时,支持 PS3 控制器。如果您愿意,蓝牙xboxdrv还可以在常规控制器上模拟虚拟控制器,并允许您在虚拟控制器上摆弄产品、供应商等,请参阅examples/evdev.xboxdrv

提交了一个错误报告:https://bugzilla.libsdl.org/show_bug.cgi?id=2327

相关内容