OS/2 eZine

[day month year]
 
Christopher B. Wright is the Editor in Chief of OS/2 eZine, a title he tried to duck for many months with little success. When he's not working on OS/2 eZine (what? he's not supposed to have any other jobs!) he works on his web comic strip, Help Desk.

If you have a comment about the content of this article, please feel free to vent in the OS/2 eZine discussion forums.

Previous Article
Home
Next Article

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.

Previous Article
Home
Next Article