该环境变量主要是帮助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;
}
我将那些乱起八糟的宏都去掉了,方便大家查找。大多数情况下,是不可能所有这些设备都可用的。