Multitouch

Version 4 (admin, 20/03/2012 14:58) → Version 5/11 (admin, 20/03/2012 15:01)

h1. Multitouch

{{>toc}}

Multitouch support is an integrated part of libavg. The framework is made for fast device-independent multitouch development, supports all major multitouch driver models and has multitouch-oriented event handling features. The extensive support for gesture recognition and the unique contact-based touch API are described under [[TouchInput|Touch Input]].

If you are running Ubuntu 11.04 or later, libavg and some [[NattyMultitouchDemos|multitouch games]] are available as packages.

h1. Additional Information

There is lots of additional information in our scientific publications:

* For a more in-depth look at building multitouch devices, have a look at our journal article on building multitouch hardware: "Building Interactive Multi-touch Surfaces":http://www.files/wiki/Multitouch/Multitouchguide_draft.pdf. Johannes Schöning et.al.. In: Journal of Graphics Tools, Vol. 10, Pages 1-23, A K Peters, Ltd. 2009.
* We also have an article in a very good book, "Tabletops and Horizontal Interactive Touch Displays":http://www.springer.com/computer/hci/book/978-1-84996-112-7.
* And here are the slides of the tutorial on "Software Development for Tabletops":/site/files/Multitouch/ITS_2010_Tutorial_MT_SW_Development.pdf that the libavg maintainer gave at the "Interactive Tabletops and Surfaces Conference 2010":http://www.its2010.org/.

h1. Driver Support

libavg handles multitouch events delivered by all major driver subsystems and comes with it's own multitouch tracker as well. The supported driver architectures are:

* *TUIO*: "TUIO":http://www.tuio.org/ is a de-facto standard protocol for multitouch events. It is supported by almost all open-source tracking libraries.
* *Linux*: Linux tracking is supported using libmtdev and XInput 2.1 or later, so all multitouch devices supported by the linux kernel work. XInput (available under Ubuntu 11.04 and later) needs no additional setup. For libmtdev, refer to the [[LibMTDev setup notes]].
* *Windows 7*: libavg supports Windows 7 touch events for multitouch input.
* *Apple Trackpad*: We have native support for built-in Mac Book Pro trackpads.
* *Internal Tracker*: libavg has a built-in tracker that works with FTIR and DI setups. Setup notes are on the [[Tracker|Camera Tracking page]].

Refer to the [[reference]] for details on how to set up multitouch handling.

h1. Event Handling

Since multitouch is an integrated part of the framework, all libavg [[EventHandlingDetails|Event [[Event handling]] features work with multitouch events as well. Multitouch events are automatically routed to the correct nodes and event capture works as well. In addition, there is a manipulation API that helps you build direct-manipulation NUI-style interfaces (see [[TouchInput|Touch Input]]).

h1. Hardware

libavg multitouch support was originally developed for the "c-base MTC":http://www.macrone.de/multitouch/ in 2006. If you'd like to build your own hardware, the "article":/site/files/Multitouch/Multitouchguide_draft.pdf [[article]] helps. We also have an older [[BuildingAMultitouchTable|construction howto]].