summaryrefslogtreecommitdiffstats
path: root/src/plugins/generic/touchscreen/README
blob: 25e0e1abe8b96f525a5304c376b93217786cdc0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Generic plug-in for evdev touch events

(a) Using as a QPA generic plug-in

1. set up the touch device
2. sudo apt-get install libmtdev-dev libudev-dev
3. build this plug-in (qmake && make)
4. sudo cp 70-qtouchscreen.rules /etc/udev/rules.d
5. sudo udevadm trigger --subsystem-match=input
6. run apps like this: app -platform xcb -plugin LinuxTouchScreen

If automatic detection does not work, use -plugin
LinuxTouchScreen:/dev/input/eventN to explicitly set the device file
name.

By default the surface of the touch device is mapped to the entire
screen. If this is not desired, pass force_window in the plugin
specification. This will cause mapping the touch surface to the active
window instead.

Only touch events are generated (via
QWindowSystemInterface::handleTouchEvent), mouse events are not. This
is because on desktop the touch device will usually act as a
single-touch mouse replacement anyway. For pointer-less systems the
code needs to be extended to generate also mouse events (by calling
handleMouseEvent too).

(b) Using in a compositor

The classes (QTouchScreenHandler, QTouchScreenHandlerThread) are also
suitable for direct inclusion into an application, e.g. a Wayland
compositor. The compositor will then usually register its own
QTouchScreenObserver because relying on the QTouchEvents generated by
the QPA event sender is often not satisfactory, as some low-level
details may get lost, and due to performance reasons.


Known issues:

The udev rule matches any touchpad device. If there are multiple ones,
specify the device as described above.

On recent distributions (e.g. Ubuntu 11.04) you may need to remove
50-synaptics.conf from /usr/share/X11/xorg.conf.d (followed by
logout/login) otherwise no evdev events can be read.