Subject: wsmouse/wsmux, trackballs, X11
To: None <tech-x11@netbsd.org>
From: Richard Rauch <rauch@rice.edu>
List: tech-x11
Date: 11/02/2002 19:08:51
(My system is an i386 laptop, but there's nothing i386-specific about my
problem, I assume. So, within the domain of NetBSD, I think that this is
most closely an X11 technical problem.)
The laptop of course has a builtin keyboard and mouse (a touch-pad). I
don't care for the cramped keyboard and have an external keyboard that I
bought a week or so ago to make life easier. (I mostly use the computer
in an office, so I can keep the keyboard there and the fact that the
keyboard isn't portable isn't an issue. (^&)
Tonight, I bought a MicroSoft USB trackball (have I mentioned the irony
that they seem to make decent hardware?).
I've got some minor problems with it, but it's working "well enough" that
I can live with it for now. Still, I thought that I'd ponder some of
these aloud, and maybe get some feedback on them:
* For the mouse device, I chose "/dev/wsmouse" after some twiddling.
This seems to be what I want to use. But the default XFree86
configuration was to use wsmouse0 or so, I believe. (I.e., only
support the touch-pad or the trackball, but not both.)
I tried various combinations, including wsmux0, and also using
wsconsctl/wsmuxctl (cfg? whichever). I'm pretty sure that in some
variation, I had my trackball plugged in "early" (during boot?), and
"wsmouse" wasn't giving both mouse & trackball.
Some wsconsctl/wsmuxctl (cfg?) commands caused weird things to happen,
such as causing the xconsole to apparently take over the 0 wsconsole,
giving a "login" prompt (unfortunately, at the stage where I saw that,
the X mouse pointer was dead so I couldn't go over to the xconsole
window and try to type in shell commands---but the wscons 0 console
appeared to be dead (console 0 was, up to that point, open with a root
shell running on it).
Trying to "add" a device to wsmux0 fails when X isn't running (wsmux0
isn't open?). When X is running, the shell process by which the "-a"
add command was issued seems to wander off into never-never land.
* At the moment, it all seems to be working well. However, I sometimes
want to use the touchpad---e.g., if I move the trackball permamently to
my grad. student office, I still will frequently want the laptop at
home.
I'd like some way to tell NetBSD that wsmouse0 (the touchpad, I think)
is "okay" as-is, but that the trackball (wsmouse1) is too sensitive;
I'd like to report the trackball cursor-motion mod-2 or mod-3. Is
there a way to control that with a NetBSD command, using standard USB
mouse protocols? Or with the NetBSD wsmouse device abstraction? (If
not, I might try to hack it into the abstraction and put an interface
into wsconsctl, or whatever...(^&)
* The trackball has a wheel-button, but it only acts as a regular button
as far as XFree86/NetBSD is concerned. The trackball also has two
additional buttons that are not supported at all. (Counting the wheel-
button, the trackball has 5 buttons.)
xev only reports the mouse-motion and the "first" 3 buttons. Wheel
events, and the outermost 2 buttons generate nothing. Any ideas on how
I might get X to use this? What tools are there for analyzing these
events?
FWIW, I'm using NetBSD/i386 v1.6, XFree86 v4.2. The kernel is built from
a custom config and contains only one source customization (a one-line
change to the PCMCIA ne ethernet driver so that the driver will not reject
my card during probe/config at boot).
``I probably don't know what I'm talking about.'' --rauch@math.rice.edu