Chris Owen wrote:
I have now found a solution for this mouse problem in X: it seems gpm
was the problem. After uninstalling gpm, the PS/2 mouse now works
correctly in X. If anyone can tell me why this is, or whether
there's a workaround which lets me keep gpm, that would be
interesting (although to be honest I'm not that bothered about
needing gpm...).
Thanks
Chris
From a posting earlier in the day (subj: MOUSE won't function):
gpm is a mouse driver for the text-only virtual console. For example,
if you are not running X, and you only have text-only virtual consoles
(hereafter referred to as VTs, for Virtual Terminals), and you need a
mouse in your VTs, then you'd need to be running gpm. Or even if you
are running X, but you occasionally need to pop out to a VT and need a
mouse while there, you'd need gpm running.
Now, if you have X running, X needs a mouse. It has its own mouse
driver built-in. This mouse driver conflicts with gpm, and having gpm
running as well as X can cause the mouse to behave erratically, etc.
For example, the mouse might generate some events, such as "I've moved
left", followed by "I've moved up". If both gpm and the X mouse driver
are reading the mouse port, it may be that gpm reads the "left" event,
removing that event from the incoming data stream, and then it comes
X's turn to read the mouse events, and it reads "up", never getting a
chance to read the "left" event because gpm "took" it. So the mouse
behaviour in X was supposed to be left, then up, but turns out to be
only up. Doh!
Thankfully, these two mouse drivers can be convinced to play nicely
together. The way this is done is to tell gpm to not keep the incoming
data to itself, but to repeat that incoming data, in a "raw" format.
Both gpm and X normally read from the "incoming mouse data port"
(whatever that is, perhaps /dev/psaux, perhaps /dev/ttyS0, etc). gpm
can't repeat the data it reads back to that port, or next time it goes
to read that port it'll just re-read what it read earlier, and
loopity-loop. So instead it repeats the data to a special "virtual"
port, called /dev/gpmdata. Then X needs to be configured to read its
incoming mouse data, not from the normal port, but from the
/dev/gpmdata "port". Voila! gpm and X now get along just dandy.
So, you have two options.
1) Remove gpm, and just get the mouse working in X
2) Configure gpm to repeat the raw data (run gpmconfig and answer the
questions), and configure X to read its mouse data from /dev/gpmdata.