Subject: Re: Two mouses
To: None <mouse@Rodents.Montreal.QC.CA, port-i386@NetBSD.org>
From: List Mail User <track@Plectere.com>
Date: 03/01/2005 23:36:15
>From bounces-port-i386-owner-track=Plectere.com@NetBSD.org Tue Mar 1 22:36:25 2005
>From: der Mouse <mouse@Rodents.Montreal.QC.CA>
>Date: Wed, 2 Mar 2005 01:08:30 -0500 (EST)
>Subject: Re: Two mouses
>>> Some applications have hard-coded assumptions, as indicated
>>> previously, about the buttons that correspond to the wheel.
>> Yea, there seem to be some really grotty assumptions in most X
>> clients that any mouse has at most 3 buttons.
>And there are some equally broken assumptions that any mouse has at
>least 3 buttons - witness all the broken servers that lie to clients,
>claiming the pointer has three buttons when it doesn't, with various
>kludges to permit the user to press the nonexistent buttons.
>Of course, the true problem in such cases is in the client(s); X has
>never promised the pointer has more than one button, and I think has
>never actually promised it has any buttons at all. (Not that I don't
>understand why people do it; some of my own clients make exactly that
>/~\ The ASCII der Mouse
>\ / Ribbon Campaign
> X Against HTML email@example.com
>/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B
Indeed the protocol make no requirement of any buttons at all;
The rational is explained in part in the original protocol documentation.
The only "kludge" I've ever seen is that which was written by Erik Fortune
for the original X11R0 IBM server (the other three supported platforms were
DEC, Tektronics and Sun who all had three button mice), at IBM we only had
two and Erik's "chording" for the third button let uwm work with the default
bindings (back then, there were exactly two window managers, wm and uwm;
the third was the almost forgotten cwm from CMU, which was part of Project
Andrew and never in an X distribution, though many people did use it around
'89). A very slightly different implimentation (never publicly available)
was used for the AIX version of the server, but all the X Consortium releases
targeted 4.3 BSD as shipped by the group in Palo Alto.
The X input extension distinguishes buttons and keys on the pointer
device and again, parts of the rationale can be found in the book written
by Eli Israel and Erik, "The X Window System Server", published by Digital
Press in '92 (when most of the IBM team had moved to SGI). I'm also sure
that either Bob Scheifler or Ralph Swick could also explain (or Phil Carlton,
if he were still alive) the choices made. Note that while the core protocol
doesn't require any buttons, but does place a maximum limit of five on an
implimentation; There aren't any bits in the event structure for more.
If you are *really* interested, while Erik now works for "the dark
side" (i.e. Microsoft), his email is firstname.lastname@example.org and I'm sure he'd willingly
discuss any reasons that aren't in the Protocol and/or Xi subdirectories of
the xc/doc/specs directory (and you might be able to find a copy of the book).