Microsoft Surface, Watch Your Back! Here Comes MPX for X Server on Linux

mpx video demoPeter Hutterer, a PhD student at the Wearable Computer Lab at the University of South Australia, has released a Beta version of his multicursor modification to the X server windowing system under Linux (via digg). What it does, in essence, is provide users in a X windows desktop environment like KDE or GNOME to use multiple cursor points on a touchsceen monitor to manipulate elements in a workspace (no word if MPX is compatible with compiz-fusion at this time – would be amazing). Below is a video demo of MPX in action under Ubuntu and a more in-depth explanation of how the X server mod works.


The Multi-Pointer X Server (MPX) is a modification of the X Server. A standard X Server only provides one mouse cursor (pointer) and one keyboard focus, regardless of the number of input devices connected. MPX provides the user with multiple mouse cursors and multiple keyboard foci. Multicursor applications have been developed in the past but MPX is the first implementation of a multicursor windowing system (or a multicursor X server).

MPX devices are independent. Each cursor is a true system cursor and different pointers can operate in multiple applications simultaneously. This allows for two-handed interaction and/or collaboration on a single display. MPX is compatible to legacy applications such as the GIMP, the Firefox web browser and numerous other applications. Keyboards provide multiple keyboard foci. So you can actually type into several applications at once. Both mice and keyboards can be hot-plugged.

MPX is significantly different to solutions like cpnmouse, SDGToolkit, MIDDesktop and other toolkits or applications. It is fairly easy under most operating systems to write an application or toolkit to support multiple input devices. It is trickier to support the same for legacy applications. Supporting new and legacy applications at the same time is hard.

MPX changes the windowing system, the environment for all graphical applications. This way, legacy applications are supported and provided with extra features. New applications can use the multi-pointer facilities and thus create novel interaction methods at the same time. That is why we think that the windowing system is the correct place to support multiple input devices.

More details can be found in Peter’s recent blog entry, “Multi-touch support for MPX.”

Filed in: Software