Home | History | Annotate | Line # | Download | only in dist
README revision 1.1
      1   Mouse Support in X11R6.8
      2   Kazutaka Yokota
      3   17 December 2002
      4   ____________________________________________________________
      5 
      6   Table of Contents
      7 
      8 
      9   1. Introduction
     10   2. Supported Hardware
     11   3. OS Support for Mice
     12      3.1 Summary of Supported Mouse Protocol Types
     13      3.2 BSD/OS
     14      3.3 FreeBSD
     15      3.4 FreeBSD(98)
     16      3.5 Interactive Unix
     17      3.6 Linux
     18      3.7 Linux/98
     19      3.8 LynxOS
     20      3.9 NetBSD
     21      3.10 NetBSD/pc98
     22      3.11 OpenBSD
     23      3.12 OS/2
     24      3.13 SCO
     25      3.14 Solaris
     26      3.15 SVR4
     27      3.16 PANIX
     28 
     29   4. Configuring Your Mouse
     30   5. xorg.conf Options
     31      5.1 Buttons
     32      5.2 ZAxisMappping
     33      5.3 Resolution
     34      5.4 Drag Lock Buttons
     35 
     36   6. Mouse Gallery
     37      6.1 MS IntelliMouse  (serial, PS/2)
     38      6.2 MS IntelliMouse Explorer (PS/2, USB)
     39      6.3 Kensington Thinking Mouse and Kensington Expert Mouse (serial, PS/2)
     40      6.4 Genius NetScroll (PS/2)
     41      6.5 Genius NetMouse and NetMouse Pro (serial, PS/2)
     42      6.6 Genius NetScroll Optical (PS/2, USB)
     43      6.7 ALPS GlidePoint (serial, PS/2)
     44      6.8 ASCII MieMouse (serial, PS/2)
     45      6.9 Logitech MouseMan+ and FirstMouse+ (serial, PS/2)
     46      6.10 IBM ScrollPoint (PS/2)
     47      6.11 8D ScrollMouse (serial, PS/2)
     48      6.12 A4 Tech 4D mice (serial, PS/2, USB)
     49 
     50   7. Configuration Examples
     51 
     52 
     53   ______________________________________________________________________
     54 
     55   [1m1.  Introduction[0m
     56 
     57 
     58   This document describes mouse support in X.org Foundation's Xorg
     59   server.
     60 
     61   Mouse configuration has often been mysterious task for novice users.
     62   However, once you learn several basics, it is straightforward to write
     63   the mouse "InputDevice" section in the xorg.conf file by hand.
     64 
     65 
     66 
     67   [1m2.  Supported Hardware[0m
     68 
     69 
     70   The X.org Foundation X server supports four classes of mice: serial,
     71   bus and PS/2 mice, and additional mouse types supported by
     72   specific operating systems, such as USB mice.
     73 
     74 
     75      [1mSerial mouse[0m
     76         The serial mouse has been the most popular pointing device for
     77         PCs.  There have been numerous serial mouse models from a number
     78         of manufactures.  Despite the wide range of variations, there
     79         have been relatively few protocols (data format) with which the
     80         serial mouse talks to the host computer.
     81 
     82         The modern serial mouse conforms to the PnP COM device
     83         specification so that the host computer can automatically detect
     84         the mouse and load an appropriate driver.  The X server supports
     85         this specification and can detect popular PnP serial mouse
     86         models on most platforms.
     87 
     88 
     89      [1mBus mouse[0m
     90         The bus mouse connects to a dedicated interface card in an
     91         expansion slot.  Some video cards, notably those from ATI, and
     92         integrated I/O cards may also have a bus mouse connector.  Some
     93         bus mice are known as `InPort mouse'.
     94 
     95         Note that some mouse manufactures have sold a package including
     96         a serial mouse and a serial interface card.  Don't confuse this
     97         type of products with the genuine bus mouse.
     98 
     99 
    100      [1mPS/2 mouse[0m
    101         They are sometimes called `Mouse-port mouse'.  The PS/2 mouse is
    102         becoming increasingly common and popular.
    103 
    104         The PS/2 mouse is an intelligent device and may have more than
    105         three buttons and a wheel or a roller.  The PS/2 mouse is
    106         usually compatible with the original PS/2 mouse from IBM
    107         immediately after power up.  The PS/2 mouse with additional
    108         features requires a specialized initialization procedure to
    109         enable these features.  Without proper initialization, it
    110         behaves as though it were an ordinary two or three button mouse.
    111 
    112 
    113      [1mUSB mouse[0m
    114         USB (Universal Serial Bus) ports are present on most modern
    115         computers. Several devices can be plugged into this bus,
    116         including mice and keyboards.
    117 
    118         The server includes support for USB mice on some systems.
    119 
    120   Many mice nowadays can be used both as a serial mouse and as a PS/2
    121   mouse.  They has a logic to distinguish which interface it is
    122   connected to.  However, the mouse which is not marketed as compatible
    123   with both serial and PS/2 mouse interface lacks this logic and cannot
    124   be used in such a way, even if you can find an appropriate adapter
    125   with which you can connect the PS/2 mouse to a serial port or visa
    126   versa.
    127 
    128   X11R6.8 supports the mouse with a wheel, a roller or a knob.  Its
    129   action is detected as the Z (third) axis motion of the mouse.  As the
    130   X server or clients normally do not use the Z axis movement of the
    131   pointing device, a configuration option, "ZAxisMapping", is provided
    132   to assign the Z axis movement to another axis or a pair of buttons
    133   (see below).
    134   [1m3.  OS Support for Mice[0m
    135 
    136 
    137 
    138   [1m3.1.  Summary of Supported Mouse Protocol Types[0m
    139 
    140 
    141                                   Protocol Types
    142                   serial     PnP     BusMouse    PS/2   Extended PS/2
    143   OS platforms   protocols  serial   protocol  protocol  protocols
    144                             "Auto"  "BusMouse"  "PS/2"   "xxxPS/2"    USB
    145   -------------------------------------------------------------------------
    146   BSD/OS            Ok        ?         ?         ?         ?          ?
    147   FreeBSD           Ok        Ok        Ok        Ok        SP*1       SP*1
    148   FreeBSD(98)       Ok        ?         Ok        NA        NA         ?
    149   Interactive Unix  Ok        NA        ?*1       ?*1       NA         ?
    150   Linux             Ok        Ok        Ok        Ok        Ok         ?
    151   Linux/98          Ok        ?         Ok        NA        NA         ?
    152   LynxOS            Ok        NA        Ok        Ok        NA         ?
    153   NetBSD            Ok        Ok        Ok        SP*1      SP*1       SP*1
    154   NetBSD/pc98       Ok        ?         Ok        NA        NA         NA
    155   OpenBSD           Ok        Ok        Ok        Ok*1      Ok*1       Ok*1
    156   OS/2              SP*2      SP*2      SP*2      SP*2      SP*2       ?
    157   SCO               Ok        ?         SP*1      SP*1      NA         ?
    158   Solaris 2.x       Ok        NA*1      ?*1       Ok        Ok         SP*1
    159   SVR4              Ok        NA*1      SP*1      SP*1      NA         ?
    160   PANIX             Ok        ?         SP*1      SP*1      NA         ?
    161 
    162   Ok: support is available,  NA: not available, ?: untested or unknown.
    163   SP: support is available in a different form
    164 
    165   *1 Refer to the following sections for details.
    166   *2 X11R6.8/OS2 will support any type of mouse that the OS supports,
    167      whether it is serial, bus mouse, or PnP type.
    168 
    169 
    170 
    171   [1m3.2.  BSD/OS[0m
    172 
    173   No testing has been done with BSD/OS.
    174 
    175 
    176   [1m3.3.  FreeBSD[0m
    177 
    178   FreeBSD supports the "SysMouse" protocol which must be specified when
    179   the moused daemon is running in versions 2.2.1 or later.
    180 
    181   When running the mouseddaemon, you must always specify the
    182   /dev/sysmouse device and the "SysMouse" protocol to the X server,
    183   regardless of the actual type of your mouse.
    184 
    185   FreeBSD versions 2.2.6 or later include the kernel-level support for
    186   extended PS/2 mouse protocols and there is no need to specify the
    187   exact protocol name to the X server.  Instead specify the "PS/2" or
    188   "Auto" protocol and the X server will automatically make use of the
    189   kernel-level support.
    190 
    191   In fact, "Auto" protocol support is really efficient in these
    192   versions.  You may always specify "Auto" to any mouse, serial, bus or
    193   PS/2, unless the mouse is an old serial model which doesn't support
    194   PnP.
    195 
    196   FreeBSD versions 2.2.5 or earlier do not support extended PS/2 mouse
    197   protocols ("xxxPS/2").  Always specify the "PS/2" protocol for any
    198   PS/2 mouse in these versions regardless of the brand of the mouse.
    199   FreeBSD versions 3.1 or later have support for USB mice.  Specify the
    200   "Auto" protocol for the /dev/ums0 device.  (If the moused daemon is
    201   running for the USB mouse, you must use /dev/sysmouse instead of
    202   /dev/ums0 as explained above.) See the [4mums(4)[24m manual page for details.
    203 
    204 
    205   [1m3.4.  FreeBSD(98)[0m
    206 
    207   The PS/2 mouse is not supported.
    208 
    209 
    210   [1m3.5.  Interactive Unix[0m
    211 
    212   The PnP serial mouse support (the "Auto" protocol) is not supported
    213   for the moment.
    214 
    215   The bus mouse and PS/2 mouse should be supported by using the
    216   appropriate device drivers.  Use /dev/mouse for the "BusMouse"
    217   protocol and /dev/kdmouse for the "PS/2" protocol.  These protocols
    218   are untested but may work.  Please send success/failure reports to
    219   <michael.rohleder (a] stadt-frankfurt.de>.
    220 
    221 
    222   [1m3.6.  Linux[0m
    223 
    224   All protocol types should work.
    225 
    226 
    227   [1m3.7.  Linux/98[0m
    228 
    229   The PS/2 mouse is not supported.
    230 
    231 
    232   [1m3.8.  LynxOS[0m
    233 
    234   The PnP serial mouse support (the "Auto" protocol) is disabled in
    235   LynxOS, because of limited TTY device driver functionality.
    236 
    237 
    238   [1m3.9.  NetBSD[0m
    239 
    240   NetBSD 1.3.x and former does not support extended PS/2 mouse protocols
    241   ("xxxPS/2").  The PS/2 mouse device driver /dev/pms emulates the bus
    242   mouse.  Therefore, you should always specify the "BusMouse" protocol
    243   for any PS/2 mouse regardless of the brand of the mouse.
    244 
    245   The "wsmouse" protocol introduced in NetBSD 1.4 along with the wscons
    246   console driver is supported. You need to run binaries compiled on
    247   NetBSD 1.4 to have support for it though. Use "/dev/wsmouse0" for the
    248   device. Refer to the [4mwsmouse(4)[24m manual page for kernel configuration
    249   informations.
    250 
    251   This driver also provides support for USB mice. See the [4mums(4)[24m manual
    252   page for details.
    253 
    254 
    255   [1m3.10.  NetBSD/pc98[0m
    256 
    257   The PS/2 mouse is not supported.
    258 
    259 
    260   [1m3.11.  OpenBSD[0m
    261 
    262   The raw PS/2 mouse device driver /dev/psm0 uses the raw PS/2 mouse
    263   protocol.
    264 
    265   OpenBSD 2.2 and earlier does not support extended PS/2 mouse protocols
    266   ("xxxPS/2") .  Therefore, you should specify the "PS/2" protocol for
    267   any PS/2 mouse regardless of the brand of the mouse.
    268 
    269   OpenBSD 2.3 and later support all extended PS/2 mouse protocols.  You
    270   can select the "Auto" protocol for PnP PS/2 mice or any specific
    271   extended ("xxxPS/2") protocol for non PnP mice.
    272 
    273   There is also a cooked PS/2 mouse device driver /dev/pms0 which
    274   emulates the bus mouse.  Specify the "BusMouse" protocol for any PS/2
    275   mouse regardless of the brand of the mouse when using this device.
    276 
    277   XFree86 3.3.6 support USB mice on OpenBSD 2.6 and later though the
    278   generic Human Interface Device (hid) /dev/uhid*. Select the "usb"
    279   protocol and the /dev/uhid* instance corresponding to your mouse as
    280   the device name.
    281 
    282 
    283   [1m3.12.  OS/2[0m
    284 
    285   X11R6.8/OS2 always uses the native mouse driver of the operating
    286   system and will support any type of pointer that the OS supports,
    287   whether it is serial, bus mouse, or PnP type.  If the mouse works
    288   under Presentation Manager, it will also work under X11R6.8/OS2.
    289 
    290   Always specify "OSMouse" as the protocol type.
    291 
    292 
    293   [1m3.13.  SCO[0m
    294 
    295   The bus and PS/2 mouse are supported with the "OSMouse" protocol type.
    296 
    297   The "OSMouse" may also be used with the serial mouse.
    298 
    299 
    300   [1m3.14.  Solaris[0m
    301 
    302   Testing has been done with Solaris 2.5.1, 2.6, 7, 8, 9 and 10.
    303 
    304   On Solaris 10 1/06 and later versions with "virtual mouse" support,
    305   all PS/2 and USB mice connected to the system can be accessed via 
    306   the /dev/mouse device using the VUID protocol, including USB mice 
    307   plugged in after the X server is started.   On older releases or
    308   to address mice individually, specific devices and protocols may 
    309   be used.
    310 
    311   Logitech and Microsoft bus mice have not been tested, but might work
    312   with the /dev/logi and /dev/msm devices.
    313 
    314   Standard 2 and 3 button PS/2 mice work with the "PS/2" protocol type
    315   and the /dev/kdmouse device.  USB mice work with the "VUID" protocol
    316   type and the /dev/mouse device.  The PnP serial mouse support via the
    317   "Auto" protocol has been tested and does not work.  The "Auto"
    318   protocol can however detect PS/2 and USB mice correctly.
    319 
    320   Additional USB mice can be connected using the "VUID" protocol type
    321   and the appropriate "/dev/usb/hid" device with the Option
    322   "StreamsModule" "usbms" line included in the associated "InputDevice"
    323   section.
    324 
    325 
    326   [1m3.15.  SVR4[0m
    327 
    328   The bus and PS/2 mouse may be supported with the "Xqueue" protocol
    329   type.
    330 
    331   The "Xqueue" may also be used with the serial mouse.
    332 
    333   The PnP serial mouse support (the "Auto" protocol) is not tested.
    334 
    335 
    336   [1m3.16.  PANIX[0m
    337 
    338   The PC/AT version of PANIX supports the bus and PS/2 mouse with the
    339   "Xqueue" protocol type.  The PC-98 version of PANIX supports the bus
    340   mouse with the "Xqueue" protocol type.
    341 
    342 
    343   [1m4.  Configuring Your Mouse[0m
    344 
    345 
    346   Before using the xorgconfig program to set up mouse configuration, you
    347   must identify the interface type, the device name and the protocol
    348   type of your mouse.  Blindly trying every possible combination of
    349   mouse settings will lead you nowhere.
    350 
    351   The first thing you need to know is the interface type of the mouse
    352   you are going to use.  It can be determined by looking at the
    353   connector of the mouse.  The serial mouse has a D-Sub female 9- or
    354   25-pin connector.  The bus mice have either a D-Sub male 9-pin
    355   connector or a round DIN 9-pin connector.  The PS/2 mouse is equipped
    356   with a small, round DIN 6-pin connector.  USB mice have a thin 
    357   rectangular connector.  Some mice come with adapters with which the 
    358   connector can be converted to another.  If you are to use such an 
    359   adapter, remember that the connector at the very end of the mouse/adapter 
    360   pair is what matters.
    361 
    362   The next thing to decide is a device node to use for the given
    363   interface.  For the bus and PS/2 mice, there is little choice; your OS
    364   most possibly offers just one device node each for the bus mouse and
    365   PS/2 mouse.  There may be more than one serial port to which the
    366   serial mouse can be attached.
    367 
    368   The next step is to guess the appropriate protocol type for the mouse.
    369   The X server may be able to select a protocol type for the given mouse
    370   automatically in some cases.  Otherwise, the user has to choose one
    371   manually.  Follow the guidelines below.
    372 
    373 
    374      [1mBus mouse[0m
    375         The bus and InPort mice always use "BusMouse" protocol
    376         regardless of the brand of the mouse.
    377 
    378         Some OSs may allow you to specify "Auto" as the protocol type
    379         for the bus mouse.
    380 
    381 
    382      [1mPS/2 mouse[0m
    383         The "PS/2" protocol should always be tried first for the PS/2
    384         mouse regardless of the brand of the mouse.  Any PS/2 mouse
    385         should work with this protocol type, although wheels and other
    386         additional features are unavailable in the X server.
    387 
    388         After verifying the mouse works with this protocol, you may
    389         choose to specify one of "xxxPS/2" protocols so that extra
    390         features are made available in the X server.  However, support
    391         for these PS/2 mice assumes certain behavior of the underlying
    392         OS and may not always work as expected.  Support for some PS/2
    393         mouse models may be disabled all together for some OS platforms
    394         for this reason.
    395 
    396         Some OSs may allow you to specify "Auto" as the protocol type
    397         for the PS/2 mouse and the X server will automatically adjust
    398         itself.
    399 
    400 
    401      [1mSerial mouse[0m
    402         The server supports a wide range of mice, both old and new.  If
    403         your mouse is of a relatively new model, it may conform to the
    404         PnP COM device specification and the X server may be able to
    405         detect an appropriate protocol type for the mouse automatically.
    406 
    407         Specify "Auto" as the protocol type and start the X server.  If
    408         the mouse is not a PnP mouse, or the X server cannot determine a
    409         suitable protocol type, the server will print the following
    410         error message and abort.
    411 
    412 
    413         <mousename>: cannot determine the mouse protocol
    414 
    415 
    416 
    417      If the X server generates the above error message, you need to
    418      manually specify a protocol type for your mouse.  Choose one from
    419      the following list:
    420 
    421 
    422         +o  GlidePoint
    423 
    424         +o  IntelliMouse
    425 
    426         +o  Logitech
    427 
    428         +o  Microsoft
    429 
    430         +o  MMHittab
    431 
    432         +o  MMSeries
    433 
    434         +o  MouseMan
    435 
    436         +o  MouseSystems
    437 
    438         +o  ThinkingMouse
    439 
    440      When you choose, keep in mind the following rule of thumb:
    441 
    442 
    443         1. "Logitech" protocol is for old serial mouse models from
    444            Logitech.  Modern Logitech mice use either "MouseMan" or
    445            "Microsoft" protocol.
    446 
    447         2. Most 2-button serial mice support the "Microsoft" protocol.
    448 
    449         3. 3-button serial mice may work with the "Mousesystems"
    450            protocol. If it doesn't, it may work instead with the
    451            "Microsoft" protocol although the third (middle) button won't
    452            function.  3-button serial mice may also work with the
    453            "Mouseman" protocol under which the third button may function
    454            as expected.
    455 
    456         4. 3-button serial mice may have a small switch at the bottom of
    457            the mouse to choose between ``MS'' and ``PC'', or ``2'' and
    458            ``3''.  ``MS'' or ``2'' usually mean the "Microsoft"
    459            protocol.  ``PC'' or ``3'' will choose the "MouseSystems"
    460            protocol.
    461 
    462         5. If the serial mouse has a roller or a wheel, it may be
    463            compatible with the "IntelliMouse" protocol.
    464 
    465         6. If the serial mouse has a roller or a wheel and it doesn't
    466            work with the "IntelliMouse" protocol, you have to use it as
    467            a regular 2- or 3-button serial mouse.
    468 
    469      If the "Auto" protocol is specified and the mouse seems to be working,
    470      but you find that not all features of the mouse are available, that
    471      is because the X server does not have native support for that model
    472      of mouse and is using a ``compatible'' protocol according to PnP
    473      information.
    474 
    475      If you suspect this is the case with your mouse, please enter a
    476      bug report at http://bugzilla.freedesktop.org, using the xorg product.
    477 
    478 
    479      [1mUSB mouse[0m
    480         If your mouse is connected to the USB port, it can either be
    481         supported by the "Auto" protocol, or by an OS-specific protocol
    482         (see below), or as a generic Human Interface Device by the "usb"
    483         protocol.
    484 
    485 
    486      [1mStandardized protocols[0m
    487         Mouse device drivers in your OS may use the standardized
    488         protocol regardless of the model or the class of the mouse.  For
    489         example, SVR4 systems may support "Xqueue" protocol.  In FreeBSD
    490         the system mouse device /dev/sysmouse uses the "SysMouse"
    491         protocol.  Please refer to the OS support section of this file
    492         for more information.
    493 
    494 
    495 
    496   [1m5.  xorg.conf Options[0m
    497 
    498 
    499   The old Pointer section has been replaced by a more general
    500   InputDevice section.  The following is a minimal example of an
    501   InputDevice section for a mouse:
    502 
    503 
    504   ______________________________________________________________________
    505   Section "InputDevice"
    506           Identifier      "Mouse 1"
    507           Driver          "mouse"
    508           Option          "Device"    "/dev/mouse"
    509           Option          "Protocol"  "Auto"
    510   EndSection
    511   ______________________________________________________________________
    512 
    513 
    514 
    515   The mouse driver supports the following config file options:
    516 
    517 
    518   [1m5.1.  Buttons[0m
    519 
    520   This option tells the X server the number of buttons on the mouse.
    521   Currently there is no reliable way to automatically detect the correct
    522   number.  This option is the only means for the X server to obtain it.
    523   The default value is three.
    524 
    525   Note that if you intend to assign Z axis movement to button events
    526   using the ZAxisMapping option below, you need to take account of those
    527   buttons into N too.
    528 
    529 
    530           Option  "Buttons"   "N"
    531 
    532 
    533 
    534   [1m5.2.  ZAxisMapping[0m
    535 
    536   This option maps the Z axis (wheel) motion to buttons or to another
    537   axis.
    538           Option  "ZAxisMapping"      "X"
    539           Option  "ZAxisMapping"      "Y"
    540           Option  "ZAxisMapping"      "N1 N2"
    541           Option  "ZAxisMapping"      "N1 N2 N3 N4"
    542 
    543 
    544 
    545   The first example will map the Z axis motion to the X axis motion.
    546   Whenever the user moves the wheel/roller, its movement is reported as
    547   the X axis motion.  When the wheel/roller stays still, the real X axis
    548   motion is reported as is.  The third example will map negative Z axis
    549   motion to the button N1 and positive Z axis motion to the button N2.
    550   If this option is used and the buttons N1 or N2 actually exists in the
    551   mouse, their actions won't be detected by the X server.
    552 
    553   The last example is useful for the mouse with two wheels of which the
    554   second wheel is used to generate horizontal scroll action, and the
    555   mouse which has a knob or a stick which can detect the horizontal
    556   force applied by the user.  The motion of the second wheel will be
    557   mapped to the buttons N3, for the negative direction, and N4, for the
    558   positive direction.  If the buttons N3 and N4 actually exist in this
    559   mouse, their actions won't be detected by the X server.
    560 
    561   NOTE #1: horizontal movement may not always be detected by the current
    562   version of the X11R6.8 X servers, because there appears to be no
    563   accepted standard as to how the horizontal direction is encoded in
    564   mouse data.
    565 
    566   NOTE #2: Some mice think left is the negative horizontal direction,
    567   others may think otherwise.  Moreover, there are some mice whose two
    568   wheels are both mounted vertically, and the direction of the second
    569   vertical wheel does not match the first one's.
    570 
    571   You need to edit the xorg.conf file by hand to change this option if
    572   the default value of "4 5 6 7" does not match the needs of your
    573   configuration.
    574 
    575 
    576   [1m5.3.  Resolution[0m
    577 
    578   The following option will set the mouse device resolution to N counts
    579   per inch, if possible:
    580 
    581 
    582           Option  "Resolution"        "N"
    583 
    584 
    585 
    586   Not all mice and OSs can support this option.
    587 
    588 
    589   [1m5.4.  Drag Lock Buttons[0m
    590 
    591   Some people find it difficult or inconvenient to hold a trackball
    592   button down, while at the same time moving the ball. Drag lock buttons
    593   simulate the holding down of another button. When a drag lock button
    594   is  first pressed, its target buttons is "locked" down until the
    595   second time the lock button is released, or until the button itself is
    596   pressed and released. This allows the starting of a drag, the movement
    597   of the trackball, and the ending of the drag to be separate
    598   operations.
    599 
    600 
    601           Option  "DragLockButtons"   "W X Y Z"
    602 
    603 
    604   This option consists of pairs of buttons. Each lock button number is
    605   followed by the number of the button that it locks. In the above,
    606   button number "W" is a drag lock button for button "X" and button
    607   number "Y" is a drag lock button for button "Z".
    608 
    609   It may not be desirable to use multiple buttons as drag locks.
    610   Instead, a "master drag lock button" may be defined. A master drag
    611   lock button acts as a "META" key. After a master lock button is
    612   released, the next button pressed is "locked" and not released until
    613   the second time the real button is released.
    614 
    615 
    616           Option  "DragLockButtons"   "M"
    617 
    618 
    619 
    620   Since button "M" is unpaired it is a master drag lock button.
    621 
    622 
    623   [1m6.  Mouse Gallery[0m
    624 
    625 
    626   In all of the examples below, it is assumed that /dev/mouse is a link
    627   to the appropriate serial port or PS/2 mouse device.
    628 
    629 
    630   [1m6.1.  MS IntelliMouse  (serial, PS/2)[0m
    631 
    632   This mouse has a wheel which also acts as the button 2 (middle
    633   button).  The wheel movement is recognized as the Z axis motion.  This
    634   behavior is not compatible with XFree86 versions prior to 3.3.2, but
    635   is more consistent with the support for other mice with wheels or
    636   rollers.  If you want to make the wheel behave like before, you can
    637   use the "ZAxisMapping" option as described above.
    638 
    639   IntelliMouse supports the PnP COM device specification.
    640 
    641   To use this mouse as a serial device:
    642 
    643           Option  "Protocol"  "Auto"
    644 
    645 
    646   or:
    647 
    648           Option  "Protocol"  "IntelliMouse"
    649 
    650 
    651 
    652   To use this mouse as the PS/2 device and the OS supports PS/2 mouse
    653   initialization:
    654 
    655           Option  "Protocol"  "IMPS/2"
    656 
    657 
    658 
    659   To use this mouse as the PS/2 device but the OS does not support PS/2
    660   mouse initialization (the wheel won't work in this case):
    661 
    662           Option  "Protocol"  "PS/2"
    663 
    664 
    665 
    666   To use this mouse as the PS/2 device and the OS supports automatic
    667   PS/2 mouse detection:
    668 
    669 
    670           Option  "Protocol"  "Auto"
    671 
    672 
    673 
    674   [1m6.2.  MS IntelliMouse Explorer (PS/2, USB)[0m
    675 
    676   This mouse has a wheel which also acts as the button 2 (middle
    677   button).  There are two side buttons; they are recognized as the
    678   buttons 4 and 5.  The wheel movement is recognized as the Z axis
    679   motion.
    680 
    681   To use this mouse as the PS/2 device and the OS supports PS/2 mouse
    682   initialization:
    683 
    684           Option  "Protocol"  "ExplorerPS/2"
    685 
    686 
    687 
    688   To use this mouse as the PS/2 device but the OS does not support PS/2
    689   mouse initialization (the wheel and the side buttons won't work in
    690   this case):
    691 
    692           Option  "Protocol"  "PS/2"
    693 
    694 
    695 
    696   To use this mouse as the PS/2 device and the OS supports automatic
    697   PS/2 mouse detection:
    698 
    699           Option  "Protocol"  "Auto"
    700 
    701 
    702 
    703   To use this mouse as the USB device and the OS supports the generic
    704   HID protocol:
    705 
    706           Option  "Protocol"  "usb"
    707 
    708 
    709 
    710   To use this mouse as the USB device and the OS supports automatic
    711   mouse detection:
    712 
    713           Option  "Protocol"  "Auto"
    714 
    715 
    716 
    717   [1m6.3.  Kensington Thinking Mouse and Kensington Expert Mouse (serial,[0m
    718   [1mPS/2)[0m
    719 
    720   These mice have four buttons.  The Kensington Expert Mouse is really a
    721   trackball.  Both Thinking mice  support the PnP COM device
    722   specification.
    723 
    724   To use this mouse as a serial device:
    725 
    726           Option  "Protocol"  "Auto"
    727 
    728 
    729   or:
    730 
    731           Option  "Protocol"  "ThinkingMouse"
    732 
    733 
    734   To use this mouse as the PS/2 device and the OS supports PS/2 mouse
    735   initialization:
    736 
    737           Option  "Protocol"  "ThinkingMousePS/2"
    738 
    739 
    740 
    741   To use this mouse as the PS/2 device but the OS does not support PS/2
    742   mouse initialization (the third and the fourth buttons act as though
    743   they were the first and the second buttons):
    744 
    745           Option  "Protocol"  "PS/2"
    746 
    747 
    748 
    749   To use this mouse as the PS/2 device and the OS supports automatic
    750   PS/2 mouse detection:
    751 
    752           Option  "Protocol"  "Auto"
    753 
    754 
    755 
    756   [1m6.4.  Genius NetScroll (PS/2)[0m
    757 
    758   This mouse has four buttons and a roller.  The roller movement is
    759   recognized as the Z axis motion.
    760 
    761   To use this mouse as the PS/2 device and the OS supports PS/2 mouse
    762   initialization:
    763 
    764           Option  "Protocol"  "NetScrollPS/2"
    765 
    766 
    767 
    768   To use this mouse as the PS/2 device but the OS does not support PS/2
    769   mouse initialization (the roller and the fourth button won't work):
    770 
    771           Option  "Protocol"  "PS/2"
    772 
    773 
    774 
    775   To use this mouse as the PS/2 device and the OS supports automatic
    776   PS/2 mouse detection:
    777 
    778           Option  "Protocol"  "Auto"
    779 
    780 
    781 
    782   [1m6.5.  Genius NetMouse and NetMouse Pro (serial, PS/2)[0m
    783 
    784   These mice have a "magic button" which is used like a wheel or a
    785   roller.  The "magic button" action is recognized as the Z axis motion.
    786   NetMouse Pro is identical to NetMouse except that it has the third
    787   button on the left hand side.
    788 
    789   NetMouse and NetMouse Pro support the PnP COM device specification.
    790   When used as a serial mouse, they are compatible with MS IntelliMouse.
    791 
    792   To use these mice as a serial device:
    793 
    794           Option  "Protocol"  "Auto"
    795 
    796 
    797 
    798   or:
    799 
    800           Option  "Protocol"  "IntelliMouse"
    801 
    802 
    803 
    804   To use this mouse as the PS/2 device and the OS supports PS/2 mouse
    805   initialization:
    806 
    807           Option  "Protocol"  "NetMousePS/2"
    808 
    809 
    810 
    811   To use this mouse as the PS/2 device but the OS does not support PS/2
    812   mouse initialization (the "magic button" and the third button won't
    813   work):
    814 
    815           Option  "Protocol"  "PS/2"
    816 
    817 
    818 
    819   To use this mouse as the PS/2 device and the OS supports automatic
    820   PS/2 mouse detection:
    821 
    822           Option  "Protocol"  "Auto"
    823 
    824 
    825 
    826   [1m6.6.  Genius NetScroll Optical (PS/2, USB)[0m
    827 
    828   This mouse has a wheel which also acts as the button 2 (middle
    829   button), and two side buttons which are recognized as the buttons 4
    830   and 5.  It is compatible with NetMouse and NetMouse Pro.
    831 
    832   To use this mouse as the PS/2 device and the OS supports PS/2 mouse
    833   initialization:
    834 
    835           Option  "Protocol"  "NetMousePS/2"
    836 
    837 
    838 
    839   To use this mouse as the PS/2 device but the OS does not support PS/2
    840   mouse initialization (the wheel and the side buttons won't work):
    841 
    842           Option  "Protocol"  "PS/2"
    843 
    844 
    845 
    846   To use this mouse as the PS/2 device and the OS supports automatic
    847   PS/2 mouse detection:
    848 
    849           Option  "Protocol"  "Auto"
    850 
    851 
    852 
    853   To use this mouse as the USB device and the OS supports the generic
    854   HID protocol:
    855 
    856           Option  "Protocol"  "usb"
    857 
    858 
    859 
    860   To use this mouse as the USB device and the OS supports automatic
    861   mouse detection:
    862 
    863           Option  "Protocol"  "Auto"
    864 
    865 
    866 
    867   [1m6.7.  ALPS GlidePoint (serial, PS/2)[0m
    868 
    869   The serial version of this pad device has been supported since XFree86
    870   3.2.  `Tapping' action is interpreted as the fourth button press.
    871   (IMHO, the fourth button of GlidePoint should always be mapped to the
    872   first button in order to make this pad behave like the other pad
    873   products.)
    874 
    875   To use this pad as a serial device:
    876 
    877           Option  "Protocol"  "GlidePoint"
    878 
    879 
    880 
    881   To use this mouse as the PS/2 device and the OS supports PS/2 mouse
    882   initialization:
    883 
    884           Option  "Protocol"  "GlidePointPS/2"
    885 
    886 
    887 
    888   To use this mouse as the PS/2 device but the OS does not support PS/2
    889   mouse initialization:
    890 
    891           Option  "Protocol"  "PS/2"
    892 
    893 
    894 
    895   To use this mouse as the PS/2 device and the OS supports automatic
    896   PS/2 mouse detection:
    897 
    898           Option  "Protocol"  "Auto"
    899 
    900 
    901 
    902   [1m6.8.  ASCII MieMouse (serial, PS/2)[0m
    903 
    904   This mouse appears to be OEM from Genius.  Although its shape is quite
    905   different, it works like Genius NetMouse Pro.  This mouse has a "knob"
    906   which is used like a wheel or a roller.  The "knob" action is
    907   recognized as the Z axis motion.
    908 
    909   MieMouse supports the PnP COM device specification.  When used as a
    910   serial mouse, it is compatible with MS IntelliMouse.
    911 
    912   To use this mouse as a serial device:
    913 
    914           Option  "Protocol"  "Auto"
    915 
    916 
    917   or:
    918 
    919           Option  "Protocol"  "IntelliMouse"
    920 
    921 
    922 
    923   To use this mouse as the PS/2 device and the OS supports PS/2 mouse
    924   initialization:
    925 
    926 
    927           Option  "Protocol"  "NetMousePS/2"
    928 
    929 
    930 
    931   To use this mouse as the PS/2 device but the OS does not support PS/2
    932   mouse initialization (the knob and the third button won't work):
    933 
    934           Option  "Protocol"  "PS/2"
    935 
    936 
    937 
    938   To use this mouse as the PS/2 device and the OS supports automatic
    939   PS/2 mouse detection:
    940 
    941           Option  "Protocol"  "Auto"
    942 
    943 
    944 
    945   [1m6.9.  Logitech MouseMan+ and FirstMouse+ (serial, PS/2)[0m
    946 
    947   MouseMan+ has two buttons on top, one side button and a roller.
    948   FirstMouse+ has two buttons and a roller.  The roller movement is
    949   recognized as the Z axis motion.  The roller also acts as the third
    950   button.  The side button is recognized as the fourth button.
    951 
    952   MouseMan+ and FirstMouse+ support the PnP COM device specification.
    953   They have MS IntelliMouse compatible mode when used as a serial mouse.
    954 
    955   To use these mice as a serial device:
    956 
    957           Option  "Protocol"  "Auto"
    958 
    959 
    960   or:
    961 
    962           Option  "Protocol"  "IntelliMouse"
    963 
    964 
    965 
    966   To use this mouse as the PS/2 device and the OS supports PS/2 mouse
    967   initialization:
    968 
    969           Option  "Protocol"  "MouseManPlusPS/2"
    970 
    971 
    972 
    973   To use this mouse as the PS/2 device but the OS does not support PS/2
    974   mouse initialization (the wheel and the fourth button won't work):
    975 
    976           Option  "Protocol"  "PS/2"
    977 
    978 
    979 
    980   To use this mouse as the PS/2 device and the OS supports automatic
    981   PS/2 mouse detection:
    982 
    983           Option  "Protocol"  "Auto"
    984 
    985 
    986 
    987   [1m6.10.  IBM ScrollPoint (PS/2)[0m
    988 
    989   ScrollPoint has a "stick" in between the two buttons.  This "stick" is
    990   the same as the stick-shaped pointing device often found on notebook
    991   computers, on which you move the mouse cursor by pushing the stick.
    992   The stick movement is recognized as the Z axis motion.  You can push
    993   the stick to right and left, as well as forward and backward.  Give
    994   four numbers to ZAxisMapping option to map movement along all these
    995   four directions to button actions.
    996 
    997   This mouse is compatible with Logitech MouseMan+.  To use this mouse
    998   as the PS/2 device and the OS supports PS/2 mouse initialization:
    999 
   1000           Option  "Protocol"  "MouseManPlusPS/2"
   1001 
   1002 
   1003 
   1004   To use this mouse as the PS/2 device but the OS does not support PS/2
   1005   mouse initialization (the stick won't work):
   1006 
   1007           Option  "Protocol"  "PS/2"
   1008 
   1009 
   1010 
   1011   To use this mouse as the PS/2 device and the OS supports automatic
   1012   PS/2 mouse detection:
   1013 
   1014           Option  "Protocol"  "Auto"
   1015 
   1016 
   1017 
   1018   [1m6.11.  8D ScrollMouse (serial, PS/2)[0m
   1019 
   1020   ScrollMouse, also known as GyroMouse, has a "stick" similar to IBM
   1021   ScrollPoint.  The stick movement is recognized as the Z axis motion.
   1022   You can push the stick to right and left, as well as forward and
   1023   backward.  Give four numbers to ZAxisMapping option to map movement
   1024   along all these four directions to button actions.
   1025 
   1026   ScrollMouse supports the PnP COM device specification.  When used as a
   1027   serial mouse, it is compatible with MS IntelliMouse.
   1028 
   1029   To use this mouse as a serial device:
   1030 
   1031           Option  "Protocol"  "Auto"
   1032 
   1033 
   1034   or:
   1035 
   1036           Option  "Protocol"  "IntelliMouse"
   1037 
   1038 
   1039 
   1040   To use this mouse as the PS/2 device and the OS supports PS/2 mouse
   1041   initialization:
   1042 
   1043           Option  "Protocol"  "IMPS/2"
   1044 
   1045 
   1046 
   1047   To use this mouse as the PS/2 device but the OS does not support PS/2
   1048   mouse initialization (the stick won't work):
   1049 
   1050           Option  "Protocol"  "PS/2"
   1051 
   1052 
   1053 
   1054   To use this mouse as the PS/2 device and the OS supports automatic
   1055   PS/2 mouse detection:
   1056           Option  "Protocol"  "Auto"
   1057 
   1058 
   1059 
   1060   [1m6.12.  A4 Tech 4D mice (serial, PS/2, USB)[0m
   1061 
   1062   A4 Tech produces quit a number of mice with one or two wheels.  Their
   1063   mice may have 2, 3, or 4 buttons.  The wheels movement is recognized
   1064   as the Z axis motion.  Give four numbers to ZAxisMapping option to map
   1065   movement of both wheels to button actions.
   1066 
   1067   4D mice support the PnP COM device specification.  When used as a
   1068   serial mouse, it is compatible with MS IntelliMouse.
   1069 
   1070   To use this mouse as a serial device:
   1071 
   1072           Option  "Protocol"  "Auto"
   1073 
   1074 
   1075   or:
   1076 
   1077           Option  "Protocol"  "IntelliMouse"
   1078 
   1079 
   1080 
   1081   To use this mouse as the PS/2 device and the OS supports PS/2 mouse
   1082   initialization:
   1083 
   1084           Option  "Protocol"  "IMPS/2"
   1085 
   1086 
   1087 
   1088   To use this mouse as the PS/2 device but the OS does not support PS/2
   1089   mouse initialization (the wheels won't work):
   1090 
   1091           Option  "Protocol"  "PS/2"
   1092 
   1093 
   1094 
   1095   To use this mouse as the PS/2 device and the OS supports automatic
   1096   PS/2 mouse detection:
   1097 
   1098           Option  "Protocol"  "Auto"
   1099 
   1100 
   1101 
   1102   To use this mouse as the USB device and the OS supports the generic
   1103   HID protocol:
   1104 
   1105           Option  "Protocol"  "usb"
   1106 
   1107 
   1108 
   1109   To use this mouse as the USB device and the OS supports automatic
   1110   mouse detection:
   1111 
   1112           Option  "Protocol"  "Auto"
   1113 
   1114 
   1115 
   1116   [1m7.  Configuration Examples[0m
   1117 
   1118 
   1119 
   1120   This section shows some example InputDevice section for popular mice.
   1121   All the examples assume that the mouse is connected to the PS/2 mouse
   1122   port, and the OS supports the PS/2 mouse initialization.  It is also
   1123   assumed that /dev/mouse is a link to the PS/2 mouse port.
   1124 
   1125   Logitech MouseMan+ has 4 buttons and a wheel.  The following example
   1126   makes the wheel movement available as the button 5 and 6.
   1127 
   1128 
   1129   ______________________________________________________________________
   1130   Section "InputDevice"
   1131           Identifier      "MouseMan+"
   1132           Driver          "mouse"
   1133           Option          "Device"    "/dev/mouse"
   1134           Option          "Protocol"  "MouseManPlusPS/2"
   1135           Option          "Buttons"   "6"
   1136           Option          "ZAxisMapping"      "5 6"
   1137   EndSection
   1138   ______________________________________________________________________
   1139 
   1140 
   1141 
   1142   You can change button number assignment using the xmodmap command
   1143   AFTER you start the X server with the above configuration.  You may
   1144   not like to use the wheel as the button 2 and rather want the side
   1145   button (button 4) act like the button 2.  You may also want to map the
   1146   wheel movement to the button 4 and 5.  This can be done by the
   1147   following command:
   1148 
   1149 
   1150           xmodmap -e "pointer = 1 6 3 2 4 5"
   1151 
   1152 
   1153 
   1154   After this command is run, the correspondence between the buttons and
   1155   button numbers will be as shown in the following table.
   1156 
   1157 
   1158   Physical Buttons        Reported as:
   1159   ------------------------------------
   1160   1 Left Button             Button 1
   1161   2 Wheel Button            Button 6
   1162   3 Right Button            Button 3
   1163   4 Side Button             Button 2
   1164   5 Wheel Negative Move     Button 4
   1165   6 Wheel Positive Move     Button 5
   1166 
   1167   Starting in the Xorg 6.9 release, you can also achieve this in your
   1168   configuration file by adding this to the "InputDevice" section in 
   1169   xorg.conf:
   1170 
   1171        Option "ButtonMapping" "1 6 3 2 4 5"
   1172 
   1173   For the MS IntelliMouse Explorer which as a wheel and 5 buttons, you
   1174   may have the following InputDevice section.
   1175 
   1176 
   1177   ______________________________________________________________________
   1178   Section "InputDevice"
   1179           Identifier      "IntelliMouse Explorer"
   1180           Driver          "mouse"
   1181           Option          "Device"    "/dev/mouse"
   1182           Option          "Protocol"  "ExplorerPS/2"
   1183           Option          "Buttons"   "7"
   1184           Option          "ZAxisMapping"      "6 7"
   1185   EndSection
   1186   ______________________________________________________________________
   1187 
   1188 
   1189 
   1190   The IntelliMouse Explorer has 5 buttons, thus, you should give "7" to
   1191   the Buttons option if you want to map the wheel movement to buttons (6
   1192   and 7).  With this configuration, the correspondence between the
   1193   buttons and button numbers will be as follows:
   1194 
   1195 
   1196   Physical Buttons        Reported as:
   1197   ------------------------------------
   1198   1 Left Button             Button 1
   1199   2 Wheel Button            Button 2
   1200   3 Right Button            Button 3
   1201   4 Side Button 1           Button 4
   1202   5 Side Button 2           Button 5
   1203   6 Wheel Negative Move     Button 6
   1204   7 Wheel Positive Move     Button 7
   1205 
   1206 
   1207 
   1208   You can change button number assignment using xmodmap AFTER you
   1209   started the X server with the above configuration.
   1210 
   1211 
   1212           xmodmap -e "pointer = 1 2 3 4 7 5 6"
   1213 
   1214 
   1215 
   1216   The above command will moves the side button 2 to the button 7 and
   1217   make the wheel movement reported as the button 5 and 6.  See the table
   1218   below.
   1219 
   1220 
   1221   Physical Buttons        Reported as:
   1222   ------------------------------------
   1223   1 Left Button             Button 1
   1224   2 Wheel Button            Button 2
   1225   3 Right Button            Button 3
   1226   4 Side Button 1           Button 4
   1227   5 Side Button 2           Button 7
   1228   6 Wheel Negative Move     Button 5
   1229   7 Wheel Positive Move     Button 6
   1230 
   1231 
   1232 
   1233   For the A4 Tech WinEasy mouse which has two wheels and 3 buttons, you
   1234   may have the following InputDevice section.
   1235 
   1236 
   1237   ______________________________________________________________________
   1238   Section "InputDevice"
   1239           Identifier      "WinEasy"
   1240           Driver          "mouse"
   1241           Option          "Device"    "/dev/mouse"
   1242           Option          "Protocol"  "IMPS/2"
   1243           Option          "Buttons"   "7"
   1244           Option          "ZAxisMapping"      "4 5 6 7"
   1245   EndSection
   1246   ______________________________________________________________________
   1247 
   1248 
   1249 
   1250   The movement of the first wheel is mapped to the button 4 and 5.  The
   1251   second wheel's movement will be reported as the buttons 6 and 7.
   1252 
   1253   The Kensington Expert mouse is really a trackball. It has 4 buttons
   1254   arranged in a rectangle around the ball.
   1255 
   1256   ______________________________________________________________________
   1257   Section "InputDevice"
   1258           Identifier  "DLB"
   1259           Driver      "mouse"
   1260           Option      "Protocol" "ThinkingMousePS/2"
   1261           Option      "Buttons" "3"
   1262           Option      "Emulate3Buttons"
   1263           Option      "Device" "/dev/mouse"
   1264           Option      "DragLockButtons" "2 1 4 3"
   1265   EndSection
   1266   ______________________________________________________________________
   1267 
   1268 
   1269   In this example, button 2 is a drag lock button for button number 1,
   1270   and button 4 is a drag lock button for button 3.  Since button 2 is
   1271   above button 1 and button 4 is above button 3 in the layout of this
   1272   trackball, this is reasonable.
   1273 
   1274   Because button 2 is being used as a drag lock, it can not be used as
   1275   an ordinary button. However, it can be activated by using the
   1276   "Emulate3Buttons" feature. However, some people my be unable to press
   1277   two buttons at the same time. They may prefer the following
   1278   InputDevice section which defines button 4 as a master drag lock
   1279   button, and leaves button 2 free for ordinary use.
   1280 
   1281   ______________________________________________________________________
   1282   Section "InputDevice"
   1283           Identifier  "MasterDLB"
   1284           Driver      "mouse"
   1285           Option      "Protocol" "ThinkingMousePS/2"
   1286           Option      "Buttons" "3"
   1287           Option      "Device" "/dev/mouse"
   1288           Option      "DragLockButtons" "4"
   1289   EndSection
   1290   ______________________________________________________________________
   1291 
   1292 
   1293 
   1294