summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/platformsupport/input/evdevtouch/qevdevtouch.cpp36
-rw-r--r--src/platformsupport/input/evdevtouch/qevdevtouch_p.h20
-rw-r--r--src/plugins/generic/evdevtouch/README19
-rw-r--r--src/plugins/generic/evdevtouch/main.cpp14
4 files changed, 47 insertions, 42 deletions
diff --git a/src/platformsupport/input/evdevtouch/qevdevtouch.cpp b/src/platformsupport/input/evdevtouch/qevdevtouch.cpp
index 1369e2ae53..0f039a40d2 100644
--- a/src/platformsupport/input/evdevtouch/qevdevtouch.cpp
+++ b/src/platformsupport/input/evdevtouch/qevdevtouch.cpp
@@ -61,15 +61,15 @@ QT_BEGIN_NAMESPACE
#define ABS_MT_SLOT 0x2f
#endif
-class QTouchScreenData
+class QEvdevTouchScreenData
{
public:
- QTouchScreenData(QTouchScreenHandler *q_ptr, const QStringList &args);
+ QEvdevTouchScreenData(QEvdevTouchScreenHandler *q_ptr, const QStringList &args);
void processInputEvent(input_event *data);
void assignIds();
- QTouchScreenHandler *q;
+ QEvdevTouchScreenHandler *q;
int m_lastEventType;
QList<QWindowSystemInterface::TouchPoint> m_touchPoints;
@@ -106,7 +106,7 @@ public:
bool m_typeB;
};
-QTouchScreenData::QTouchScreenData(QTouchScreenHandler *q_ptr, const QStringList &args)
+QEvdevTouchScreenData::QEvdevTouchScreenData(QEvdevTouchScreenHandler *q_ptr, const QStringList &args)
: q(q_ptr),
m_lastEventType(-1),
m_currentSlot(0),
@@ -118,7 +118,7 @@ QTouchScreenData::QTouchScreenData(QTouchScreenHandler *q_ptr, const QStringList
m_forceToActiveWindow = args.contains(QLatin1String("force_window"));
}
-void QTouchScreenData::registerDevice()
+void QEvdevTouchScreenData::registerDevice()
{
m_device = new QTouchDevice;
m_device->setName(hw_name);
@@ -138,7 +138,7 @@ static inline bool testBit(long bit, const long *array)
return (array[bit / LONG_BITS] >> bit % LONG_BITS) & 1;
}
-QTouchScreenHandler::QTouchScreenHandler(const QString &spec, QObject *parent)
+QEvdevTouchScreenHandler::QEvdevTouchScreenHandler(const QString &spec, QObject *parent)
: QObject(parent), m_notify(0), m_fd(-1), d(0)
#ifdef USE_MTDEV
, m_mtdev(0)
@@ -193,7 +193,7 @@ QTouchScreenHandler::QTouchScreenHandler(const QString &spec, QObject *parent)
}
#endif
- d = new QTouchScreenData(this, args);
+ d = new QEvdevTouchScreenData(this, args);
input_absinfo absInfo;
memset(&absInfo, 0, sizeof(input_absinfo));
@@ -235,7 +235,7 @@ QTouchScreenHandler::QTouchScreenHandler(const QString &spec, QObject *parent)
d->registerDevice();
}
-QTouchScreenHandler::~QTouchScreenHandler()
+QEvdevTouchScreenHandler::~QEvdevTouchScreenHandler()
{
#ifdef USE_MTDEV
if (m_mtdev) {
@@ -250,7 +250,7 @@ QTouchScreenHandler::~QTouchScreenHandler()
delete d;
}
-void QTouchScreenHandler::readData()
+void QEvdevTouchScreenHandler::readData()
{
::input_event buffer[32];
int n = 0;
@@ -289,7 +289,7 @@ void QTouchScreenHandler::readData()
d->processInputEvent(&buffer[i]);
}
-void QTouchScreenData::processInputEvent(input_event *data)
+void QEvdevTouchScreenData::processInputEvent(input_event *data)
{
if (data->type == EV_ABS) {
@@ -400,7 +400,7 @@ void QTouchScreenData::processInputEvent(input_event *data)
m_lastEventType = data->type;
}
-int QTouchScreenData::findClosestContact(const QHash<int, Contact> &contacts, int x, int y, int *dist)
+int QEvdevTouchScreenData::findClosestContact(const QHash<int, Contact> &contacts, int x, int y, int *dist)
{
int minDist = -1, id = -1;
for (QHash<int, Contact>::const_iterator it = contacts.constBegin(), ite = contacts.constEnd();
@@ -419,7 +419,7 @@ int QTouchScreenData::findClosestContact(const QHash<int, Contact> &contacts, in
return id;
}
-void QTouchScreenData::assignIds()
+void QEvdevTouchScreenData::assignIds()
{
QHash<int, Contact> candidates = m_lastContacts, pending = m_contacts, newContacts;
int maxId = -1;
@@ -453,7 +453,7 @@ void QTouchScreenData::assignIds()
m_contacts = newContacts;
}
-void QTouchScreenData::reportPoints()
+void QEvdevTouchScreenData::reportPoints()
{
QRect winRect;
if (m_forceToActiveWindow) {
@@ -493,21 +493,21 @@ void QTouchScreenData::reportPoints()
}
-QTouchScreenHandlerThread::QTouchScreenHandlerThread(const QString &spec)
- : m_spec(spec), m_handler(0)
+QEvdevTouchScreenHandlerThread::QEvdevTouchScreenHandlerThread(const QString &spec, QObject *parent)
+ : QThread(parent), m_spec(spec), m_handler(0)
{
start();
}
-QTouchScreenHandlerThread::~QTouchScreenHandlerThread()
+QEvdevTouchScreenHandlerThread::~QEvdevTouchScreenHandlerThread()
{
quit();
wait();
}
-void QTouchScreenHandlerThread::run()
+void QEvdevTouchScreenHandlerThread::run()
{
- m_handler = new QTouchScreenHandler(m_spec);
+ m_handler = new QEvdevTouchScreenHandler(m_spec);
exec();
delete m_handler;
m_handler = 0;
diff --git a/src/platformsupport/input/evdevtouch/qevdevtouch_p.h b/src/platformsupport/input/evdevtouch/qevdevtouch_p.h
index 63b02f2086..f9f84128e3 100644
--- a/src/platformsupport/input/evdevtouch/qevdevtouch_p.h
+++ b/src/platformsupport/input/evdevtouch/qevdevtouch_p.h
@@ -53,18 +53,18 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
class QSocketNotifier;
-class QTouchScreenData;
+class QEvdevTouchScreenData;
#ifdef USE_MTDEV
struct mtdev;
#endif
-class QTouchScreenHandler : public QObject
+class QEvdevTouchScreenHandler : public QObject
{
Q_OBJECT
public:
- QTouchScreenHandler(const QString &spec = QString(), QObject *parent = 0);
- ~QTouchScreenHandler();
+ QEvdevTouchScreenHandler(const QString &spec = QString(), QObject *parent = 0);
+ ~QEvdevTouchScreenHandler();
private slots:
void readData();
@@ -72,23 +72,23 @@ private slots:
private:
QSocketNotifier *m_notify;
int m_fd;
- QTouchScreenData *d;
+ QEvdevTouchScreenData *d;
#ifdef USE_MTDEV
mtdev *m_mtdev;
#endif
};
-class QTouchScreenHandlerThread : public QThread
+class QEvdevTouchScreenHandlerThread : public QThread
{
public:
- QTouchScreenHandlerThread(const QString &spec);
- ~QTouchScreenHandlerThread();
+ QEvdevTouchScreenHandlerThread(const QString &spec, QObject *parent = 0);
+ ~QEvdevTouchScreenHandlerThread();
void run();
- QTouchScreenHandler *handler() { return m_handler; }
+ QEvdevTouchScreenHandler *handler() { return m_handler; }
private:
QString m_spec;
- QTouchScreenHandler *m_handler;
+ QEvdevTouchScreenHandler *m_handler;
};
QT_END_NAMESPACE
diff --git a/src/plugins/generic/evdevtouch/README b/src/plugins/generic/evdevtouch/README
index 119f2a2c9e..fca2770106 100644
--- a/src/plugins/generic/evdevtouch/README
+++ b/src/plugins/generic/evdevtouch/README
@@ -1,12 +1,17 @@
-Generic plug-in for evdev touch (ABS_MT) events.
+Generic plug-in for evdev multiple touch (ABS_MT) events.
Supports protocol type A & B.
Type B is supported both directly and via libmtdev.
+Single-touch devices reporting ABS_X and Y only are not supported
+by this plugin. Use tslib or evdevmouse instead.
The protocol type will be detected automatically.
To enable libmtdev support uncomment the USE_MTDEV define in
evdevtouch.pro.
-Tested with the following kernel drivers: bcm5974, hid_magicmouse.
+Tested with the following kernel drivers:
+ bcm5974 (type A)
+ hid_magicmouse (type A with ABS_MT_TRACKING_ID) (type B over libmtdev)
+ wacom (type B)
To use this "driver", pass -plugin EvdevTouch on the command line.
@@ -24,9 +29,9 @@ Only touch events are generated, mouse events are not. Be aware however
that ignored touch events will generate a mouse event from the first
touch point by default. See AA_SynthesizeMouseForUnhandledTouchEvents.
-If no evdev events are read, disable the synaptics driver from X or
-temporarily disable the device by running
-xinput set-prop <device> <device enabled property> 0.
+If no evdev events are read, X may be grabbing the device.
+Disable the synaptics driver from X or temporarily disable the device
+by running xinput set-prop <device> <device enabled property> 0.
Use xinput list and xinput list-props to figure out the values.
When not running on a windowing system (eglfs, kms, etc.) and having a
@@ -38,5 +43,5 @@ If the input device cannot be accessed, set up a udev rule.
For example:
sudo cp 70-qtouchscreen.rules /etc/udev/rules.d
sudo udevadm trigger --subsystem-match=input
-The udev rule matches any touchpad or touchscreen device. If there are
-multiple ones, specify the device manually as described above.
+The sample udev rule matches any touchpad or touchscreen device.
+If there are multiple ones, specify the device manually as described above.
diff --git a/src/plugins/generic/evdevtouch/main.cpp b/src/plugins/generic/evdevtouch/main.cpp
index 0068ec88a8..2bdee0d332 100644
--- a/src/plugins/generic/evdevtouch/main.cpp
+++ b/src/plugins/generic/evdevtouch/main.cpp
@@ -44,32 +44,32 @@
QT_BEGIN_NAMESPACE
-class QTouchScreenPlugin : public QGenericPlugin
+class QEvdevTouchScreenPlugin : public QGenericPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QGenericPluginFactoryInterface" FILE "evdevtouch.json")
public:
- QTouchScreenPlugin();
+ QEvdevTouchScreenPlugin();
QStringList keys() const;
QObject* create(const QString &key, const QString &specification);
};
-QTouchScreenPlugin::QTouchScreenPlugin()
+QEvdevTouchScreenPlugin::QEvdevTouchScreenPlugin()
{
}
-QStringList QTouchScreenPlugin::keys() const
+QStringList QEvdevTouchScreenPlugin::keys() const
{
return QStringList() << "EvdevTouch";
}
-QObject* QTouchScreenPlugin::create(const QString &key,
- const QString &spec)
+QObject* QEvdevTouchScreenPlugin::create(const QString &key,
+ const QString &spec)
{
if (!key.compare(QLatin1String("EvdevTouch"), Qt::CaseInsensitive))
- return new QTouchScreenHandlerThread(spec);
+ return new QEvdevTouchScreenHandlerThread(spec);
return 0;
}