QGamepadManager 在 ubuntu 上没有检测到控制器断开连接
Posted
技术标签:
【中文标题】QGamepadManager 在 ubuntu 上没有检测到控制器断开连接【英文标题】:QGamepadManager does not detect controller disconnection on ubuntu 【发布时间】:2017-02-25 18:54:27 【问题描述】:我正在使用无人机进行 Qt 项目。我和我的朋友们正在使用 Xbox 360 控制器控制无人机。
为了检测按钮和轴,我们使用了 gamepadmanager 模块中的 QGamepadManager 类。它运作良好!但是我们对这个简化的代码有一个问题:
while (true)
if (this->gamepad->isConnected())
cout << "gamepad connected" << endl;
else
cout << "gamepad disocnnected" << endl;
bool GamepadMonitor::isConnected()
return QGamepadManager::instance()->connectedGamepads().size() == 1;
在 Windows 上,isConnected()
方法运行良好,但在 Ubuntu 上不行。当我们在连接游戏手柄的情况下启动应用程序时,按钮也会被识别和轴。但未检测到断开连接。当我们在没有游戏手柄的情况下启动应用程序时,无法识别连接。
我已经安装了joystick
包。我在 Ubuntu 16.04 上。我正在使用 Qt 5.8 进行开发。
你有什么想法吗?
编辑:我添加了 dmesg 输出
当我连接游戏手柄时:
[ 330.430405] usb 3-1: new full-speed USB device number 4 using xhci_hcd
[ 330.575708] usb 3-1: New USB device found, idVendor=045e, idProduct=028e
[ 330.575714] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 330.575718] usb 3-1: Product: Controller
[ 330.575721] usb 3-1: Manufacturer: ©Microsoft Corporation
[ 330.575723] usb 3-1: SerialNumber: 1E69441
[ 331.614141] input: Microsoft X-Box 360 pad as /devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/input/input23
[ 331.622581] usbcore: registered new interface driver xpad
当我断开它时:
[ 392.733786] usb 3-1: USB disconnect, device number 4
[ 392.733995] xpad 3-1:1.0: xpad_try_sending_next_out_packet - usb_submit_urb failed with result -19
【问题讨论】:
【参考方案1】:我建议检查 Ubuntu 本身是否检测到断开连接,方法是查看游戏状态,或直接查看 dmesg
输出。
因为它可能会检测到它,我鼓励您在 Qt tracker 上填写错误报告:)
【讨论】:
我检查了这个,当我做dmesg | grep X-Box
时,每个USB连接有一根线,但我不知道它是否正常。每次输入改变
好的,我的问题是当您断开游戏手柄时会发生什么?是否登录 dmesg ?
有人了解过这个问题吗?我遇到了同样的问题。我试过Qt 5.11,没有变化以上是关于QGamepadManager 在 ubuntu 上没有检测到控制器断开连接的主要内容,如果未能解决你的问题,请参考以下文章