我有这个控制器(“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 \