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 上没有检测到控制器断开连接的主要内容,如果未能解决你的问题,请参考以下文章

怎么在ubuntu 进入System

如何在Windows7运行ubuntu软件

ubuntu在suspend之后怎么启动

如何在ubuntu命令行下下载kvm

如何在win7下装ubuntu

如何在虚拟机ubuntu系统下联网