无法在 Linux 下使用 QML QtGamepad

Unable to use QML QtGamepad under Linux

我无法在 Linux 下的 QML 中使用 QGamepad。

"unable" 我的意思是没有发出游戏手柄信号(按下按钮...)

配置:

游戏手柄被Ubuntu认可:

usb 1-1.6: Product: Gamepad F310
input: Logitech Gamepad F310 as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/1-1.6:1.0/input/input26

Logitech Gamepad F310
Device: /dev/input/js0 and is responsive when pressing buttons

示例 QML 代码:

import QtQuick 2.15
import QtGamepad 1.15

Rectangle {
    width: 320
    height: 240
    Gamepad {
        onButtonAChanged: {
            console.log("ButtonA")
        }
        onButtonBChanged: {
            console.log("ButtonB")
        }
    }
}

我尝试定义 QT_GAMEPAD 和 QT_GAMEPAD_DEVICE 环境变量,但没有任何改进。

export QT_GAMEPAD=evdev
export QT_GAMEPAD_DEVICE=/dev/input/js0

注意:相同的 QML 代码在 MS Windows10(相同的 Qt 版本)下运行良好。

感谢 Jack White,这是解决方案:

属性需要使用GamepadManager初始化Gamepad模块的deviceId。

import QtQuick 2.15
import QtGamepad 1.15
    
Rectangle {
    width: 320
    height: 240
        
    Gamepad {
        deviceId: GamepadManager.connectedGamepads.length > 0 ? GamepadManager.connectedGamepads[0] : -1
                
        onButtonAChanged: {
           console.log("ButtonA");
        }
        onButtonBChanged: {
           console.log("ButtonB");
        }
     }
}