我目前正在尝试让 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
。