該環境變量主要是幫助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;
}
我将那些亂起八糟的宏都去掉了,友善大家查找。大多數情況下,是不可能所有這些裝置都可用的。