<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN">
<article>
 
<!-- made up title -->
<title> Information about the XInput extension in XFree86&tm;
<author> Fr&eacute;d&eacute;ric Lepied
<date> 2 November 1998
<toc>

<sect> Introduction <p>

This document provides  some information  about  the XInput  extension
implemented in XFree86&tm;.

If  you have any suggestions,  comments, fixes  or ideas regarding the
XInput extension in XFree86&tm; or about this document, send e-mail to

<htmlurl url="mailto:lepied@XFree86.Org" 
    name="lepied@XFree86.Org"><p>
Bug Reports should be sent to<p>
<em>XFree86@XFree86.Org</em><p>
Questions or anything else should be posted to the NewsGroup<p>
<em>comp.windows.x.i386unix</em><p>

<sect> Description <p>

The XInput extension is a standard X Consortium extension. The goal of
this extension is to allow additional input  devices management to the
X Window System. The documentation could  be found in the X Consortium
distribution under <em>xc/doc/hardcopy/Xi</em>.

<sect> XFree86 implementation <p>

The XFree86 implementation contains 2 parts : the server part and two
clients (<em>xsetpointer</em> and <em>xsetmode</em>).

<sect1> Server side <p>

The server supports the following extended devices :
<itemize>
	<item>Joystick (only on  supported systems ie. Linux, FreeBSD
	and NetBSD). Features :
	<itemize>
		<item>Relative mode.
		<item>2 valuators (x and y axis).
		<item>2 buttons.
	</itemize>

	<item>Elographics touchscreen. Features :
	<itemize>
		<item>Absolute mode.
		<item>2 valuators (x and y axis).
		<item>1 button.
	</itemize>

	<item>Stylus on MicroTouch touchscreen. Features :
	<itemize>
		<item>Absolute mode.
		<item>2 valuators (x and y axis).
		<item>1 button.
	</itemize>

	<item>Finger on MicroTouch touchscreen. Features :
	<itemize>
		<item>Absolute mode.
		<item>2 valuators (x and y axis).
		<item>1 button.
	</itemize>

	<item>Mouse. Features :
	<itemize>
		<item>Relative mode.
		<item>2 valuators (x and y axis).
		<item>up to 4 buttons.
	</itemize>

	<item>Wacom stylus. Features :
	<itemize>
		<item>Absolute or relative modes.
		<item>6 valuators :
		<enum>
			<item>X axis.
			<item>Y axis.
			<item>pressure.
			<item>X tilt.
			<item>Y tilt.
			<item>wheel.
		</enum>
		<item>3 buttons.
		<item>Proximity report.
		<item>Motion history capability.
		<item>Macro/function buttons are reported as keys.
	</itemize>

	<item>Wacom eraser. Features :
	<itemize>
		<item>Absolute or relative modes.
		<item>6 valuators :
		<enum>
			<item>X axis.
			<item>Y axis.
			<item>pressure.
			<item>X tilt.
			<item>Y tilt.
			<item>wheel.
		</enum>
		<item>1 button.
		<item>Proximity report.
		<item>Motion history capability.
		<item>Macro/function buttons are reported as keys.
	</itemize>

	<item>Wacom cursor. Features :
	<itemize>
		<item>Absolute or relative modes.
		<item>6 valuators :
		<enum>
			<item>X axis.
			<item>Y axis.
			<item>pressure.
			<item>X tilt.
			<item>Y tilt.
			<item>wheel.
		</enum>
		<item>16 buttons.
		<item>Proximity report.
		<item>Motion history capability.
		<item>Macro/function buttons are reported as keys.
	</itemize>

	<item>SummaSketch tablet. Features :
	<itemize>
		<item>Absolute or relative modes.
		<item>2 valuators (x and y axis).
		<item>2 buttons stylus or 4 buttons puck.
		<item>Proximity report.
		<item>Motion history capability.
	</itemize>

	<item>AceCad tablet. Features :
	<itemize>
		<item>Absolute or relative modes.
		<item>2 valuators (x and y axis).
		<item>2 buttons stylus or 4 buttons puck.
		<item>Proximity report.
		<item>Motion history capability.
	</itemize>

	<item>Calcomp DrawingBoard tablet. Features :
	<itemize>
		<item>Absolute or relative modes.
		<item>2 valuators (x and y axis).
		<item>4 buttons stylus or 16 buttons puck.
		<item>Proximity report.
		<item>Motion history capability.
	</itemize>

	<item>SWITCH virtual device. Features :
	<itemize>
		<item>Absolute mode.
		<item>1 valuator (device id) which reports the id of the device controlling
		the core pointer (works with the AlwaysCore feature see bellow).
	</itemize>

	<item>SGI button box. Features :
	<itemize>
		<item>Absolute or relative modes.
		<item>8 valuators.
		<item>32 buttons.
		<item>Motion history capability.
	</itemize>
	
</itemize>

To  enable  an   extended  device, you  must   add   en  entry  in the
<em>XF86Config</em> file.   Consult   to  the <em>XF86Config</em>  man
pages to see the details. <p>

The  XFree86 implementation supports  a  non  standard feature  called
<em>AlwaysCore</em> which enables an  XInput device to send both  core
and extended events at the same time. To enable it you have to add the
<em>AlwaysCore</em> keyword to the  subsection describing your  device
in the <em>XF86Config</em>  file.  The  <em>SWITCH</em> virtual device
reports a Motion event when another  device takes over the control of
the core pointer. The id of the new device is reported in the first
valuator of the event.

<sect1> Clients <p>

<em>xsetpointer</em> is used to  change the device controlling the core
pointer and to list available extended devices. <p>

<em>xsetmode</em> is used to change the mode (absolute or relative) of
an extended device. The device  has to  support relative and  absolute
modes and the device must not control the core pointer. <p>

Consult the man pages for details.


<verb>
$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/xinput.sgml,v 3.6.2.3 1999/06/30 13:00:30 hohndel Exp $




$XConsortium: xinput.sgml /main/3 1996/10/27 11:06:13 kaleb $
</verb>

</article>
