1b73be646Smrg  Mouse Support in xf86-input-mouse
2b73be646Smrg  Original version written by Kazutaka Yokota for XFree86 on 17 December 2002
3b73be646Smrg  Updated by Alan Coopersmith for X.Org releases
4659607e0Smrg  ____________________________________________________________
5659607e0Smrg
6659607e0Smrg  Table of Contents
7659607e0Smrg
8659607e0Smrg
9659607e0Smrg  1. Introduction
10659607e0Smrg  2. Supported Hardware
11659607e0Smrg  3. OS Support for Mice
12659607e0Smrg     3.1 Summary of Supported Mouse Protocol Types
13659607e0Smrg     3.2 BSD/OS
14659607e0Smrg     3.3 FreeBSD
15659607e0Smrg     3.4 FreeBSD(98)
16659607e0Smrg     3.5 Interactive Unix
17659607e0Smrg     3.6 Linux
18659607e0Smrg     3.7 Linux/98
19659607e0Smrg     3.8 LynxOS
20659607e0Smrg     3.9 NetBSD
21659607e0Smrg     3.10 NetBSD/pc98
22659607e0Smrg     3.11 OpenBSD
23659607e0Smrg     3.12 OS/2
24659607e0Smrg     3.13 SCO
25659607e0Smrg     3.14 Solaris
26659607e0Smrg     3.15 SVR4
27659607e0Smrg     3.16 PANIX
28659607e0Smrg
29659607e0Smrg  4. Configuring Your Mouse
30659607e0Smrg  5. xorg.conf Options
31659607e0Smrg     5.1 Buttons
32b73be646Smrg     5.2 ZAxisMapping
33659607e0Smrg     5.3 Resolution
34659607e0Smrg     5.4 Drag Lock Buttons
35659607e0Smrg
36659607e0Smrg  6. Mouse Gallery
37b73be646Smrg     6.1 MS IntelliMouse (serial, PS/2)
38659607e0Smrg     6.2 MS IntelliMouse Explorer (PS/2, USB)
39b73be646Smrg     6.3 Kensington Thinking Mouse and Kensington Expert Mouse (serial,
40b73be646Smrg         PS/2)
41659607e0Smrg     6.4 Genius NetScroll (PS/2)
42659607e0Smrg     6.5 Genius NetMouse and NetMouse Pro (serial, PS/2)
43659607e0Smrg     6.6 Genius NetScroll Optical (PS/2, USB)
44659607e0Smrg     6.7 ALPS GlidePoint (serial, PS/2)
45659607e0Smrg     6.8 ASCII MieMouse (serial, PS/2)
46659607e0Smrg     6.9 Logitech MouseMan+ and FirstMouse+ (serial, PS/2)
47659607e0Smrg     6.10 IBM ScrollPoint (PS/2)
48659607e0Smrg     6.11 8D ScrollMouse (serial, PS/2)
49659607e0Smrg     6.12 A4 Tech 4D mice (serial, PS/2, USB)
50659607e0Smrg
51659607e0Smrg  7. Configuration Examples
52659607e0Smrg
53659607e0Smrg
54659607e0Smrg  ______________________________________________________________________
55659607e0Smrg
56b73be646Smrg  1.  Introduction
57659607e0Smrg
58659607e0Smrg
59b73be646Smrg  This document describes mouse support in the xf86-input-mouse driver
60b73be646Smrg  for the Xorg X server.   This driver is mainly used on non-Linux
61b73be646Smrg  operating systems such as BSD & Solaris, as modern Linux systems use
62e4da38afSmrg  the xf86-input-evdev or xf86-input-libinput drivers instead.
63659607e0Smrg
64659607e0Smrg  Mouse configuration has often been mysterious task for novice users.
65659607e0Smrg  However, once you learn several basics, it is straightforward to write
66659607e0Smrg  the mouse "InputDevice" section in the xorg.conf file by hand.
67659607e0Smrg
68659607e0Smrg
69b73be646Smrg  2.  Supported Hardware
70659607e0Smrg
71659607e0Smrg
72b73be646Smrg  The xf86-input-mouse driver supports four classes of mice: serial,
73b73be646Smrg  bus and PS/2 mice, and additional mouse types supported by specific
74b73be646Smrg  operating systems, such as USB mice.
75659607e0Smrg
76659607e0Smrg
77b73be646Smrg     Serial mouse
78b73be646Smrg        The serial mouse was once the most popular pointing device for
79659607e0Smrg        PCs.  There have been numerous serial mouse models from a number
80659607e0Smrg        of manufactures.  Despite the wide range of variations, there
81659607e0Smrg        have been relatively few protocols (data format) with which the
82659607e0Smrg        serial mouse talks to the host computer.
83659607e0Smrg
84659607e0Smrg        The modern serial mouse conforms to the PnP COM device
85659607e0Smrg        specification so that the host computer can automatically detect
86659607e0Smrg        the mouse and load an appropriate driver.  The X server supports
87659607e0Smrg        this specification and can detect popular PnP serial mouse
88659607e0Smrg        models on most platforms.
89659607e0Smrg
90659607e0Smrg
91b73be646Smrg     Bus mouse
92659607e0Smrg        The bus mouse connects to a dedicated interface card in an
93659607e0Smrg        expansion slot.  Some video cards, notably those from ATI, and
94659607e0Smrg        integrated I/O cards may also have a bus mouse connector.  Some
95659607e0Smrg        bus mice are known as `InPort mouse'.
96659607e0Smrg
97b73be646Smrg        Note that some mouse manufacturers have sold a package including
98659607e0Smrg        a serial mouse and a serial interface card.  Don't confuse this
99659607e0Smrg        type of products with the genuine bus mouse.
100659607e0Smrg
101659607e0Smrg
102b73be646Smrg     PS/2 mouse
103b73be646Smrg        They are sometimes called `Mouse-port mouse'.  The PS/2 mouse was
104b73be646Smrg        common for a generation after serial mice, and most laptops still
105b73be646Smrg        use the PS/2 protocol for built-in pointer devices.
106659607e0Smrg
107659607e0Smrg        The PS/2 mouse is an intelligent device and may have more than
108659607e0Smrg        three buttons and a wheel or a roller.  The PS/2 mouse is
109659607e0Smrg        usually compatible with the original PS/2 mouse from IBM
110659607e0Smrg        immediately after power up.  The PS/2 mouse with additional
111659607e0Smrg        features requires a specialized initialization procedure to
112659607e0Smrg        enable these features.  Without proper initialization, it
113659607e0Smrg        behaves as though it were an ordinary two or three button mouse.
114659607e0Smrg
115659607e0Smrg
116b73be646Smrg     USB mouse
117659607e0Smrg        USB (Universal Serial Bus) ports are present on most modern
118659607e0Smrg        computers. Several devices can be plugged into this bus,
119659607e0Smrg        including mice and keyboards.
120659607e0Smrg
121b73be646Smrg        This driver includes support for USB mice on some systems.
122659607e0Smrg
123659607e0Smrg  Many mice nowadays can be used both as a serial mouse and as a PS/2
124b73be646Smrg  mouse, or as both a PS/2 and a USB mouse.  They have logic to distinguish
125b73be646Smrg  which interface it is connected to.  However, a mouse which is not
126b73be646Smrg  marketed as compatible with both mouse interfaces lacks this logic and
127b73be646Smrg  cannot be used in such a way, even if you can find an appropriate adapter
128b73be646Smrg  with which you can connect the mouse to a different format port.
129b73be646Smrg
130b73be646Smrg  This driver supports a mouse with a wheel, a roller or a knob.  Its
131659607e0Smrg  action is detected as the Z (third) axis motion of the mouse.  As the
132659607e0Smrg  X server or clients normally do not use the Z axis movement of the
133659607e0Smrg  pointing device, a configuration option, "ZAxisMapping", is provided
134659607e0Smrg  to assign the Z axis movement to another axis or a pair of buttons
135659607e0Smrg  (see below).
136659607e0Smrg
137659607e0Smrg
138b73be646Smrg  3.  OS Support for Mice
139b73be646Smrg
140659607e0Smrg
141b73be646Smrg
142b73be646Smrg  3.1.  Summary of Supported Mouse Protocol Types
143659607e0Smrg
144659607e0Smrg
145659607e0Smrg                                  Protocol Types
146659607e0Smrg                  serial     PnP     BusMouse    PS/2   Extended PS/2
147659607e0Smrg  OS platforms   protocols  serial   protocol  protocol  protocols
148659607e0Smrg                            "Auto"  "BusMouse"  "PS/2"   "xxxPS/2"    USB
149659607e0Smrg  -------------------------------------------------------------------------
150659607e0Smrg  BSD/OS            Ok        ?         ?         ?         ?          ?
151659607e0Smrg  FreeBSD           Ok        Ok        Ok        Ok        SP*1       SP*1
152659607e0Smrg  FreeBSD(98)       Ok        ?         Ok        NA        NA         ?
153659607e0Smrg  Interactive Unix  Ok        NA        ?*1       ?*1       NA         ?
154659607e0Smrg  Linux             Ok        Ok        Ok        Ok        Ok         ?
155659607e0Smrg  Linux/98          Ok        ?         Ok        NA        NA         ?
156659607e0Smrg  LynxOS            Ok        NA        Ok        Ok        NA         ?
157659607e0Smrg  NetBSD            Ok        Ok        Ok        SP*1      SP*1       SP*1
158659607e0Smrg  NetBSD/pc98       Ok        ?         Ok        NA        NA         NA
159659607e0Smrg  OpenBSD           Ok        Ok        Ok        Ok*1      Ok*1       Ok*1
160659607e0Smrg  SCO               Ok        ?         SP*1      SP*1      NA         ?
161e4da38afSmrg  Solaris           Ok        NA*1      ?*1       Ok        Ok         SP*1
162659607e0Smrg  SVR4              Ok        NA*1      SP*1      SP*1      NA         ?
163659607e0Smrg  PANIX             Ok        ?         SP*1      SP*1      NA         ?
164659607e0Smrg
165659607e0Smrg  Ok: support is available,  NA: not available, ?: untested or unknown.
166659607e0Smrg  SP: support is available in a different form
167659607e0Smrg
168659607e0Smrg  *1 Refer to the following sections for details.
169659607e0Smrg
170659607e0Smrg
171659607e0Smrg
172b73be646Smrg  3.2.  BSD/OS
173659607e0Smrg
174659607e0Smrg  No testing has been done with BSD/OS.
175659607e0Smrg
176659607e0Smrg
177b73be646Smrg  3.3.  FreeBSD
178659607e0Smrg
179659607e0Smrg  FreeBSD supports the "SysMouse" protocol which must be specified when
180659607e0Smrg  the moused daemon is running in versions 2.2.1 or later.
181659607e0Smrg
182659607e0Smrg  When running the mouseddaemon, you must always specify the
183659607e0Smrg  /dev/sysmouse device and the "SysMouse" protocol to the X server,
184659607e0Smrg  regardless of the actual type of your mouse.
185659607e0Smrg
186659607e0Smrg  FreeBSD versions 2.2.6 or later include the kernel-level support for
187659607e0Smrg  extended PS/2 mouse protocols and there is no need to specify the
188659607e0Smrg  exact protocol name to the X server.  Instead specify the "PS/2" or
189659607e0Smrg  "Auto" protocol and the X server will automatically make use of the
190659607e0Smrg  kernel-level support.
191659607e0Smrg
192659607e0Smrg  In fact, "Auto" protocol support is really efficient in these
193659607e0Smrg  versions.  You may always specify "Auto" to any mouse, serial, bus or
194659607e0Smrg  PS/2, unless the mouse is an old serial model which doesn't support
195659607e0Smrg  PnP.
196659607e0Smrg
197659607e0Smrg  FreeBSD versions 2.2.5 or earlier do not support extended PS/2 mouse
198659607e0Smrg  protocols ("xxxPS/2").  Always specify the "PS/2" protocol for any
199659607e0Smrg  PS/2 mouse in these versions regardless of the brand of the mouse.
200b73be646Smrg
201659607e0Smrg  FreeBSD versions 3.1 or later have support for USB mice.  Specify the
202659607e0Smrg  "Auto" protocol for the /dev/ums0 device.  (If the moused daemon is
203659607e0Smrg  running for the USB mouse, you must use /dev/sysmouse instead of
204b73be646Smrg  /dev/ums0 as explained above.) See the ums(4) manual page for details.
205659607e0Smrg
206659607e0Smrg
207b73be646Smrg  3.4.  FreeBSD(98)
208659607e0Smrg
209659607e0Smrg  The PS/2 mouse is not supported.
210659607e0Smrg
211659607e0Smrg
212b73be646Smrg  3.5.  Interactive Unix
213659607e0Smrg
214659607e0Smrg  The PnP serial mouse support (the "Auto" protocol) is not supported
215659607e0Smrg  for the moment.
216659607e0Smrg
217659607e0Smrg  The bus mouse and PS/2 mouse should be supported by using the
218659607e0Smrg  appropriate device drivers.  Use /dev/mouse for the "BusMouse"
219659607e0Smrg  protocol and /dev/kdmouse for the "PS/2" protocol.  These protocols
220659607e0Smrg  are untested but may work.  Please send success/failure reports to
221b73be646Smrg  <mailto:michael.rohleder@stadt-frankfurt.de>
222659607e0Smrg
223659607e0Smrg
224b73be646Smrg  3.6.  Linux
225659607e0Smrg
226659607e0Smrg  All protocol types should work.
227659607e0Smrg
228659607e0Smrg
229b73be646Smrg  3.7.  Linux/98
230659607e0Smrg
231659607e0Smrg  The PS/2 mouse is not supported.
232659607e0Smrg
233659607e0Smrg
234b73be646Smrg  3.8.  LynxOS
235659607e0Smrg
236659607e0Smrg  The PnP serial mouse support (the "Auto" protocol) is disabled in
237659607e0Smrg  LynxOS, because of limited TTY device driver functionality.
238659607e0Smrg
239659607e0Smrg
240b73be646Smrg  3.9.  NetBSD
241659607e0Smrg
242659607e0Smrg  NetBSD 1.3.x and former does not support extended PS/2 mouse protocols
243659607e0Smrg  ("xxxPS/2").  The PS/2 mouse device driver /dev/pms emulates the bus
244659607e0Smrg  mouse.  Therefore, you should always specify the "BusMouse" protocol
245659607e0Smrg  for any PS/2 mouse regardless of the brand of the mouse.
246659607e0Smrg
247659607e0Smrg  The "wsmouse" protocol introduced in NetBSD 1.4 along with the wscons
248659607e0Smrg  console driver is supported. You need to run binaries compiled on
249659607e0Smrg  NetBSD 1.4 to have support for it though. Use "/dev/wsmouse0" for the
250b73be646Smrg  device. Refer to the wsmouse(4) manual page for kernel configuration
251370b807fSmrg  information.
252659607e0Smrg
253b73be646Smrg  This driver also provides support for USB mice. See the ums(4) manual
254659607e0Smrg  page for details.
255659607e0Smrg
256659607e0Smrg
257b73be646Smrg  3.10.  NetBSD/pc98
258659607e0Smrg
259659607e0Smrg  The PS/2 mouse is not supported.
260659607e0Smrg
261659607e0Smrg
262b73be646Smrg
263b73be646Smrg  3.11.  OpenBSD
264659607e0Smrg
265659607e0Smrg  The raw PS/2 mouse device driver /dev/psm0 uses the raw PS/2 mouse
266659607e0Smrg  protocol.
267659607e0Smrg
268659607e0Smrg  OpenBSD 2.2 and earlier does not support extended PS/2 mouse protocols
269b73be646Smrg  ("xxxPS/2") . Therefore, you should specify the "PS/2" protocol for
270659607e0Smrg  any PS/2 mouse regardless of the brand of the mouse.
271659607e0Smrg
272659607e0Smrg  OpenBSD 2.3 and later support all extended PS/2 mouse protocols.  You
273659607e0Smrg  can select the "Auto" protocol for PnP PS/2 mice or any specific
274659607e0Smrg  extended ("xxxPS/2") protocol for non PnP mice.
275659607e0Smrg
276659607e0Smrg  There is also a cooked PS/2 mouse device driver /dev/pms0 which
277b73be646Smrg  emulates the bus mouse. Specify the "BusMouse" protocol for any PS/2
278659607e0Smrg  mouse regardless of the brand of the mouse when using this device.
279659607e0Smrg
280659607e0Smrg  XFree86 3.3.6 support USB mice on OpenBSD 2.6 and later though the
281659607e0Smrg  generic Human Interface Device (hid) /dev/uhid*. Select the "usb"
282659607e0Smrg  protocol and the /dev/uhid* instance corresponding to your mouse as
283659607e0Smrg  the device name.
284659607e0Smrg
285659607e0Smrg
286b73be646Smrg  3.12.  OS/2
287659607e0Smrg
288b73be646Smrg  X11R7.5/OS2 always uses the native mouse driver of the operating
289659607e0Smrg  system and will support any type of pointer that the OS supports,
290659607e0Smrg  whether it is serial, bus mouse, or PnP type.  If the mouse works
291b73be646Smrg  under Presentation Manager, it will also work under X11R7.5/OS2.
292659607e0Smrg
293659607e0Smrg  Always specify "OSMouse" as the protocol type.
294659607e0Smrg
295659607e0Smrg
296b73be646Smrg  3.13.  SCO
297659607e0Smrg
298659607e0Smrg  The bus and PS/2 mouse are supported with the "OSMouse" protocol type.
299659607e0Smrg
300659607e0Smrg  The "OSMouse" may also be used with the serial mouse.
301659607e0Smrg
302659607e0Smrg
303b73be646Smrg  3.14.  Solaris
304659607e0Smrg
305e4da38afSmrg  Testing has been done with Solaris 10 and 11.
306659607e0Smrg
307659607e0Smrg  On Solaris 10 1/06 and later versions with "virtual mouse" support,
308b73be646Smrg  all PS/2 and USB mice connected to the system can be accessed via the
309b73be646Smrg  /dev/mouse device using the VUID protocol, including USB mice plugged
310b73be646Smrg  in after the X server is started. On older releases or to address mice
311b73be646Smrg  individually, specific devices and protocols may be used.
312659607e0Smrg
313659607e0Smrg  Logitech and Microsoft bus mice have not been tested, but might work
314b73be646Smrg  with the /dev/logi and /dev/msm devices.  Standard 2 and 3 button PS/2
315b73be646Smrg  mice work with the "PS/2" protocol type and the /dev/kdmouse device.
316b73be646Smrg  USB mice work with the "VUID" protocol type and the /dev/mouse device.
317b73be646Smrg  The PnP serial mouse support via the "Auto" protocol has been tested
318b73be646Smrg  and does not work. The "Auto" protocol can however detect PS/2 and USB
319b73be646Smrg  mice correctly.
320659607e0Smrg
321659607e0Smrg  Additional USB mice can be connected using the "VUID" protocol type
322b73be646Smrg  and the appropriate "/dev/usb/hid" device with the
323b73be646Smrg       Option "StreamsModule" "usbms"
324b73be646Smrg  line included in the associated "InputDevice" section.
325b73be646Smrg
326659607e0Smrg
327659607e0Smrg
328b73be646Smrg  3.15.  SVR4
329659607e0Smrg
330659607e0Smrg  The bus and PS/2 mouse may be supported with the "Xqueue" protocol
331659607e0Smrg  type.
332659607e0Smrg
333659607e0Smrg  The "Xqueue" may also be used with the serial mouse.
334659607e0Smrg
335659607e0Smrg  The PnP serial mouse support (the "Auto" protocol) is not tested.
336659607e0Smrg
337659607e0Smrg
338b73be646Smrg  3.16.  PANIX
339659607e0Smrg
340659607e0Smrg  The PC/AT version of PANIX supports the bus and PS/2 mouse with the
341659607e0Smrg  "Xqueue" protocol type.  The PC-98 version of PANIX supports the bus
342659607e0Smrg  mouse with the "Xqueue" protocol type.
343659607e0Smrg
344659607e0Smrg
345b73be646Smrg  4.  Configuring Your Mouse
346659607e0Smrg
347659607e0Smrg
348b73be646Smrg  Before editing the xorg.conf file to set up mouse configuration, you
349659607e0Smrg  must identify the interface type, the device name and the protocol
350659607e0Smrg  type of your mouse.  Blindly trying every possible combination of
351659607e0Smrg  mouse settings will lead you nowhere.
352659607e0Smrg
353659607e0Smrg  The first thing you need to know is the interface type of the mouse
354659607e0Smrg  you are going to use.  It can be determined by looking at the
355659607e0Smrg  connector of the mouse.  The serial mouse has a D-Sub female 9- or
356659607e0Smrg  25-pin connector.  The bus mice have either a D-Sub male 9-pin
357659607e0Smrg  connector or a round DIN 9-pin connector.  The PS/2 mouse is equipped
358b73be646Smrg  with a small, round DIN 6-pin connector.  USB mice have a thin
359b73be646Smrg  rectangular connector.  Some mice come with adapters with which the
360b73be646Smrg  connector can be converted to another. If you are to use such an
361b73be646Smrg  adapter, remember that the connector at the very end of the
362b73be646Smrg  mouse/adapter pair is what matters.
363659607e0Smrg
364659607e0Smrg  The next thing to decide is a device node to use for the given
365659607e0Smrg  interface.  For the bus and PS/2 mice, there is little choice; your OS
366659607e0Smrg  most possibly offers just one device node each for the bus mouse and
367659607e0Smrg  PS/2 mouse.  There may be more than one serial port to which the
368659607e0Smrg  serial mouse can be attached.
369659607e0Smrg
370659607e0Smrg  The next step is to guess the appropriate protocol type for the mouse.
371659607e0Smrg  The X server may be able to select a protocol type for the given mouse
372659607e0Smrg  automatically in some cases.  Otherwise, the user has to choose one
373659607e0Smrg  manually.  Follow the guidelines below.
374659607e0Smrg
375659607e0Smrg
376b73be646Smrg     Bus mouse
377659607e0Smrg        The bus and InPort mice always use "BusMouse" protocol
378659607e0Smrg        regardless of the brand of the mouse.
379659607e0Smrg
380659607e0Smrg        Some OSs may allow you to specify "Auto" as the protocol type
381659607e0Smrg        for the bus mouse.
382659607e0Smrg
383659607e0Smrg
384b73be646Smrg     PS/2 mouse
385659607e0Smrg        The "PS/2" protocol should always be tried first for the PS/2
386659607e0Smrg        mouse regardless of the brand of the mouse.  Any PS/2 mouse
387659607e0Smrg        should work with this protocol type, although wheels and other
388659607e0Smrg        additional features are unavailable in the X server.
389659607e0Smrg
390659607e0Smrg        After verifying the mouse works with this protocol, you may
391659607e0Smrg        choose to specify one of "xxxPS/2" protocols so that extra
392659607e0Smrg        features are made available in the X server.  However, support
393659607e0Smrg        for these PS/2 mice assumes certain behavior of the underlying
394659607e0Smrg        OS and may not always work as expected.  Support for some PS/2
395659607e0Smrg        mouse models may be disabled all together for some OS platforms
396659607e0Smrg        for this reason.
397659607e0Smrg
398659607e0Smrg        Some OSs may allow you to specify "Auto" as the protocol type
399659607e0Smrg        for the PS/2 mouse and the X server will automatically adjust
400659607e0Smrg        itself.
401659607e0Smrg
402659607e0Smrg
403b73be646Smrg     Serial mouse
404659607e0Smrg        The server supports a wide range of mice, both old and new.  If
405659607e0Smrg        your mouse is of a relatively new model, it may conform to the
406659607e0Smrg        PnP COM device specification and the X server may be able to
407659607e0Smrg        detect an appropriate protocol type for the mouse automatically.
408659607e0Smrg
409659607e0Smrg        Specify "Auto" as the protocol type and start the X server.  If
410659607e0Smrg        the mouse is not a PnP mouse, or the X server cannot determine a
411659607e0Smrg        suitable protocol type, the server will print the following
412659607e0Smrg        error message and abort.
413659607e0Smrg
414659607e0Smrg
415659607e0Smrg        <mousename>: cannot determine the mouse protocol
416659607e0Smrg
417659607e0Smrg
418659607e0Smrg
419659607e0Smrg     If the X server generates the above error message, you need to
420659607e0Smrg     manually specify a protocol type for your mouse.  Choose one from
421659607e0Smrg     the following list:
422659607e0Smrg
423659607e0Smrg
424b73be646Smrg        o  GlidePoint
425659607e0Smrg
426b73be646Smrg        o  IntelliMouse
427659607e0Smrg
428b73be646Smrg        o  Logitech
429659607e0Smrg
430b73be646Smrg        o  Microsoft
431659607e0Smrg
432b73be646Smrg        o  MMHittab
433659607e0Smrg
434b73be646Smrg        o  MMSeries
435659607e0Smrg
436b73be646Smrg        o  MouseMan
437659607e0Smrg
438b73be646Smrg        o  MouseSystems
439659607e0Smrg
440b73be646Smrg        o  ThinkingMouse
441659607e0Smrg
442659607e0Smrg     When you choose, keep in mind the following rule of thumb:
443659607e0Smrg
444659607e0Smrg
445659607e0Smrg        1. "Logitech" protocol is for old serial mouse models from
446659607e0Smrg           Logitech.  Modern Logitech mice use either "MouseMan" or
447659607e0Smrg           "Microsoft" protocol.
448659607e0Smrg
449659607e0Smrg        2. Most 2-button serial mice support the "Microsoft" protocol.
450659607e0Smrg
451659607e0Smrg        3. 3-button serial mice may work with the "Mousesystems"
452659607e0Smrg           protocol. If it doesn't, it may work instead with the
453659607e0Smrg           "Microsoft" protocol although the third (middle) button won't
454659607e0Smrg           function.  3-button serial mice may also work with the
455659607e0Smrg           "Mouseman" protocol under which the third button may function
456659607e0Smrg           as expected.
457659607e0Smrg
458659607e0Smrg        4. 3-button serial mice may have a small switch at the bottom of
459659607e0Smrg           the mouse to choose between ``MS'' and ``PC'', or ``2'' and
460659607e0Smrg           ``3''.  ``MS'' or ``2'' usually mean the "Microsoft"
461659607e0Smrg           protocol.  ``PC'' or ``3'' will choose the "MouseSystems"
462659607e0Smrg           protocol.
463659607e0Smrg
464659607e0Smrg        5. If the serial mouse has a roller or a wheel, it may be
465659607e0Smrg           compatible with the "IntelliMouse" protocol.
466659607e0Smrg
467659607e0Smrg        6. If the serial mouse has a roller or a wheel and it doesn't
468659607e0Smrg           work with the "IntelliMouse" protocol, you have to use it as
469659607e0Smrg           a regular 2- or 3-button serial mouse.
470659607e0Smrg
471b73be646Smrg     If the "Auto" protocol is specified and the mouse seems to be
472b73be646Smrg     working, but you find that not all features of the mouse are
473b73be646Smrg     available, that is because the X server does not have native
474b73be646Smrg     support for that model of mouse and is using a ``compatible''
475b73be646Smrg     protocol according to PnP information.
476659607e0Smrg
477b73be646Smrg     If you suspect this is the case with your mouse, please enter a bug
478b73be646Smrg     report at http://bugzilla.freedesktop.org, using the xorg product.
479659607e0Smrg
480659607e0Smrg
481b73be646Smrg     USB mouse
482659607e0Smrg        If your mouse is connected to the USB port, it can either be
483659607e0Smrg        supported by the "Auto" protocol, or by an OS-specific protocol
484659607e0Smrg        (see below), or as a generic Human Interface Device by the "usb"
485659607e0Smrg        protocol.
486659607e0Smrg
487659607e0Smrg
488b73be646Smrg     Standardized protocols
489659607e0Smrg        Mouse device drivers in your OS may use the standardized
490659607e0Smrg        protocol regardless of the model or the class of the mouse.  For
491659607e0Smrg        example, SVR4 systems may support "Xqueue" protocol.  In FreeBSD
492659607e0Smrg        the system mouse device /dev/sysmouse uses the "SysMouse"
493659607e0Smrg        protocol.  Please refer to the OS support section of this file
494659607e0Smrg        for more information.
495659607e0Smrg
496659607e0Smrg
497659607e0Smrg
498b73be646Smrg  5.  xorg.conf Options
499659607e0Smrg
500659607e0Smrg
501659607e0Smrg  The old Pointer section has been replaced by a more general
502b73be646Smrg  InputDevice section. The following is a minimal example of an
503659607e0Smrg  InputDevice section for a mouse:
504659607e0Smrg
505659607e0Smrg
506659607e0Smrg  Section "InputDevice"
507659607e0Smrg          Identifier      "Mouse 1"
508659607e0Smrg          Driver          "mouse"
509659607e0Smrg          Option          "Device"    "/dev/mouse"
510659607e0Smrg          Option          "Protocol"  "Auto"
511659607e0Smrg  EndSection
512659607e0Smrg
513659607e0Smrg
514659607e0Smrg
515659607e0Smrg  The mouse driver supports the following config file options:
516659607e0Smrg
517659607e0Smrg
518b73be646Smrg  5.1.  Buttons
519659607e0Smrg
520659607e0Smrg  This option tells the X server the number of buttons on the mouse.
521659607e0Smrg  Currently there is no reliable way to automatically detect the correct
522659607e0Smrg  number.  This option is the only means for the X server to obtain it.
523659607e0Smrg  The default value is three.
524659607e0Smrg
525b73be646Smrg
526659607e0Smrg  Note that if you intend to assign Z axis movement to button events
527659607e0Smrg  using the ZAxisMapping option below, you need to take account of those
528659607e0Smrg  buttons into N too.
529659607e0Smrg
530659607e0Smrg
531659607e0Smrg          Option  "Buttons"   "N"
532659607e0Smrg
533659607e0Smrg
534659607e0Smrg
535b73be646Smrg  5.2.  ZAxisMapping
536659607e0Smrg
537659607e0Smrg  This option maps the Z axis (wheel) motion to buttons or to another
538659607e0Smrg  axis.
539b73be646Smrg
540b73be646Smrg
541659607e0Smrg          Option  "ZAxisMapping"      "X"
542659607e0Smrg          Option  "ZAxisMapping"      "Y"
543659607e0Smrg          Option  "ZAxisMapping"      "N1 N2"
544659607e0Smrg          Option  "ZAxisMapping"      "N1 N2 N3 N4"
545659607e0Smrg
546659607e0Smrg
547659607e0Smrg
548659607e0Smrg  The first example will map the Z axis motion to the X axis motion.
549659607e0Smrg  Whenever the user moves the wheel/roller, its movement is reported as
550b73be646Smrg  the X axis motion. When the wheel/roller stays still, the real X axis
551b73be646Smrg  motion is reported as is. The third example will map negative Z axis
552659607e0Smrg  motion to the button N1 and positive Z axis motion to the button N2.
553659607e0Smrg  If this option is used and the buttons N1 or N2 actually exists in the
554659607e0Smrg  mouse, their actions won't be detected by the X server.
555659607e0Smrg
556659607e0Smrg  The last example is useful for the mouse with two wheels of which the
557659607e0Smrg  second wheel is used to generate horizontal scroll action, and the
558659607e0Smrg  mouse which has a knob or a stick which can detect the horizontal
559659607e0Smrg  force applied by the user.  The motion of the second wheel will be
560659607e0Smrg  mapped to the buttons N3, for the negative direction, and N4, for the
561659607e0Smrg  positive direction.  If the buttons N3 and N4 actually exist in this
562659607e0Smrg  mouse, their actions won't be detected by the X server.
563659607e0Smrg
564659607e0Smrg  NOTE #1: horizontal movement may not always be detected by the current
565b73be646Smrg  version of the X11R7.5 X servers, because there appears to be no
566659607e0Smrg  accepted standard as to how the horizontal direction is encoded in
567659607e0Smrg  mouse data.
568659607e0Smrg
569659607e0Smrg  NOTE #2: Some mice think left is the negative horizontal direction,
570659607e0Smrg  others may think otherwise.  Moreover, there are some mice whose two
571659607e0Smrg  wheels are both mounted vertically, and the direction of the second
572659607e0Smrg  vertical wheel does not match the first one's.
573659607e0Smrg
574659607e0Smrg  You need to edit the xorg.conf file by hand to change this option if
575659607e0Smrg  the default value of "4 5 6 7" does not match the needs of your
576659607e0Smrg  configuration.
577659607e0Smrg
578659607e0Smrg
579b73be646Smrg  5.3.  Resolution
580659607e0Smrg
581659607e0Smrg  The following option will set the mouse device resolution to N counts
582659607e0Smrg  per inch, if possible:
583659607e0Smrg
584659607e0Smrg
585659607e0Smrg          Option  "Resolution"        "N"
586659607e0Smrg
587659607e0Smrg
588659607e0Smrg
589659607e0Smrg  Not all mice and OSs can support this option.
590659607e0Smrg
591b73be646Smrg  5.4.  Drag Lock Buttons
592659607e0Smrg
593659607e0Smrg  Some people find it difficult or inconvenient to hold a trackball
594659607e0Smrg  button down, while at the same time moving the ball. Drag lock buttons
595659607e0Smrg  simulate the holding down of another button. When a drag lock button
596b73be646Smrg  is first pressed, its target buttons is "locked" down until the second
597b73be646Smrg  time the lock button is released, or until the button itself is
598659607e0Smrg  pressed and released. This allows the starting of a drag, the movement
599659607e0Smrg  of the trackball, and the ending of the drag to be separate
600659607e0Smrg  operations.
601659607e0Smrg
602659607e0Smrg
603659607e0Smrg          Option  "DragLockButtons"   "W X Y Z"
604659607e0Smrg
605659607e0Smrg
606b73be646Smrg
607659607e0Smrg  This option consists of pairs of buttons. Each lock button number is
608659607e0Smrg  followed by the number of the button that it locks. In the above,
609659607e0Smrg  button number "W" is a drag lock button for button "X" and button
610659607e0Smrg  number "Y" is a drag lock button for button "Z".
611659607e0Smrg
612659607e0Smrg  It may not be desirable to use multiple buttons as drag locks.
613659607e0Smrg  Instead, a "master drag lock button" may be defined. A master drag
614659607e0Smrg  lock button acts as a "META" key. After a master lock button is
615659607e0Smrg  released, the next button pressed is "locked" and not released until
616659607e0Smrg  the second time the real button is released.
617659607e0Smrg
618659607e0Smrg
619659607e0Smrg          Option  "DragLockButtons"   "M"
620659607e0Smrg
621659607e0Smrg
622659607e0Smrg
623659607e0Smrg  Since button "M" is unpaired it is a master drag lock button.
624659607e0Smrg
625659607e0Smrg
626b73be646Smrg  6.  Mouse Gallery
627659607e0Smrg
628659607e0Smrg
629659607e0Smrg  In all of the examples below, it is assumed that /dev/mouse is a link
630659607e0Smrg  to the appropriate serial port or PS/2 mouse device.
631659607e0Smrg
632659607e0Smrg
633b73be646Smrg  6.1.  MS IntelliMouse (serial, PS/2)
634659607e0Smrg
635659607e0Smrg  This mouse has a wheel which also acts as the button 2 (middle
636659607e0Smrg  button).  The wheel movement is recognized as the Z axis motion.  This
637659607e0Smrg  behavior is not compatible with XFree86 versions prior to 3.3.2, but
638659607e0Smrg  is more consistent with the support for other mice with wheels or
639659607e0Smrg  rollers.  If you want to make the wheel behave like before, you can
640659607e0Smrg  use the "ZAxisMapping" option as described above.
641659607e0Smrg
642659607e0Smrg  IntelliMouse supports the PnP COM device specification.
643659607e0Smrg
644659607e0Smrg  To use this mouse as a serial device:
645659607e0Smrg
646659607e0Smrg          Option  "Protocol"  "Auto"
647659607e0Smrg
648659607e0Smrg
649659607e0Smrg  or:
650659607e0Smrg
651659607e0Smrg          Option  "Protocol"  "IntelliMouse"
652659607e0Smrg
653659607e0Smrg
654659607e0Smrg
655659607e0Smrg  To use this mouse as the PS/2 device and the OS supports PS/2 mouse
656659607e0Smrg  initialization:
657659607e0Smrg          Option  "Protocol"  "IMPS/2"
658659607e0Smrg
659659607e0Smrg
660659607e0Smrg
661659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
662659607e0Smrg  mouse initialization (the wheel won't work in this case):
663659607e0Smrg
664659607e0Smrg          Option  "Protocol"  "PS/2"
665659607e0Smrg
666659607e0Smrg
667659607e0Smrg
668659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
669659607e0Smrg  PS/2 mouse detection:
670659607e0Smrg
671659607e0Smrg          Option  "Protocol"  "Auto"
672659607e0Smrg
673659607e0Smrg
674659607e0Smrg
675b73be646Smrg  6.2.  MS IntelliMouse Explorer (PS/2, USB)
676659607e0Smrg
677659607e0Smrg  This mouse has a wheel which also acts as the button 2 (middle
678659607e0Smrg  button).  There are two side buttons; they are recognized as the
679659607e0Smrg  buttons 4 and 5.  The wheel movement is recognized as the Z axis
680659607e0Smrg  motion.
681659607e0Smrg
682659607e0Smrg  To use this mouse as the PS/2 device and the OS supports PS/2 mouse
683659607e0Smrg  initialization:
684659607e0Smrg
685659607e0Smrg          Option  "Protocol"  "ExplorerPS/2"
686659607e0Smrg
687659607e0Smrg
688659607e0Smrg
689659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
690659607e0Smrg  mouse initialization (the wheel and the side buttons won't work in
691659607e0Smrg  this case):
692659607e0Smrg
693659607e0Smrg          Option  "Protocol"  "PS/2"
694659607e0Smrg
695659607e0Smrg
696659607e0Smrg
697659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
698659607e0Smrg  PS/2 mouse detection:
699659607e0Smrg
700659607e0Smrg          Option  "Protocol"  "Auto"
701659607e0Smrg
702659607e0Smrg
703659607e0Smrg
704659607e0Smrg  To use this mouse as the USB device and the OS supports the generic
705659607e0Smrg  HID protocol:
706659607e0Smrg
707659607e0Smrg          Option  "Protocol"  "usb"
708659607e0Smrg
709659607e0Smrg
710659607e0Smrg
711659607e0Smrg  To use this mouse as the USB device and the OS supports automatic
712659607e0Smrg  mouse detection:
713659607e0Smrg
714659607e0Smrg          Option  "Protocol"  "Auto"
715659607e0Smrg
716659607e0Smrg
717659607e0Smrg
718b73be646Smrg  6.3.  Kensington Thinking Mouse and Kensington Expert Mouse (serial,
719b73be646Smrg  PS/2)
720659607e0Smrg
721659607e0Smrg  These mice have four buttons.  The Kensington Expert Mouse is really a
722b73be646Smrg  trackball.  Both Thinking mice support the PnP COM device
723659607e0Smrg  specification.
724659607e0Smrg
725659607e0Smrg  To use this mouse as a serial device:
726659607e0Smrg
727659607e0Smrg          Option  "Protocol"  "Auto"
728659607e0Smrg
729659607e0Smrg
730659607e0Smrg  or:
731659607e0Smrg
732659607e0Smrg          Option  "Protocol"  "ThinkingMouse"
733659607e0Smrg
734659607e0Smrg
735b73be646Smrg
736659607e0Smrg  To use this mouse as the PS/2 device and the OS supports PS/2 mouse
737659607e0Smrg  initialization:
738659607e0Smrg
739659607e0Smrg          Option  "Protocol"  "ThinkingMousePS/2"
740659607e0Smrg
741659607e0Smrg
742659607e0Smrg
743659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
744659607e0Smrg  mouse initialization (the third and the fourth buttons act as though
745659607e0Smrg  they were the first and the second buttons):
746659607e0Smrg
747659607e0Smrg          Option  "Protocol"  "PS/2"
748659607e0Smrg
749659607e0Smrg
750659607e0Smrg
751659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
752659607e0Smrg  PS/2 mouse detection:
753659607e0Smrg
754659607e0Smrg          Option  "Protocol"  "Auto"
755659607e0Smrg
756659607e0Smrg
757659607e0Smrg
758b73be646Smrg  6.4.  Genius NetScroll (PS/2)
759659607e0Smrg
760b73be646Smrg  This mouse has four buttons and a roller. The roller movement is
761659607e0Smrg  recognized as the Z axis motion.
762659607e0Smrg
763659607e0Smrg  To use this mouse as the PS/2 device and the OS supports PS/2 mouse
764659607e0Smrg  initialization:
765659607e0Smrg
766659607e0Smrg          Option  "Protocol"  "NetScrollPS/2"
767659607e0Smrg
768659607e0Smrg
769659607e0Smrg
770659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
771659607e0Smrg  mouse initialization (the roller and the fourth button won't work):
772659607e0Smrg
773659607e0Smrg          Option  "Protocol"  "PS/2"
774659607e0Smrg
775659607e0Smrg
776659607e0Smrg
777659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
778659607e0Smrg  PS/2 mouse detection:
779659607e0Smrg
780659607e0Smrg          Option  "Protocol"  "Auto"
781659607e0Smrg
782659607e0Smrg
783b73be646Smrg  6.5.  Genius NetMouse and NetMouse Pro (serial, PS/2)
784659607e0Smrg
785659607e0Smrg  These mice have a "magic button" which is used like a wheel or a
786b73be646Smrg  roller. The "magic button" action is recognized as the Z axis motion.
787659607e0Smrg  NetMouse Pro is identical to NetMouse except that it has the third
788659607e0Smrg  button on the left hand side.
789659607e0Smrg
790659607e0Smrg  NetMouse and NetMouse Pro support the PnP COM device specification.
791659607e0Smrg  When used as a serial mouse, they are compatible with MS IntelliMouse.
792659607e0Smrg
793659607e0Smrg  To use these mice as a serial device:
794659607e0Smrg
795659607e0Smrg          Option  "Protocol"  "Auto"
796659607e0Smrg
797659607e0Smrg
798659607e0Smrg  or:
799659607e0Smrg
800659607e0Smrg          Option  "Protocol"  "IntelliMouse"
801659607e0Smrg
802659607e0Smrg
803659607e0Smrg
804659607e0Smrg  To use this mouse as the PS/2 device and the OS supports PS/2 mouse
805659607e0Smrg  initialization:
806659607e0Smrg
807659607e0Smrg          Option  "Protocol"  "NetMousePS/2"
808659607e0Smrg
809659607e0Smrg
810659607e0Smrg
811659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
812659607e0Smrg  mouse initialization (the "magic button" and the third button won't
813659607e0Smrg  work):
814659607e0Smrg
815659607e0Smrg          Option  "Protocol"  "PS/2"
816659607e0Smrg
817659607e0Smrg
818659607e0Smrg
819659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
820659607e0Smrg  PS/2 mouse detection:
821659607e0Smrg
822659607e0Smrg          Option  "Protocol"  "Auto"
823659607e0Smrg
824659607e0Smrg
825659607e0Smrg
826b73be646Smrg  6.6.  Genius NetScroll Optical (PS/2, USB)
827659607e0Smrg
828659607e0Smrg  This mouse has a wheel which also acts as the button 2 (middle
829659607e0Smrg  button), and two side buttons which are recognized as the buttons 4
830659607e0Smrg  and 5.  It is compatible with NetMouse and NetMouse Pro.
831659607e0Smrg
832659607e0Smrg  To use this mouse as the PS/2 device and the OS supports PS/2 mouse
833659607e0Smrg  initialization:
834659607e0Smrg
835659607e0Smrg          Option  "Protocol"  "NetMousePS/2"
836659607e0Smrg
837659607e0Smrg
838659607e0Smrg
839659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
840659607e0Smrg  mouse initialization (the wheel and the side buttons won't work):
841659607e0Smrg
842659607e0Smrg          Option  "Protocol"  "PS/2"
843659607e0Smrg
844659607e0Smrg
845659607e0Smrg
846659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
847659607e0Smrg  PS/2 mouse detection:
848659607e0Smrg          Option  "Protocol"  "Auto"
849659607e0Smrg
850659607e0Smrg
851659607e0Smrg
852659607e0Smrg  To use this mouse as the USB device and the OS supports the generic
853659607e0Smrg  HID protocol:
854659607e0Smrg
855659607e0Smrg          Option  "Protocol"  "usb"
856659607e0Smrg
857659607e0Smrg
858659607e0Smrg
859659607e0Smrg  To use this mouse as the USB device and the OS supports automatic
860659607e0Smrg  mouse detection:
861659607e0Smrg
862659607e0Smrg          Option  "Protocol"  "Auto"
863659607e0Smrg
864659607e0Smrg
865659607e0Smrg
866b73be646Smrg  6.7.  ALPS GlidePoint (serial, PS/2)
867659607e0Smrg
868659607e0Smrg  The serial version of this pad device has been supported since XFree86
869b73be646Smrg  3.2. `Tapping' action is interpreted as the fourth button press.
870659607e0Smrg  (IMHO, the fourth button of GlidePoint should always be mapped to the
871659607e0Smrg  first button in order to make this pad behave like the other pad
872659607e0Smrg  products.)
873659607e0Smrg
874659607e0Smrg  To use this pad as a serial device:
875659607e0Smrg
876659607e0Smrg          Option  "Protocol"  "GlidePoint"
877659607e0Smrg
878659607e0Smrg
879659607e0Smrg
880659607e0Smrg  To use this mouse as the PS/2 device and the OS supports PS/2 mouse
881659607e0Smrg  initialization:
882659607e0Smrg
883659607e0Smrg          Option  "Protocol"  "GlidePointPS/2"
884659607e0Smrg
885659607e0Smrg
886659607e0Smrg
887659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
888659607e0Smrg  mouse initialization:
889659607e0Smrg
890659607e0Smrg          Option  "Protocol"  "PS/2"
891659607e0Smrg
892659607e0Smrg
893659607e0Smrg
894659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
895659607e0Smrg  PS/2 mouse detection:
896659607e0Smrg
897659607e0Smrg          Option  "Protocol"  "Auto"
898659607e0Smrg
899659607e0Smrg
900659607e0Smrg
901b73be646Smrg  6.8.  ASCII MieMouse (serial, PS/2)
902659607e0Smrg
903b73be646Smrg  This mouse appears to be OEM from Genius. Although its shape is quite
904b73be646Smrg  different, it works like Genius NetMouse Pro. This mouse has a "knob"
905b73be646Smrg  which is used like a wheel or a roller. The "knob" action is
906659607e0Smrg  recognized as the Z axis motion.
907659607e0Smrg
908b73be646Smrg  MieMouse supports the PnP COM device specification. When used as a
909659607e0Smrg  serial mouse, it is compatible with MS IntelliMouse.
910659607e0Smrg
911b73be646Smrg
912659607e0Smrg  To use this mouse as a serial device:
913659607e0Smrg
914659607e0Smrg          Option  "Protocol"  "Auto"
915659607e0Smrg
916659607e0Smrg
917659607e0Smrg  or:
918659607e0Smrg
919659607e0Smrg          Option  "Protocol"  "IntelliMouse"
920659607e0Smrg
921659607e0Smrg
922659607e0Smrg
923659607e0Smrg  To use this mouse as the PS/2 device and the OS supports PS/2 mouse
924659607e0Smrg  initialization:
925659607e0Smrg
926659607e0Smrg          Option  "Protocol"  "NetMousePS/2"
927659607e0Smrg
928659607e0Smrg
929659607e0Smrg
930659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
931659607e0Smrg  mouse initialization (the knob and the third button won't work):
932659607e0Smrg
933659607e0Smrg          Option  "Protocol"  "PS/2"
934659607e0Smrg
935659607e0Smrg
936659607e0Smrg
937659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
938659607e0Smrg  PS/2 mouse detection:
939659607e0Smrg
940659607e0Smrg          Option  "Protocol"  "Auto"
941659607e0Smrg
942659607e0Smrg
943659607e0Smrg
944b73be646Smrg  6.9.  Logitech MouseMan+ and FirstMouse+ (serial, PS/2)
945659607e0Smrg
946659607e0Smrg  MouseMan+ has two buttons on top, one side button and a roller.
947b73be646Smrg  FirstMouse+ has two buttons and a roller. The roller movement is
948b73be646Smrg  recognized as the Z axis motion. The roller also acts as the third
949b73be646Smrg  button. The side button is recognized as the fourth button.
950659607e0Smrg
951659607e0Smrg  MouseMan+ and FirstMouse+ support the PnP COM device specification.
952659607e0Smrg  They have MS IntelliMouse compatible mode when used as a serial mouse.
953659607e0Smrg
954659607e0Smrg  To use these mice as a serial device:
955659607e0Smrg
956659607e0Smrg          Option  "Protocol"  "Auto"
957659607e0Smrg
958659607e0Smrg
959659607e0Smrg  or:
960659607e0Smrg
961659607e0Smrg          Option  "Protocol"  "IntelliMouse"
962659607e0Smrg
963659607e0Smrg
964659607e0Smrg
965659607e0Smrg  To use this mouse as the PS/2 device and the OS supports PS/2 mouse
966659607e0Smrg  initialization:
967659607e0Smrg
968659607e0Smrg          Option  "Protocol"  "MouseManPlusPS/2"
969659607e0Smrg
970659607e0Smrg
971659607e0Smrg
972659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
973659607e0Smrg  mouse initialization (the wheel and the fourth button won't work):
974659607e0Smrg
975659607e0Smrg          Option  "Protocol"  "PS/2"
976659607e0Smrg
977659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
978659607e0Smrg  PS/2 mouse detection:
979659607e0Smrg
980659607e0Smrg          Option  "Protocol"  "Auto"
981659607e0Smrg
982659607e0Smrg
983659607e0Smrg
984b73be646Smrg  6.10.  IBM ScrollPoint (PS/2)
985659607e0Smrg
986659607e0Smrg  ScrollPoint has a "stick" in between the two buttons.  This "stick" is
987659607e0Smrg  the same as the stick-shaped pointing device often found on notebook
988659607e0Smrg  computers, on which you move the mouse cursor by pushing the stick.
989659607e0Smrg  The stick movement is recognized as the Z axis motion.  You can push
990b73be646Smrg  the stick to right and left, as well as forward and backward. Give
991659607e0Smrg  four numbers to ZAxisMapping option to map movement along all these
992659607e0Smrg  four directions to button actions.
993659607e0Smrg
994659607e0Smrg  This mouse is compatible with Logitech MouseMan+.  To use this mouse
995659607e0Smrg  as the PS/2 device and the OS supports PS/2 mouse initialization:
996659607e0Smrg
997659607e0Smrg          Option  "Protocol"  "MouseManPlusPS/2"
998659607e0Smrg
999659607e0Smrg
1000659607e0Smrg
1001659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
1002659607e0Smrg  mouse initialization (the stick won't work):
1003659607e0Smrg
1004659607e0Smrg          Option  "Protocol"  "PS/2"
1005659607e0Smrg
1006659607e0Smrg
1007659607e0Smrg
1008659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
1009659607e0Smrg  PS/2 mouse detection:
1010659607e0Smrg
1011659607e0Smrg          Option  "Protocol"  "Auto"
1012659607e0Smrg
1013659607e0Smrg
1014659607e0Smrg
1015b73be646Smrg  6.11.  8D ScrollMouse (serial, PS/2)
1016659607e0Smrg
1017659607e0Smrg  ScrollMouse, also known as GyroMouse, has a "stick" similar to IBM
1018659607e0Smrg  ScrollPoint.  The stick movement is recognized as the Z axis motion.
1019659607e0Smrg  You can push the stick to right and left, as well as forward and
1020b73be646Smrg  backward. Give four numbers to ZAxisMapping option to map movement
1021659607e0Smrg  along all these four directions to button actions.
1022659607e0Smrg
1023b73be646Smrg  ScrollMouse supports the PnP COM device specification. When used as a
1024659607e0Smrg  serial mouse, it is compatible with MS IntelliMouse.
1025659607e0Smrg
1026659607e0Smrg  To use this mouse as a serial device:
1027659607e0Smrg
1028659607e0Smrg          Option  "Protocol"  "Auto"
1029659607e0Smrg
1030659607e0Smrg
1031659607e0Smrg  or:
1032659607e0Smrg
1033659607e0Smrg          Option  "Protocol"  "IntelliMouse"
1034659607e0Smrg
1035659607e0Smrg
1036659607e0Smrg
1037659607e0Smrg  To use this mouse as the PS/2 device and the OS supports PS/2 mouse
1038659607e0Smrg  initialization:
1039659607e0Smrg
1040b73be646Smrg
1041659607e0Smrg          Option  "Protocol"  "IMPS/2"
1042659607e0Smrg
1043659607e0Smrg
1044659607e0Smrg
1045659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
1046659607e0Smrg  mouse initialization (the stick won't work):
1047659607e0Smrg
1048659607e0Smrg          Option  "Protocol"  "PS/2"
1049659607e0Smrg
1050659607e0Smrg
1051659607e0Smrg
1052659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
1053659607e0Smrg  PS/2 mouse detection:
1054b73be646Smrg
1055659607e0Smrg          Option  "Protocol"  "Auto"
1056659607e0Smrg
1057659607e0Smrg
1058659607e0Smrg
1059b73be646Smrg  6.12.  A4 Tech 4D mice (serial, PS/2, USB)
1060659607e0Smrg
1061659607e0Smrg  A4 Tech produces quit a number of mice with one or two wheels.  Their
1062659607e0Smrg  mice may have 2, 3, or 4 buttons.  The wheels movement is recognized
1063659607e0Smrg  as the Z axis motion.  Give four numbers to ZAxisMapping option to map
1064659607e0Smrg  movement of both wheels to button actions.
1065659607e0Smrg
1066b73be646Smrg  4D mice support the PnP COM device specification. When used as a
1067659607e0Smrg  serial mouse, it is compatible with MS IntelliMouse.
1068659607e0Smrg
1069659607e0Smrg  To use this mouse as a serial device:
1070659607e0Smrg
1071659607e0Smrg          Option  "Protocol"  "Auto"
1072659607e0Smrg
1073659607e0Smrg
1074659607e0Smrg  or:
1075659607e0Smrg
1076659607e0Smrg          Option  "Protocol"  "IntelliMouse"
1077659607e0Smrg
1078659607e0Smrg
1079659607e0Smrg
1080659607e0Smrg  To use this mouse as the PS/2 device and the OS supports PS/2 mouse
1081659607e0Smrg  initialization:
1082659607e0Smrg
1083659607e0Smrg          Option  "Protocol"  "IMPS/2"
1084659607e0Smrg
1085659607e0Smrg
1086659607e0Smrg
1087659607e0Smrg  To use this mouse as the PS/2 device but the OS does not support PS/2
1088659607e0Smrg  mouse initialization (the wheels won't work):
1089659607e0Smrg
1090659607e0Smrg          Option  "Protocol"  "PS/2"
1091659607e0Smrg
1092659607e0Smrg
1093659607e0Smrg
1094659607e0Smrg  To use this mouse as the PS/2 device and the OS supports automatic
1095659607e0Smrg  PS/2 mouse detection:
1096659607e0Smrg
1097659607e0Smrg          Option  "Protocol"  "Auto"
1098659607e0Smrg
1099659607e0Smrg
1100659607e0Smrg
1101659607e0Smrg  To use this mouse as the USB device and the OS supports the generic
1102659607e0Smrg  HID protocol:
1103659607e0Smrg
1104659607e0Smrg          Option  "Protocol"  "usb"
1105659607e0Smrg
1106659607e0Smrg  To use this mouse as the USB device and the OS supports automatic
1107659607e0Smrg  mouse detection:
1108659607e0Smrg
1109659607e0Smrg          Option  "Protocol"  "Auto"
1110659607e0Smrg
1111659607e0Smrg
1112659607e0Smrg
1113b73be646Smrg  7.  Configuration Examples
1114659607e0Smrg
1115659607e0Smrg
1116659607e0Smrg  This section shows some example InputDevice section for popular mice.
1117659607e0Smrg  All the examples assume that the mouse is connected to the PS/2 mouse
1118659607e0Smrg  port, and the OS supports the PS/2 mouse initialization.  It is also
1119659607e0Smrg  assumed that /dev/mouse is a link to the PS/2 mouse port.
1120659607e0Smrg
1121b73be646Smrg  Logitech MouseMan+ has 4 buttons and a wheel. The following example
1122659607e0Smrg  makes the wheel movement available as the button 5 and 6.
1123659607e0Smrg
1124659607e0Smrg
1125659607e0Smrg  Section "InputDevice"
1126659607e0Smrg          Identifier      "MouseMan+"
1127659607e0Smrg          Driver          "mouse"
1128659607e0Smrg          Option          "Device"    "/dev/mouse"
1129659607e0Smrg          Option          "Protocol"  "MouseManPlusPS/2"
1130659607e0Smrg          Option          "Buttons"   "6"
1131659607e0Smrg          Option          "ZAxisMapping"      "5 6"
1132659607e0Smrg  EndSection
1133659607e0Smrg
1134659607e0Smrg
1135659607e0Smrg
1136659607e0Smrg  You can change button number assignment using the xmodmap command
1137659607e0Smrg  AFTER you start the X server with the above configuration.  You may
1138659607e0Smrg  not like to use the wheel as the button 2 and rather want the side
1139b73be646Smrg  button (button 4) act like the button 2. You may also want to map the
1140659607e0Smrg  wheel movement to the button 4 and 5.  This can be done by the
1141659607e0Smrg  following command:
1142659607e0Smrg
1143659607e0Smrg
1144659607e0Smrg          xmodmap -e "pointer = 1 6 3 2 4 5"
1145659607e0Smrg
1146659607e0Smrg
1147659607e0Smrg
1148659607e0Smrg  After this command is run, the correspondence between the buttons and
1149659607e0Smrg  button numbers will be as shown in the following table.
1150659607e0Smrg
1151659607e0Smrg
1152659607e0Smrg  Physical Buttons        Reported as:
1153659607e0Smrg  ------------------------------------
1154659607e0Smrg  1 Left Button             Button 1
1155659607e0Smrg  2 Wheel Button            Button 6
1156659607e0Smrg  3 Right Button            Button 3
1157659607e0Smrg  4 Side Button             Button 2
1158659607e0Smrg  5 Wheel Negative Move     Button 4
1159659607e0Smrg  6 Wheel Positive Move     Button 5
1160659607e0Smrg
1161b73be646Smrg
1162b73be646Smrg
1163659607e0Smrg  Starting in the Xorg 6.9 release, you can also achieve this in your
1164b73be646Smrg  configuration file by adding this to the "InputDevice" section in
1165659607e0Smrg  xorg.conf:
1166659607e0Smrg
1167b73be646Smrg          Option "ButtonMapping" "1 6 3 2 4 5"
1168b73be646Smrg
1169b73be646Smrg
1170659607e0Smrg
1171659607e0Smrg  For the MS IntelliMouse Explorer which as a wheel and 5 buttons, you
1172659607e0Smrg  may have the following InputDevice section.
1173659607e0Smrg
1174659607e0Smrg
1175659607e0Smrg  Section "InputDevice"
1176659607e0Smrg          Identifier      "IntelliMouse Explorer"
1177659607e0Smrg          Driver          "mouse"
1178659607e0Smrg          Option          "Device"    "/dev/mouse"
1179659607e0Smrg          Option          "Protocol"  "ExplorerPS/2"
1180659607e0Smrg          Option          "Buttons"   "7"
1181659607e0Smrg          Option          "ZAxisMapping"      "6 7"
1182659607e0Smrg  EndSection
1183659607e0Smrg
1184659607e0Smrg
1185659607e0Smrg
1186659607e0Smrg  The IntelliMouse Explorer has 5 buttons, thus, you should give "7" to
1187659607e0Smrg  the Buttons option if you want to map the wheel movement to buttons (6
1188659607e0Smrg  and 7).  With this configuration, the correspondence between the
1189659607e0Smrg  buttons and button numbers will be as follows:
1190659607e0Smrg
1191659607e0Smrg
1192659607e0Smrg  Physical Buttons        Reported as:
1193659607e0Smrg  ------------------------------------
1194659607e0Smrg  1 Left Button             Button 1
1195659607e0Smrg  2 Wheel Button            Button 2
1196659607e0Smrg  3 Right Button            Button 3
1197659607e0Smrg  4 Side Button 1           Button 4
1198659607e0Smrg  5 Side Button 2           Button 5
1199659607e0Smrg  6 Wheel Negative Move     Button 6
1200659607e0Smrg  7 Wheel Positive Move     Button 7
1201659607e0Smrg
1202659607e0Smrg
1203659607e0Smrg
1204659607e0Smrg  You can change button number assignment using xmodmap AFTER you
1205659607e0Smrg  started the X server with the above configuration.
1206659607e0Smrg
1207659607e0Smrg
1208659607e0Smrg          xmodmap -e "pointer = 1 2 3 4 7 5 6"
1209659607e0Smrg
1210659607e0Smrg
1211659607e0Smrg
1212659607e0Smrg  The above command will moves the side button 2 to the button 7 and
1213b73be646Smrg  make the wheel movement reported as the button 5 and 6. See the table
1214659607e0Smrg  below.
1215659607e0Smrg
1216659607e0Smrg
1217659607e0Smrg  Physical Buttons        Reported as:
1218659607e0Smrg  ------------------------------------
1219659607e0Smrg  1 Left Button             Button 1
1220659607e0Smrg  2 Wheel Button            Button 2
1221659607e0Smrg  3 Right Button            Button 3
1222659607e0Smrg  4 Side Button 1           Button 4
1223659607e0Smrg  5 Side Button 2           Button 7
1224659607e0Smrg  6 Wheel Negative Move     Button 5
1225659607e0Smrg  7 Wheel Positive Move     Button 6
1226659607e0Smrg
1227659607e0Smrg
1228659607e0Smrg
1229659607e0Smrg  For the A4 Tech WinEasy mouse which has two wheels and 3 buttons, you
1230659607e0Smrg  may have the following InputDevice section.
1231659607e0Smrg
1232659607e0Smrg
1233b73be646Smrg
1234659607e0Smrg  Section "InputDevice"
1235659607e0Smrg          Identifier      "WinEasy"
1236659607e0Smrg          Driver          "mouse"
1237659607e0Smrg          Option          "Device"    "/dev/mouse"
1238659607e0Smrg          Option          "Protocol"  "IMPS/2"
1239659607e0Smrg          Option          "Buttons"   "7"
1240659607e0Smrg          Option          "ZAxisMapping"      "4 5 6 7"
1241659607e0Smrg  EndSection
1242659607e0Smrg
1243659607e0Smrg
1244659607e0Smrg
1245b73be646Smrg  The movement of the first wheel is mapped to the button 4 and 5. The
1246659607e0Smrg  second wheel's movement will be reported as the buttons 6 and 7.
1247659607e0Smrg
1248659607e0Smrg  The Kensington Expert mouse is really a trackball. It has 4 buttons
1249659607e0Smrg  arranged in a rectangle around the ball.
1250659607e0Smrg
1251b73be646Smrg
1252659607e0Smrg  Section "InputDevice"
1253659607e0Smrg          Identifier  "DLB"
1254659607e0Smrg          Driver      "mouse"
1255659607e0Smrg          Option      "Protocol" "ThinkingMousePS/2"
1256659607e0Smrg          Option      "Buttons" "3"
1257659607e0Smrg          Option      "Emulate3Buttons"
1258659607e0Smrg          Option      "Device" "/dev/mouse"
1259659607e0Smrg          Option      "DragLockButtons" "2 1 4 3"
1260659607e0Smrg  EndSection
1261659607e0Smrg
1262659607e0Smrg
1263659607e0Smrg  In this example, button 2 is a drag lock button for button number 1,
1264659607e0Smrg  and button 4 is a drag lock button for button 3.  Since button 2 is
1265659607e0Smrg  above button 1 and button 4 is above button 3 in the layout of this
1266659607e0Smrg  trackball, this is reasonable.
1267659607e0Smrg
1268659607e0Smrg  Because button 2 is being used as a drag lock, it can not be used as
1269659607e0Smrg  an ordinary button. However, it can be activated by using the
1270659607e0Smrg  "Emulate3Buttons" feature. However, some people my be unable to press
1271659607e0Smrg  two buttons at the same time. They may prefer the following
1272659607e0Smrg  InputDevice section which defines button 4 as a master drag lock
1273659607e0Smrg  button, and leaves button 2 free for ordinary use.
1274659607e0Smrg
1275659607e0Smrg  Section "InputDevice"
1276659607e0Smrg          Identifier  "MasterDLB"
1277659607e0Smrg          Driver      "mouse"
1278659607e0Smrg          Option      "Protocol" "ThinkingMousePS/2"
1279659607e0Smrg          Option      "Buttons" "3"
1280659607e0Smrg          Option      "Device" "/dev/mouse"
1281659607e0Smrg          Option      "DragLockButtons" "4"
1282659607e0Smrg  EndSection
1283659607e0Smrg
1284659607e0Smrg
1285659607e0Smrg
1286