安装 XBox PowerA Spectra 控制器的驱动程序

安装 XBox PowerA Spectra 控制器的驱动程序

我有这个控制器(“www.bestbuy.com/site/power-a-spectra-controller-for-xbox-one-black/8685189.p?skuId=8685189”),我正试图让它在 Ubuntu 上运行,但它却带来了巨大的麻烦。这主要是因为我对 Linux 缺乏经验。

我已经使用以下方式安装了 xbox 控制器的驱动程序这个论坛在这里,但是当我检查它是否识别我的控制器时,它给出了以下错误:

-- [ ERROR ] ------------------------------------------------------

No Xbox or Xbox360 controller found

本论坛提到我需要安装 xpad.c 补丁才能使我的控制器正常工作。作为对那个人问题的回答,给出了如何修补文档的建议。但是,在这个命令中,我需要将补丁保存在 xpad.c 显然保存的同一位置。这引出了我的问题:

  • 我走的路对吗?xpad 和 xboxdrv 是同一个东西吗?上述论坛中的补丁能满足我的目的吗?
  • 这个 xpad.c 在哪里?它是和 xboxdrv 一起安装的吗?我尝试在计算机上搜索它,并获得了一些头文件,但我无法将补丁移动到它所在的文件夹中。
  • 一般来说,安装此类程序时文件会保存在哪里?

提前感谢你的帮助。请记住我是新手:越详细越好。

更新:我使用的是 Ubuntu 16.04 版。我尝试过安装 xpad-v0.4 和 steamos 版。我注意到,jstest-gtk 程序可以识别控制器,甚至识别品牌(PowerA Spectra),但控制器只是继续闪烁 LED 灯,当我尝试输入控件时,它仍然没有响应。

答案1

我已经遇到了控制器被识别,但对按钮按下没有反应的情况。如果您按照我的步骤操作,您的控制器可能会有反应,但也可能没有反应。

xpad 和 xboxdrv 不是一回事,它们是两种不同的方法。目前看来 xboxdrv 效果最好,但在 Ubuntu 上并不是最新的。


你需要下载调整进而编译最新版本的 xboxdrv。

下载

来自 github,https://github.com/zerojay/xboxdrv 按下绿色Clone or Download按钮,然后Download ZIP

将下载的文件解压到一个空文件夹。

调整

接下来是棘手的部分。在解压的文件夹中,找到文件[...]/src/xpad_device.cpp。打开它,你会发现一长串条目,例如

{ GAMEPAD_XBOX, 0x0d2f, 0x0002, "Andamiro Pump It Up pad" },

您想将自己的控制器添加到此列表中。它应该在表单上

{ GAMEPAD_XBOXONE, 0x????, 0x????, "Your product description" },

您需要找到识别它的两个代码。

在一个终端, 类型

watch lsusb

插入控制器并记下列表中出现的行。这是你的控制器。我的控制器名为

Bus 002 Device 013: ID 0e6f:02b2 Logic3

检查xpad_device.cpp您的控制器 ID 是否已在 Xbox One 控制器中。如果已在,您可以跳过此步骤的其余部分。

将您的条目添加到列表中,将控制器设备 ID 的第一部分和第二部分添加到条目中的第一个和第二个代码。请注意,每个条目都以逗号分隔,最后一个条目后面没有逗号。

我的变成了

{ GAMEPAD_XBOXONE, 0x0e6f, 0x02b2, "@Play - Wired Controller for Xbox One" },

保存文件并关闭。

编译

从终端,导航解压的文件夹。首先粘贴

sudo apt-get install \ scons \ g++ \ libboost-dev \ scons \ pkg-config \ libusb-1.0-0-dev \ git-core \ libx11-dev \ libudev-dev \ x11proto-core-dev \ libdbus-glib-1-dev

安装依赖项。实际编译可能需要一段时间。输入

scons

然后

make install

跑步

从终端,

sudo xboxdrv

看看是否有效。对于实际游戏,运行

sudo xboxdrv --silent

因此它不会浪费 CPU 将所有输入事件打印到终端。

为了更容易启动,请尝试将其添加为快捷方式点菜

答案2

所以我知道这是一个老问题,但 xboxdrv 不需要你重新编译才能让 xbox 控制器克隆工作。在大多数情况下,只需要对 CLI 选项进行一些反复试验。推荐阅读(说真的,写这个指南的人都是神) https://retropie.org.uk/docs/Universal-Controller-Calibration-&-Mapping-Using-xboxdrv/

TLDR: 在 CLI

ls /dev/input/by-id/

按“Enter”键,您的设备应按名称列在此处。如果您看到多个条目,请查找标题中包含“事件”的列表。如果您发现您的控制器未按名称列出,您可以在需要时替换事件编号。

我有一台 PowerA fusion Pro,这个命令让它在 ubuntu 18.04 上运行。好吧,控制器上的 Xbox 按钮没有亮,但我不在乎。

xboxdrv \
    --evdev /dev/input/by-id/usb-BDA_XB1_Fusion_Pro_00001B9C7FFF036A-event-joystick \
    --silent \
    --detach-kernel-driver \
    --deadzone 500 \
    --mimic-xpad \
    --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RX=x2,ABS_RY=y2,ABS_Z=lt,ABS_RZ=rt,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
    --evdev-keymap BTN_A=a,BTN_B=b,BTN_X=x,BTN_Y=y,BTN_TL=lb,BTN_TR=rb,BTN_THUMBL=tl,BTN_THUMBR=tr,BTN_MODE=guide,BTN_SELECT=back,BTN_START=start \
    --axismap -Y1=Y1,-Y2=Y2 \

相关内容