Features/Multitouch support

= Multitouch support =

Summary
Multitouch support in the plumbing layers of the desktop stack. This includes the kernel, the evdev X input driver (and other drivers where required), the X server and finally the X protocol and Xlib.

Owner

 * Name: Peter Hutterer


 * Email: 

Current status

 * Targeted release: Fedora 17
 * Last updated: 2012-03-02
 * Percentage of completion: 100%

XI 2.2 patches (including the multitouch support) for the protocol headers, X server, input drivers, and libraries have been included in the latest rawhide builds.

Basic support for touch devices and kinetic scrolling will appear in GTK+ 3.4, and will be part of F17. See this post for some details.

Detailed Description
This feature describes multitouch support. To get full use of multitouch, toolkits and applications need to be modified as well. This feature only covers the plumbing layer to enable multitouch.

Multitouch support in the plumbing layer requires changes to a few components:
 * The kernel needs to support multitouch and have hardware support for each multitouch device that users may want to use. The multitouch protocol in the kernel is finished and hardware support is ongoing, so we're assuming this part as finished for this feature.
 * The evdev X input driver needs to read the multi-touch protocol from the kernel and pass it to the X sever as appropriate, deciding which touchpoints require pointer emulation for legacy application compatibility.
 * The X server must take multitouch events and process them accordingly. This includes events from direct touch devices (e.g. touchscreens) and indirect touch devices (e.g. touchpads). The events must be sent to the right clients.
 * The X protocol (specifically the X Input Extension) needs to be extended to support the transport of touch events.
 * Xlib (specifically libXi) needs to be extended to provide a client-side API. This API may then be used by toolkits and/or applications.

Benefit to Fedora
Multitouch is a prominent new interaction paradigm that gained huge popularity in recent years. It can provide for more intuitive user interfaces and is the only mode of interaction on some hardware form factors. Multitouch support is required for multitouch to be usable.

Scope
Defined and release new upstream X Input Extension protocol version, integrate support into evdev and the X server.

How To Test
The xinput tool will be updated to provide simple event testing. To test, run  and then touch the screen. You should see touch events float past in the output.

For more extensive testing, custom test applications will need to be written.

No user system configuration is needed other than a multitouch-capable hardware. In the default installation, this hardware should be accessible through the X server instance.

If XI2.2 support lands in GTK+ 3.4, then testing the GNOME desktop on touch hardware will also exercise the multitouch support in X.

User Experience
This is a plumbing layer feature only and will not directly be visible until applications or toolkits make use of the feature.

Dependencies
This feature requires upstream releases for xorg-x11-server, xorg-x11-drv-evdev and xorg-x11-proto-devel. Since we ship the packages anyway, we'll just take whichever one is out at the time.

Contingency Plan
None necessary.

If the feature isn't ready upstream in time, it will not be part of our xorg rpms.

Documentation
Watch http://who-t.blogspot.com

Release Notes
The X server and libraries in Fedora 17 support version 2.2 of the XInput extension, including multi-touch support.

Comments and Discussion

 * See Talk:Features/Multitouch support