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