                              MouseWheel
                              ==========

                 Wheely mouses on the Amiga platform
                 -----------------------------------

                   by Dave Harris <dah31@cam.ac.uk>

Version 1.3beta


Introduction
------------

You've probably seen those mouses with little wheels for their middle
buttons, like the Microslop IntelliMouse.  You might well even have
used one.  If you have, there's a good chance that you (like me) were
hooked very quickly on the wheel for scrolling.  Unfortunately,
there's no way to use these nifty beasties on the Amiga....

... until now.  With the MouseWheel driver package, you may not only
use a wheely mouse as a three-button mouse, but you may even use the
wheel with applications that support it.

Currently, only the considerably affordable Logitech FirstMouse+ (a
clone less than half the price (~$29.95 most places; I think I've seen
it at Staples in Cambridge for about £20) of an IntelliMouse (which
lists at $84.95)) is supported, 'cos no-one seems to want to lend me
their IntelliMouse (an' I'm not about to buy one ;-) .


Requirements
------------

  o A suitable wheely mouse (serial port version: the FirstMouse+ is a
    PS/2 / serial combination beastie and comes with a
    PS/2-socket-to-9-pin-`D'-socket adapter.  If you want to use it on
    a standard Amiga (25-pin `D') serial port, you'll need a
    9-pin-`D'-plug-to-25-pin-`D'-socket adapter.)

  o OS: I think it needs at least v37 (2.04).  So far, it's only been
    tested on darling <URL:http://darling.chu.cam.ac.uk/darling.html>
    (a 1200/060 with 3.1 and 42 MB of RAM) and a 4000 of some
    description (3.x, a graphics card, Directory Opus 5.x, Executive,
    and Dashboard spring to mind) operated by Neil Bothwick of _CU
    Amiga_ at the World of Amiga show on Saturday 16-May-1998.


How does it work?
-----------------

MouseWheel is derived from Ed Hanway's OptMouse, a serial mouse driver
I chose because it came with C source.

As of Thursday 14-May-1998, MouseWheel consists of two executables:
the driver and the server.

  o the driver:  This program launches the server and reads the mouse
    data stream from the serial port.

  o the server:  This program waits at a public MsgPort for wheel
    event messages (which are intended to come from the driver) and
    requests from client applications (such as `Please signal me when
    wheel events happen' and `Please stop signalling me when wheel
    events happen').  It signals all current client applications when
    wheel events occur.  It also adds several InputEvents to the input
    stream: a fake keypress (and release) (IECLASS_RAWKEY) and a new
    type of InputEvent (IECLASS_MOUSEWHEEL (intended for future
    expandability, such as support of free-rolling wheels and IBM
    ScrollPoint-style joysticks mounted atop the mouse).


What applications support MouseWheel?
-------------------------------------

Currently, only a testing client (including source) and a simple
application which converts wheel events into multiple cursor key
events (also including source) exist.  I hope many applications will
support MouseWheel directly, though, for speed (try it out and you'll
see what I mean ;-) .


Installation
------------

Currently, as this is a beta release, there is no Installer script
provided (not much of an excuse, I know, but...).  It's known to work
if you put MouseWheel and MouseWheel_server_task in the same directory
(anywhere in your path should work, I'd imagine) and say

  1> MouseWheel

to a Shell.

To try it out, run the driver and start a couple of instances of
`test1' (and perhaps a `mwck_cursor_keys'; more than one will probably
just multiply the movement generated).

[This next part lifted directly from OptMouse.doc .]
-----
Usage (from CLI only):
	MouseWheel [-a<thresh>,<accel>] [-m[iddle]] [device [unit]]
	MouseWheel [-k[ill]]

Examples:
	MouseWheel 		Starts mouse driver (in the background) on
				serial.device, unit 0.

	MouseWheel foo.device 1	Starts mouse driver using foo.device, unit 1.
				Unit is optional, but if you want a unit other
				than zero, you must specify the device, even
				if it's just serial.device.

	MouseWheel -a5,2	Accellerate movements larger than 5 counts
				by a factor of 2.

	MouseWheel -middle	Starts mouse driver. Translates middle button
	MouseWheel -moo		events into shift-left button events. 

	MouseWheel -m foo.dev 1	You get the idea.

	MouseWheel -kill		Stops mouse driver. (Frees serial port.)
	MouseWheel -kwack
-----


Support
-------

The official MouseWheel site is at
<URL:http://darling.chu.cam.ac.uk/~dah31/MouseWheel/>.  If my
computer's turned off (particularly likely out of term time),
<URL:http://www.chu.cam.ac.uk/home/dah31/mauswhil.html> should do the
trick.


What about bugs?
----------------

Yes.  :-)


And in the future?
------------------

  o I'd like to crank up the baud rate---I think you just need to send
    something like "*M" to the mouse.  I saw it on a web-page once,
    but I lost the URL.

  o I'd like to add support for Microslop's IntelliMouse line (simply
    because many people get these free with Wintel boxen these days,
    not 'cos they're better (though they are quite nice; I just think
    they're overpriced)).  Again, I saw a web-page once that detailed
    how to switch an IntelliMouse into IntelliMouse mode, but I lost
    that one as well.  I've also tried my FirstMouse+ on a machine
    configured for an IntelliMouse, and it worked fine with the
    IntelliMouse driver (under Windoze95).

  o I think one of those was at
    <URL:http://dvt07.fagmed.uit.no/info/mouscode.html>, but that's
    gone as well, it appears.</li>

  o Aha: <URL:http://wave.me.gu.edu.au/~csand/research/linux/
    intellimouse.html>'s your uncle.  I'll try again and see if I can
    borrow an IntelliMouse.

  o Another useful place is Colas Nahaboo X mouse wheel scroll page
    <URL:http://www.inria.fr/koala/colas/mouse-wheel-scroll/>.

  o I'll take a look at the Linux source for the serial IntelliMouse
    driver.

  o I'd like to roll the two executables into one.  (If no-one wants
    to use the signals interface, I can remove that.  Otherwise, it'll
    be a Task sort of arrangement.)

Please note that this information is subject to change with very
little notice.  I'll do my best, however, to keep the API the same (or
at least backwards combatable).


What's new
----------

1.3beta (Thursday 21-May-1998):

  o Added InputEvent generation code at suggestion of Alessandro
    Zummo.

  o Tidied up source a bit in preparation for release.

1.2beta (Monday 18-May-1998):

  o Added Credits section.

  o Added mwck-cursor-keys, the first client (as far as I know) of any
    use.

  o Added source/include/mousewheel.h (useful for writing
    applications ;-) .

1.1beta (Saturday 16-May-1998):

  o Updated documentation.

1.0beta (Thursday 14-May-1998):

  o First release.


Legal gubbins
-------------

This software is subject to the "Standard Amiga FD-Software Copyright
Note".  It is freeware as defined in paragraph 4a.  For more
information please read "AFD-COPYRIGHT" (Version 1 or higher).

All trademarks mentioned are, umm, trademarks of their respective
companies.  No infringement of anyone's intellectual property rights
is intended or should be inferred.


Credits
-------

Major thanks must go to Ed Hanway for writing OptMouse and graciously
allowing me to redistribute MouseWheel.  Without OptMouse, MouseWheel
would probably never have happened.

Thanks also to Michael M. Rye and John S. Burger for sending me
replacement copies of my becrudded SAS/C disk 3.

Thanks to the SAS Institute for their excellent compiler (a steal at
only $9.95 + shipping... also sold out).

Thanks to Alex Zummo for his constructive suggestion.

Thanks to Chris Holt and Steven Becker for their useful feedback.

No thanks to Microsoft for making their IntelliMouse so expensive.

Thanks to Logitech for making their FirstMouse+ (a) affordable and (b)
work without needing to be initialised.

Thanks to Neil Bothwick for trying out my mouse and driver.


The Author
----------

Email: dah31@cam.ac.uk

ntalk: dah31@darling.chu.cam.ac.uk
talk/ntalk: dah31@{hammer,gloves,belt}.thor.cam.ac.uk

WWW: <URL:http://www.chu.cam.ac.uk/home/dah31/home.html>
     <URL:http://darling.chu.cam.ac.uk/~dah31/>

Snail mail:

Dave Harris
Churchill College
Cambridge
CB3 0DS
United Kingdom

or

Dave Harris
5616 Glen Ridge Bend
Lithonia, GA  30058-8385

Telephone: + 44 ((0)1223) 517409 (only for another couple of weeks at
                                  the time of writing)
           + 1 (770) 987-3591
           + 1 (770) 987-0176

... but seriously.  I'd appreciate feedback, questions, gifts, good
big reports, (hmm, bug reports, too)---all the usual stuff.
