【问题标题】:QGamepadManager does not detect controller disconnection on ubuntuQGamepadManager 在 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

【问题讨论】:

    标签: qt ubuntu gamepad


    【解决方案1】:

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

    因为它可能会检测到它,我鼓励您在 Qt tracker 上填写错误报告:)

    【讨论】:

    • 我检查了这个,当我做dmesg | grep X-Box时,每个USB连接有一根线,但我不知道它是否正常。每次输入改变
    • 好的,我的问题是当您断开游戏手柄时会发生什么?是否登录 dmesg ?
    • 有人了解过这个问题吗?我遇到了同样的问题。我试过Qt 5.11,没有变化
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多