将游戏手柄上的轴重新映射到 Ubuntu 上的按钮

将游戏手柄上的轴重新映射到 Ubuntu 上的按钮

我正在尝试在 Ubuntu 13.04 上使用 Xbox 360 MadCatz FightPad。主要问题是,两个按钮(对应于 Xbox 控制器上的左触发器和右触发器)被注册为模拟操纵杆。虽然触发器在传统的 Xbox 控制器上是模拟的,但它们在此游戏手柄上的唯一真正用途是充当按钮。

到目前为止,我还没有找到任何允许我将轴重新映射到游戏手柄按钮的实用程序。Qjoypad 只能用于将控制器按钮映射到键盘或鼠标序列。jstest-gtk 中似乎也没有进行映射的选项。xboxdrv 有 --trigger-as-button 选项,但它无法将控制器识别为 Xbox 控制器,甚至无法将其识别为兼容控制器(这本身就很奇怪,因为控制器在 Xbox 上运行良好)。

答案1

经过一番折腾,我终于让它正常工作了。首先,使用 antimicro 或 qjoypad 可以很好地将控制器映射到键盘命令,并在游戏内使用“键盘”。据观察,这在灵敏度方面并不总是有效。

我最终让它工作了,而无需使用 xboxdrv 模拟键盘或鼠标。如上所述,xboxdrv 无法检测控制器是否是有效的 Xbox 控制器。相反,我必须先手动确定 USB 设备 ID,使用lsusb

% lsusb
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 10f1:1a34 Importek 
Bus 002 Device 042: ID 1bad:f02e Harmonix Music

经过反复尝试,我确定列表中的最后一项是我的设备。然后我能够在以下命令中使用它:

xboxdrv --device-by-id 1bad:f02e --type xbox360 --trigger-as-button --detach-kernel-driver --no-extra-events

相关内容