Multi-pointer X

From ArchWiki
Revision as of 12:48, 26 September 2010 by Rad3k (Talk | contribs) (Introduction)

Jump to: navigation, search

Tango-document-new.pngThis article is a stub.Tango-document-new.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Multi-pointer X#)


Xorg servers starting from version 1.7 have a feature called "multi-pointer". Basically it allows to have multiple mouse cursors (each with its own keyboard focus) on the screen and control them with separate physical input devices. It can be used as a crude mutliseat solution.

Basic concepts

Master and slave devices

With the introduction of XInput2, the input devices are organised in a two-level hierarchy:

  • Master devices, which correspond to cursors on the screen
  • Slave devices, which correspond to physical input devices

Master devices always come in pairs, one for pointer and one for keyboard. Each master device can have a number of slave devices attached, so that cursor of a master device can be controlled by all slave devices attached to it.

Client pointer

When an application grabs input (e.g. a fullscreen game), it always grabs a master device that is set as its client pointer. By default, the client pointer is set to "Virtual core pointer", but it can be set to a different one with a "xinput" utility.

Software support

It is possible to use multi-pointer with software that doesn't explicitly support it, but with limited functionality. Applications which don't support it won't distinguish between multiple pointers and will interpret all actions as if done by single master device pair. As of 26 September 2010, none of major window managers fully support multi-pointer.