home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 2: PC
/
frozenfish_august_1995.bin
/
bbs
/
d09xx
/
d0979.lha
/
QMouse
/
QMouse.doc
< prev
next >
Wrap
Text File
|
1994-04-04
|
13KB
|
422 lines
QMouse V2.90
Written by Dan Babcock
Note: This program requires Kickstart 2.0 or higher. Tested with
up to V40.62.
I missed one program more than any other when I switched to
Kickstart 2.0: QMouse, the venerable mouse-utility. I tried every
other program of its type that I could find, but every utility I
tried had quirks, lacked important features, and worst of all was
HUGE. Discouraged (and annoyed), I decided to write my own.
QMouse V2 (this program) is a completely new program, not an
update to QMouse, but I couldn't think of a more fitting name;
after all, my intent was to make a utility "like QMouse" - why
not call it QMouse!? I hope this doesn't lead to too much
confusion. On to the all-important feature list...
FEATURES:
* Automatic window activation after Amiga-M and Amiga-N (or the
screen depth gadget): the previously active window will be made
active. VERY useful!!! Does not poke screen structure like the
original QMouse did (bad :-)).
* Optional top-line blanking for 2320/3000 owners who wish to
mask the "half line flicker" effect. Does not blank the border,
just the top line.
* System-friendly mouse blanking. Uses only the documented
function SetPointer. Does not interfere with other sprites (e.g.
JRComm's cursor).
* Mouse acceleration/threshold
* "PopCLI" feature. The CLI (actually any program may be
executed) will have a sensible current directory, stack, and
path.
* Click-to-front and click-to-back. Click-to-Back will
intelligently decide whether to perform a Window-To-Back or
Screen-To-Back operation.
* SunMouse (activates window under mouse pointer). There is a
optional activation delay to avoid "jerky mouse" syndrome.
* SunRMB (activate window under pointer when right mouse button
is pressed)
* SunKey (activate window under mouse pointer when you hit a key)
* Screen blanking. No special effects; use another program for
that stuff.
* NoClick - turn off drive clicking for any combination of
drives.
* Can turn on the shell's *=#? feature (like "WildStar" etc.)
* Option to automatically make the top screen the default public
screen. This is the same function as PubChange by Steve Koren.
* Option to completely disable DisplayBeep (some programs overuse
it and it gets VERY annoying!)
* Option to remap a few Northgate keys. (Note: Omnikey Ultra
model)
* Starts own background process (no need to RUN).
* Written in assembly (efficient). Not a commodity.
* Fully public domain. Source code included.
* ONLY 4K!
-------
Changes
-------
V2.10
Adds a couple simple options (e.g. noclick and wildstar), and
some internal changes permit left-amiga-cursor mouse movements to
work with mouse blanking enabled.
Released on Fish 697.
V2.20
Older versions (pre-2.11) of QMouse had a serious memory-trashing
bug. This is fixed thanks to Chris Schneider.
The problem with the NoFlicker option and vertical overscan,
reported by several people, has been fixed.
The "PopCLI" feature now brings the Workbench screen to the
front.
Released on Fish 731.
V2.21
The NoFlicker option now works with Kickstart 3.0 (tested with
39.106 and 39.110).
An informative requester is displayed when QMouse is unable to
deinstall. (Previously it failed silently).
A couple extra key remappings added to NorthGate option (numeric
keyboard matches Amiga standard, important for VT100 emulation).
V2.30
Now works properly in superhires, 800x600, etc. The code actually
shrunk when I fixed this because the offending code wasn't even
needed.
The problem of the permanently disappearing pointer, which was
seen most often with reqtools-using programs (for example
GadToolsBox), has been fixed. Nasty software that peeks at
wd_Pointer can still get temporarily confused, but no serious
harm will come of it.
Click-to-front is disabled when left-Amiga is pressed. This
avoids a conflict with Snap when double-clicking on some text in
a background window.
Task priority set to 20 (same as input.device). Previously it
inherited the priority of the caller.
Released on Fish 802.
V2.40
Added "NoWBenchToFront" and "PubChange" options.
Automatic window activation (and PubChange) will now work with
the screen depth gadget as well as Amiga-M/N.
An error message ("Bad arguments") is printed if invalid options
are given. (Previously it failed silently).
V2.50
Due to popular demand I added a delay option (SunMouseDelay) to
the SunMouse option which provides for a delayed response
(similar to Commodore's AutoPoint program, except the delay is
adjustable). This makes it more usable on 68000 machines.
Automatic window activation after using the screen depth gadget
didn't quite work in 2.40. Fixed.
Major addition/fix: The mouse blanking code is now fully updated
for Kickstart 3.0, patching SetWindowPointerA and
OpenWindowTagList. Much to my surprise these functions are
already used by some commercial software (e.g. FinalCopy II) as
well as Workbench and various 3.0 system software.
Made some minor changes to some options (NoClick, Star, Verify)
to be a bit more logical.
V2.60
Added "ImmBlank" option to allow immediate screen blanking using
Left-Amiga+Right-Amiga.
Tuned up the semaphore logic to be more robust.
Fixed a minor but annoying bug in the automatic window activation
code.
V2.61
Fixed a bug in the screen blanking that crept into 2.60.
Added the "SunKey" option thanks to the code contribution of
Jaba@desert.wlink.nl (sorry, I don't know your name!)
V2.70
Versions 2.50-2.61 had a rather disastrous bug in the quit code
which often caused it to fail if running under a pre-3.0
kickstart. Fixed.
The "robust" semaphore logic of 2.60-2.61 turned out to be a
disaster, causing more problems than it solved. :-) I've done a
major rewrite in this version, moving ALL the intuition calls out
of the input handler and also being careful to handle
CloseWorkBench properly. Hopefully this will be the final and
correct solution.
Made still more improvements to the automatic window activation
code. Now it remembers a screen's active window even if you shift
to another (partially obscured) screen by clicking in a window on
the other screen. (Previously the "remember" code was only
triggered when there was a change in the top screen).
Added "SunRMB" option. This one actually appears to be quite
useful...I use it myself. :-)
V2.80
Added NoActivate and ScreenToBack options.
Screen blanking is now completely system-friendly.
Removed SunRMB option for now (sorry).
Bug fixes!
V2.90
SunRMB option is back.
Bug fixes.
Technical improvements: Process priority is 21 again (19 caused
major glitches); revamped semaphore logic (again); now calls
LockIBase for every IntBase access; patches many fewer OS
routines; "someone has patched the same OS routine" error display
now includes the library name and routine offset.
------------
Using QMouse
------------
To see the parameter template type "Qmouse ?". Most likely it
looks like gibberish to you, though, so I'll explain the options:
(Please note: If you don't specify an option, the option is OFF.
The default set of options is therefore all OFF, except for
automatic window activation, which is ON by default).
MBLANK (abbreviated M):
This specifies the number of seconds of mouse inactivity
before the mouse pointer is blanked. The mouse pointer is also
blanked whenever you hit a key.
Side note: Many people claim that it is impossible to blank the
mouse in a "system-friendly" way. They're wrong. :-)
Examples: m=3, mblank=9, M 10
SBLANK (abbreviated S):
Screen blanking - works same as mouse blanking basically.
ImmBlank:
Enable immediate (user-controlled) screen blanking. With this
option enabled, you can hit Left-Amiga and Right-Amiga
simultaneously to blank the screen.
NOFLICKER (abbreviated N):
This option will blank the top line of the display. (Only useful
to 2320/3000 owners). This function inspects the system copper
list, so it probably won't work in future Kickstarts.
Note: If a screen with extreme vertical overscan is being
displayed, QMouse will automatically turn this feature off. To
get rid of the flicker simply drag the screen down a few lines.
CMD:
Specifies the command to execute when the user hits left-Amiga-
ESCape. Default is "newcli". Use like this: CMD="newcli
con:0/0/640/400". Important!!! The current directory, stack, and
path of the newly created CLI will be that of the CLI where
QMouse was originally executed. Therefore, place QMouse in your
startup-sequence *after* STACK and PATH commands!!
The Workbench screen will normally be brought to the front when
executing the command. If you don't want this, use the
"NoWBenchToFront" option.
ACCELERATION (abbreviated A):
Specifies mouse speed-up factor. QMouse uses the same
acceleration/threshold algorithm as DMouse, by the way (I got
used to the feel).
Examples: acceleration 3, a=4, a 9
THRESHOLD (abbreviated T):
Specifies a threshold (minimum movement) required to apply
acceleration factor. The default is zero. Example: T=1.
CLICKTOBACK (abbreviated CTB):
Specifying "ctb" or "clicktoback" will enable a feature whereby
both mouse buttons being pressed simultaneously will send the
window under the mouse pointer to the back, OR, if the mouse is
not over a window, or if the window is a backdrop window, or if
the window is the only non-backdrop window on its screen, then a
screen-to-back operation will be performed instead.
SCREENTOBACK (abbreviated STB):
Similar to ClickToBack except it will only switch screens, not
windows.
CLICKTOFRONT (abbreviated CTF):
This option specifies the number of mouse clicks required to
bring the window under the mouse pointer to the front. Example:
ctf=2.
SUNMOUSE:
Specifying "sunmouse" turns on the "Sun Mouse" feature.
SunMouseDelay:
This is a sub-option for SunMouse and specifies a delayed
response to mouse movements. This allows for rapidly moving the
mouse across windows with any jerkiness caused by activating
windows that happen to be "in the way" of the pointer. This
effect is most pronounced on slow (e.g. 68000-based) systems.
This option takes a number argument that specifies the amount of
delay. Typical values are 0 (no delay) and 1 (small delay).
Example: SunMouseDelay=1
SunRMB:
This option causes the window under the mouse pointer to be
automatically activated whenever you hit the right mouse button.
This allows you to get at menus without a separate left-mouse-
click step.
SUNKEY:
Specifying "SunKey" will cause the window under the mouse pointer
to be activated (if it isn't already) when you press a key.
NOBEEP:
Completely disables DisplayBeep (the routine that flashes the
screen).
NORTHGATE:
For Northgate Omnikey Ultra keyboard users only: remaps a couple
keys. (Page Up -> Shift-Cursor-Up, etc). Sorry, if you want to
change it you'll have to edit the source and reassemble.
NOCLICK:
Turns off drive clicking option in trackdisk, just like many 2.0-
only 'noclick' programs. The argument to this option is a decimal
number whose (4-bit) binary equivalent corresponds to what drives
should receive the noclick treatment. For example, the number 3
is "0011" in binary, and means drives 0 and 1 (but not 2 and 3)
should be NoClick'ed. To turn off clicking on all drives, specify
NOCLICK=15.
Important: If you drive makes funny clicks after using NoClick,
reboot immediately - you can damage a drive that doesn't support
NoClick (which is why the OS defaults to the "clicking" mode).
VERIFY:
Turns on the floppy disk verify feature of Hackdisk (my
trackdisk.device replacement). If you aren't using Hackdisk this
option is useless.
NOVERIFY:
Turns off the floppy disk verify feature of Hackdisk (my
trackdisk.device replacement). If you aren't using Hackdisk this
option is useless.
STAR:
Turns on the *=#? shell feature, similar to programs called
"WildStar" etc.
PUBCHANGE:
The PubChange option causes the top screen to be automatically
made the default public screen (if the top screen is a public
screen).
NoWBenchToFront:
This option causes the CMD option to NOT bring the Workbench
screen to the front.
NoActivate:
Turns off the automatic window activation after a screen switch
feature.
QUIT:
Completely de-installs QMouse. Note that executing QMouse when
already installed will cause a QUIT to happen first. Due to
extensive SetFunction-ing of the OS, this is considered unsafe.
So please, use only for initial testing (i.e. deciding what
features of QMouse you like and which you don't, etc). Once
you're happy, put QMouse in your user-startup and don't mess with
it.
Important: If you run another program that SetFunctions some of
the same routines (for example ARQ) you will not be able to QUIT
or modify parameters. To avoid this run QMouse last.
----------
The Author
----------
I can be reached at d6b@ecl.psu.edu. My thanks to the many users
who wrote me with suggestions and bug reports.
Other fine freeware software products by me:
FileMount: Utility to create a true partition within a file
Hackdisk: A trackdisk.device replacement offering a verify option