X.org multitouch support

This video made by Benjamin Tissoires, Stephane Chatty and Gilles Tabart from the Interactive Computing Lab at ENAC demonstrates how Stephane's kernel drivers and Benjamin's patched X.org evdev driver allow to use existing applications with multitouch displays.



You need:

  • Linux kernel 2.6.31 or more recent;
  • a computer with a Linux-compatible multitouch device. Here is a list of available multitouch devices and their status;
  • the corresponding driver. Some are already in the Linux kernel sources, others are here: Stantum MTP, Stantum HID, 3M, Quanta, MosArt, DiamondTouch;
  • you will also need to import bits from hid-core.c and hid-ids.h into the drivers/hid directory of your kernel sources. Here is some more information on how to proceed with the kernel;
  • X.org version X11R7.5, available for instance in Fedora 12;
  • Benjamin's X.org evdev driver and multitouch management client (last updated at Fri Feb 5 21:03:10 CET 2010). Here is some more information on how to proceed with X.org.



    How it works: Actually, most of the work is done by MPX. When loading the customized evdev driver, the multitouch device is recognized as a touchscreen.
    By changing the property "Evdev MultiTouch", the user can control the number of contact points that are recognized. Thus the device only transfers the contact points to the newly created subdevices.
    This property can easily be modified with "multitouchctl x", where 'x' has the following meaning:
    • if x = 0, touchscreen emulation,
    • if x > 0 it is the number of contact points recognized.
    The daemon "multitouchd" monitors/controls the property and creates the master devices. It hides or shows the cursors depending on their valuator "TrackingID" and also sends the press/release events at the beginning/end of movements.
    We splitted the creation of subdevices and cursors in order to be able to implement a gesture recognition in user-space (TODO).
    To understand what is actually happening inside your server, the command "xinput" is very useful!

    Context: This work was done as part of project ShareIT, a research project in which we collaborate with our good friends the multitouch hardware makers at Stantum, the multitouch software and interaction experts at IntuiLab and the aircraft cockpit designers at Thales Avionics to explore the use of multitouch user interfaces in cockpits. But no, there is no plan to use Linux in the cockpit, this is just for the lab's research :-)

    Multitouch? Here is some more information about multitouch interaction, available devices, multitouch on Linux, etc.

    Contact: chatty at enac.fr, tissoire at lii-enac.fr
    Updated Feb 6, 2010.