Wright's View
One of the projects that I've been most
impressed with in the OS/2 world is the Scitech
Display Doctor universal display driver. The folks at Scitech
have created a very useful, almost universal driver for graphics cards. All you
have to do is install it, and when you reboot it automatically detects your graphics
card. If you switch graphics cards, it automatically detects the switch, and you
won't even necessarily notice the difference. Well, most of the time, anyway. The
drivers are so useful that I bought them -- even though the advanced version of
the drivers are still being beta tested!
This got me to thinking -- if they
can do it for a graphics card, why not a mouse driver?
There are lots of "nifty"
mice in the world. Mice with eraser scroll-sticks, mice with scroll wheels, mice
with 3 buttons, mice with 4 buttons, mice with five and sometimes even six buttons
-- not to mention the various touch pads and track balls out there in the world.
Most of these extra buttons are, for all intents and purposes, useless in the OS/2
world. OS/2 is generally good at supporting a mouse at its most basic, as long as
it's a PS/2 or serial mouse (USB mice, well, they're tricky). But if you want the
"extra" features that come with a mouse, you're out of luck.
For example, I have a Logitech Trackman
track ball that has four buttons. One of these buttons is supposed to be a "scroll
lock" button, so that when you press down on it, moving the marble moves the
scroll bars on the active window instead of moving the mouse cursor. One of these
buttons is also a third mouse button. OS/2 detects neither of them, which is a shame,
because it's a wonderful track ball that doesn't take up much room and could, theoretically,
be a nice and useful addition to my setup.
As another example, if you want to
use a digitizer tablet you're out of luck unless you get an ACECAT III or one of
their larger models. Now, these are excellent tablets -- I have a refurbished A-1212
that is perfect for what I need to do -- but many people happen to have other models
laying around their house, gathering dust, that they can't use with OS/2. And it
would be nice to be able to go out to a store and just buy a digitizer tablet of
the shelf and be confident that it will work with OS/2.
There are a few arcane tools and
drivers that you can buy to get around this. The one that springs most readily to
mind is the Rodent driver, which was once available on Hobbes as shareware (but
has disappeared, apparently.) The Rodent driver allowed you to add switches to your
config.sys file to try and tune it to the specific device. It's a bit old, though,
and doesn't work well with many of the new mice or digitizer tablets.
What we need is a universal mouse
driver, similar to the kind of driver Scitech has released for OS/2 graphics cards.
I'm not a programmer, so I honestly can't tell how difficult or easy this would
be to accomplish, but it seems as if it would be easier than creating a universal
display adapter.
Mice are pretty simple. If it's a
standard mouse, it plugs into a serial port. If it's a PS/2 mouse, it plugs into
a PS/2 port. If it's a USB mouse, it plugs into a USB port. When you click on the
left mouse button, it sends some kind of signal to the port. If you click on the
right mouse button, it sends a different kind of signal to the port. If you move
the mouse up or down, or from side to side, it sends different signals to the port.
The mouse driver tells OS/2 what those signals mean, and OS/2 draws the mouse on
the screen, moves it about, opens and closes folders, drags objects, and so on.
Of course, each mouse sends different
kinds of signals for their "special" properties, or we'd only need one
mouse driver. But... how hard could it be to create a program that would "train"
OS/2 to understand these signals.
Picture this: an application called
the Universal Mouse Driver for OS/2. It doesn't come with a repository of mouse
drivers, but it comes with a training application that "listens" for various
mouse signals, and allows you to assign them properties and functionality.
So, for example, let's say that I
had my trusty Logitech Trackman track ball. I plug it into the PS/2 port, boot OS/2,
and the standard OS/2 drivers recognize it as nothing more than a simple, two-button,
PS/2 mouse. I then launch the Universal Mouse Driver, and it asks me a series of
questions:
IS THIS A PRIMARY MOUSE OR A SECONDARY MOUSE
I.E., A DIGITIZER PAD)?
> Primary
(The program now knows that this
mouse will be used all the time, so that if I choose to add a secondary mouse later,
it will not disable this one.)
WHAT PORT IS YOUR MOUSE PLUGGED INTO:
> PS/2
(The program now listens specifically
to the PS/2 port, so that it can figure out what signals equate to what mouse action.)
IS THIS AN ABSOLUTE OR A RELATIVE POINTING DEVICE
MOST MICE ARE 'RELATIVE')?
> Relative
(The program now knows that this
mouse works like a 'regular' mouse (i.e., it is not mapped to an absolute grid of
coordinates like most digitizers are.)
PLEASE MOVE YOUR MOUSE 'UP', SLOWLY
I scroll the track ball in the 'up'
direction, slowly, while the program 'memorizes' that signal)
PLEASE MOVE YOUR MOUSE 'DOWN', SLOWLY
(I do the same thing, in the 'down'
direction.)
PLEASE MOVE YOUR MOUSE 'RIGHT', SLOWLY
(I do the same thing, in the 'right'
direction.)
PLEASE MOVE YOUR MOUSE 'LEFT', SLOWLY
(I do the same thing, in the 'left'
direction. The Universal Mouse Driver is now familiar with the signals that allow
the mouse to move about the screen.)
HOW MANY BUTTONS DOES THIS MOUSE HAVE?
>4
PLEASE CLICK MOUSE BUTTON 1:
(I click the button that I want to
be assigned mouse button 1 functionality. I'm right handed, so I click on the leftmost
button.)
PLEASE CLICK MOUSE BUTTON 2:
(I click the button that I want to
be assigned mouse button 2 functionality. I'm right handed, so I click on the rightmost
button.)
PLEASE CLICK MOUSE BUTTON 3:
(I click on the white button to the
immediate left of the track ball.)
PLEASE ASSIGN AN ACTION TO MOUSE BUTTON 3:
(At this point, I can choose from
a list of mouse button macros. I choose to make Mouse Button 3 function as a Mouse
Button 1 double-click.)
PLEASE CLICK MOUSE BUTTON 4:
(I click on the red button to the
immediate left of the track ball.)
PLEASE ASSIGN AN ACTION TO MOUSE BUTTON 4:
(At this point, I can choose from
a list of mouse button macros. I choose to make Mouse Button 4 as my autoscroller
-- when I press it, moving the mouse in a specific direction will be analogous to
clicking on a scroll bar and dragging it in that direction.)
Finally, all I'd need to do is reboot
my machine and I have a fully functional Logitech Trackman.
This program could also work as a
trainer for your digitizer tablets. Instead of asking you to move the mouse in various
directions, it would ask you to place your stylus or puck on various portions of
the digitizer tablet surface, so it could map out the absolute grid you'll be using.
It could ALSO reserve certain parts of the tablet space for macros or menu controls,
like many tablets do in Windows or the Macintosh if you're using tablet-aware software
like Photoshop or AutoCAD.
As I said, I'm not a programmer.
I have no idea how difficult this would actually be to implement. Perhaps this is
far more difficult than my untrained mind can actually grasp. Perhaps it's not difficult,
but no one's ever really thought about doing it this way before. Perhaps someone
has already done this, and I'm not aware of it. If it's too difficult to implement,
I'd like to know. Post in our talkback forum and explain it to me. If someone's
already done this, I'd like a copy. Let me know where it is so I can pick it up
and try it out. If it's possible to do, but no-one has done it, I'd like to encourage
you to give it a try -- you'll have at least one customer.
|