QGamepadManager不检测ubuntu上的控制器断开连接

时间:2017-02-25 18:54:27

标签: qt ubuntu gamepad

我正在使用无人机进行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 个答案:

答案 0 :(得分:0)

我建议通过查看游戏状态或直接在dmesg输出检查Ubuntu本身是否检测到断开连接。

由于它可能正在检测它,我建议您填写Qt tracker的错误报告:)