天天看点

QWS_MOUSE_PROTO该如何写

该环境变量主要是帮助QMouseDriverFactory也就是Qt鼠标设备的枚举者来创建你想要的鼠标设备而不是系统默认的。

默认该环境变量时空的,其实大部分情况下空就可以了,Qt能够根据系统配置猜测出你想要的设备,并且这个大多数情况下好像都是正确的。不过如果错了我们可以通过设置该变量来纠正。

该环境变量的格式如下:

export QWS_MOUSE_PROTO="<driver>[:<driver specific options>]
         <driver>[:<driver specific options>]
         <driver>[:<driver specific options>]"      

中间可以通过空格来指定多个鼠标设备,目前我也没用到过,因为一般有一个输入设备就够了,最常用的格式如下:

export QWS_MOUSE_PROTO="

tslib

:/dev/ts"

第一个,指明要使用tslib这个驱动,对应的设备名字是/dev/ts

就这么简单。

下面我将QMouseDriverFactory::create函数贴出来,大家可以对照此函数来指定driver的名字。

QWSMouseHandler *QMouseDriverFactory::create(const QString& key, const QString &device)

{

    QString driver = key.toLower();

    if (driver == QLatin1String("linuxtp") || driver.isEmpty())

        return new QWSLinuxTPMouseHandler(key, device);

    if (driver == QLatin1String("yopy") || driver.isEmpty())

        return new QWSYopyMouseHandler(key, device);

    if (driver == QLatin1String("vr41xx") || driver.isEmpty())

        return new QWSVr41xxMouseHandler(key, device);

    if (driver == QLatin1String("auto")

        || driver == QLatin1String("intellimouse")

        || driver == QLatin1String("microsoft")

        || driver == QLatin1String("mousesystems")

        || driver == QLatin1String("mouseman")

        || driver.isEmpty()) {

        return new QWSPcMouseHandler(key, device);

    }

    if (driver == QLatin1String("bus"))

        return new QWSBusMouseHandler(key, device);

    if (driver == QLatin1String("tslib") || driver.isEmpty())

        return new QWSTslibMouseHandler(key, device);

    if (driver == QLatin1String("qvfbmouse") || driver == QLatin1String("qvfb"))

        return new QVFbMouseHandler(key, device);

#ifndef QT_NO_LIBRARY

    if (QWSMouseHandlerFactoryInterface *factory = qobject_cast<QWSMouseHandlerFactoryInterface*>(loader()->instance(driver)))

        return factory->create(driver, device);

#endif

    return 0;

}

我将那些乱起八糟的宏都去掉了,方便大家查找。大多数情况下,是不可能所有这些设备都可用的。

继续阅读