Redefining input in X

One of the biggest changes in the user interface is about to hit the Linux desktop with the upcoming X Input Extension 2.0 and the integration of MPX into the X.org X Server. For decades, applications, toolkits and users have assumed that there is only one mouse and one keyboard to interact with the computer’s GUI. This happy time is over.

MPX changes the X Server’s input subsystem to allow multiple independent input devices to operate simultaneously. Want to use two text editors at the same time? Just plug another keyboard in. Want to surf the web while your colleague is typing a document? Just connect another mouse. Each mouse will have a separate cursor and each keyboard an independent keyboard focus. Events are not generated by the core pointer or the core keyboard anymore, but rather by their respective device. An event only represents a single device’s state.

MPX also introduces a new set of events to enable touch-screens with multiple touch-points to interact with applications. A client application can transform these events into gestures and provide natural user interaction methods. Automatic pointer emulation ensures that touch-applications and standard X clients can co-exist on the same screen.

Universal support for multiple input devices changes one of the very foundations of graphical user interfaces. As the restriction to one keyboard and one mouse disappears, many basic assumptions are not valid any more. The focus model, the order of events, and the grab semantics, etc. all change significantly. This has large implications for application developers and toolkit hackers. Users can disappear and re-appear at any time, and interact simultaneously with any given application at a time. MPX simulates a single-user environment for applications that are built against the single-mouse-single-keyboard axiom. These single-user environments enable us to continue using everyday applications. However, it is up to the window managers to control the properties of such an environment.

This talk explains how MPX changes the desktop. Basic knowledge of how X works is recommended. The audience can expect an introduction into the X server’s input subsystem and event delivery. I will then discuss how changes to the server make it possible to provide multiple devices (and touch-screens) simultaneously. I will discuss what the implications for application programmers, toolkit hackers and developers of window managers. The talk will conclude with a demonstration of MPX.

Project: MPX

Peter Hutterer

Peter is a PhD student at the Wearable Computers Lab at the University of South Australia. His research focuses on integrating support multiple users into the standard desktop. This started with writing normal applications but eventually he ended up changing the X server's input system to get there.

Peter Hutterer

Peter is a PhD student at the Wearable Computers Lab at the University of South Australia. His research focuses on integrating support multiple users into the standard desktop. This started with writing normal applications but eventually he ended up changing the X server's input system to get there.