我的 PS3 控制器通过 USB 连接,虽然工作正常,但似乎没有应用程序支持其键盘映射。所以我的问题是,是否有可能让它模拟 xbox 控制器,类似于 MotionInJoy 在 Windows 上所做的那样?
我谷歌搜索了一些内容,但无济于事。我偶然发现了 QtSixA,它允许我将按键分配给控制器的按钮,但我不知道 Xbox 使用什么按键 ID。
答案1
xboxdrv 可以做到这一点,但只有当 PS3 控制器通过 USB 连接时才可以:
至于 ID,我在下面列出了它们,但它们实际上对您没有太大帮助。如您所见,Xbox360 USB 和 Xbox360 Wireless 使用不同的 ID,大多数游戏都不在乎哪种方式,它们只是一个接一个地使用按钮,而不关心哪个按钮映射到哪个物理按钮,您必须在每个游戏中手动重新映射它们。
至于 Wine,Wine 仅支持 DirectInput,缺乏 Xinput 支持,而许多现代游戏都需要 Xinput。要解决这个问题,您必须使用 Xinput 仿真 .dll(在 Windows 上使用较旧的游戏手柄时必须使用相同的技巧),我自己还没有尝试过,但这里有描述:
-
USB Xbox360 Controller
======================
start BTN_START
guide BTN_MODE
back BTN_SELECT
a BTN_A
b BTN_B
x BTN_X
y BTN_Y
lb BTN_TL
rb BTN_TR
tl BTN_THUMBL
tr BTN_THUMBR
x1 ABS_X:-32768:32767:16:128
y1 ABS_Y:-32768:32767:16:128
x2 ABS_RX:-32768:32767:16:128
y2 ABS_RY:-32768:32767:16:128
lt ABS_Z:0:255:0:0
rt ABS_RZ:0:255:0:0
dpad_x ABS_HAT0X:-1:1:0:0
dpad_y ABS_HAT0Y:-1:1:0:0
Wireless Xbox360 Controller
======================
dpad_up BTN_0
dpad_down BTN_1
dpad_left BTN_LEFT
dpad_right BTN_RIGHT
start BTN_START
guide BTN_MODE
back BTN_SELECT
a BTN_A
b BTN_B
x BTN_X
y BTN_Y
lb BTN_TL
rb BTN_TR
tl BTN_THUMBL
tr BTN_THUMBR
x1 ABS_X:-32768:32767:0:0
y1 ABS_Y:-32768:32767:0:0
x2 ABS_RX:-32768:32767:0:0
y2 ABS_RY:-32768:32767:0:0
lt ABS_Z:0:255:0:0
rt ABS_RZ:0:255:0:0