天天看點

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;

}

我将那些亂起八糟的宏都去掉了,友善大家查找。大多數情況下,是不可能所有這些裝置都可用的。

繼續閱讀