我有两个不同的游戏控制器,我一直在使用 joyGetPosEx (Windows API) 从它们那里获取信息。它们每个都有具有相同物理标签的按钮,但其中一些按钮具有不同的位值(按下按钮时由 joyGetPosEx 返回)。这让我感到惊讶,因为它们都声称与 PS3 兼容。
例如,它们都有“形状”按钮——三角形、圆形、X 和正方形。但是在一个控制器(由“Snakebyte”制造)上,这些按钮根据joyGetPosEx具有以下位值:
Triangle = 1
Circle = 2
X = 4
Square = 8
另一方面(由“Rock Candy”制造),他们有:
Triangle = 8
Circle = 4
X = 2
Square = 1
另一个区别是 4096 是 Snakebyte 上的 DPad Up 和 Rock Candy 上的 Home,而 8192、16384 和 32768 是 Snakebyte 上的其他 DPad 方向,而 Rock Candy 上什么都没有。Rock Candy 的 DPad 按钮没有位值(尽管它们确实设置了与 Snakebyte 相同的 POV),并且 Snakebyte 的 Home 按钮没有位值。
从 16 到 2048 的所有其他位在两个控制器之间匹配。
那么,我应该如何知道哪个位对应于任意控制器上的哪个按钮?或者至少是一个任意的“PS3 兼容”控制器。我天真地想象,由于它们被认为是“PS3 兼容的”,它们会遵循一些位和按钮的标准映射。