[comp.sys.ibm.pc] Mouse problems

huilin@hpindda.HP.COM (Hui Lin Lim) (02/11/89)

I just bought a MSC (formerly Mouse Systems) PC Mouse II which
has two buttons and being a left hander I'd like to swop the
buttons around so that I can use it more easily.

I was hoping that there'd be a parameter that I could use when
loading the driver but that wasn't the case.  MSC tech support
categorically state that it isn't possible.  I've thought of
physically swopping the microswitches around but am not keen on
doing this.

Does anyone have a solution?  I know some programs (like Windows)
are considerate enough to allow you to do this but there are many
others that don't.

Any mailed replies will be summarised and posted for the benefit
of other left handers.

Thanks

Hui-Lin Lim
ARPA: huilin%hpda@hplabs.hp.com
UUCP: {ucbvax,hplabs}!hpda!huilin
Phone:  (408)447-2835

liber@darth.UUCP (Eric Liber) (02/15/89)

> I just bought a MSC (formerly Mouse Systems) PC Mouse II which
> has two buttons and being a left hander I'd like to swop the
> buttons around so that I can use it more easily.
> 
.
.
I have done extensive playing with several various mice.  As i see it you 
only have 2 choices.  

1) Write your own mouse driver to replace the one that came with your mouse.
While definately not for the faint of heart I suspect that a few days of 
hacking about would get you there.  A call to MSC to see if they have a 
technical manual on the mouse is definately in order.  Such a manual is 
absolutely a necessity in any such undertaking.

2) Somewhat simpler is to write a TSR routine that grabs int 33h (the mouse
interrupt and looks for requests for button information and reverses the logic.
That is:  if you send a mouse interrupt request #5 (let's say .. I don't have
my manual handy and my memory is not what it used to be :-) ) and it is
supposed to return bx bit 0 = left button and bx bit 1 = right button then
reversing those bits before returning to the calling program would do what 
you want.  This routine would have to intercept the int 33 call and make its
own call to where int33 used to point then the mouse routine would return to 
your intercept routine and you would return to the calling program with
the appropriate registers modified.

one other thought ... I believe that some of the mice (Logitech???) may
allow you to do this very thing through their click routine.  If so you
might want to sell the pc mouse and get a logitech.  I will check my reference
manuals tonight and report back.

Eric (the red baron) Liber

bowden@gumby.cc.wmich.edu (Michael L. Bowden) (02/16/89)

I don't remember if there are any seals on the PC mouse, but
it should be possible to take it apart and physically exchange
the first and third buttons.  It won't be as easy to dynamically
reconfigure, but if it's just for you, that shouldn't matter.
I would expect this to be quicker/easier than playing TSR wars with
the mouse driver.

vail@tegra.UUCP (Johnathan Vail) (02/17/89)

~
~> I just bought a MSC (formerly Mouse Systems) PC Mouse II which
~> has two buttons and being a left hander I'd like to swop the
~> buttons around so that I can use it more easily.
~> 
~.
~.
~I have done extensive playing with several various mice.  As i see it you 
~only have 2 choices.  
~

How about:

3) Opening up the little devil and rewiring the buttons

Ack! harware!

"I'm insanely jealous of the spiders in your path" -- RH
 _____
|     | Johnathan Vail  | tegra!N1DXG@ulowell.edu
|Tegra| (508) 663-7435  | N1DXG @ 145.110-, 444.2+, 448.625-
 -----

huilin@hpindda.HP.COM (Hui Lin Lim) (02/22/89)

Well I finally managed to swop the functions of the mouse buttons
around by using debug to trace the code attached to the serial
port interrupt.  This allowed me to find out where the mouse
driver was intepreting the data being sent by the mouse and
reverse the result.

For the interest of others who have the same problem, you can
forget about doing any hardware mods if the PC Mouse and PC
Mouse II are anything to go by.  The microswitches are mounted on
printed circuit boards and there aren't any wires that can be
cross connected.  About the only thing that you could do would be
to cut traces and install jumpers (not something that I'd want to
try - but then again I'm a software person).

Thanks to all those who offered suggestions which can basically
be summarised as (my comments about each proposed solution follow
in parentheses):

1.  Use the application software which comes with the mouse to do
the customisation (won't work for applications which use int33h to
access the mouse)

2.  Write your own driver (too complicated)

3.  Write a TSR which watches int33h and modifies the returned
values (also fairly complex if one is to provide the full
functionality that the driver does since several functions return
information about the mouse buttons)

I'd like to apologise for not giving the names of those who
helped me with their suggestions but I'm afraid I ran out of
space and had to purge my mail and I forgot to save the names.
Once again please accept my thanks.


Hui-Lin Lim
ARPA: huilin%hpinddf@hplabs.hp.com
UUCP: {ucbvax,hplabs}!hpinddf!huilin
Phone:  (408)447-2835