DiskMAG Volume 1 Number 2 (Nov 1988) : UTILITIES / QMouse.doc






                       QMouse 1.3 Copyright 1988 by Lyman Epp

          Another "Mouse  Accelerator???"  What for?  It seems that all the
          other mouse accelerators have been written in "C".  This is okay,
          but the  programs are  10-30K.  This mouse accelerator is written
          in assembler and contains most of the features of the others, but
          the program size is less than 4K bytes!  QMouse stands for "Quick
          Mouse."

          This is being distributed as ShareWare.  If you think that QMouse
          is  useful,  please  send  $10.    Your  response will insure the
          release of more quality programs for  your  Amiga!    Be  sure to
          check out the latest shareware version of QView.

          The latest  version of  QMouse can  always be  found first on the
          Wind Dragon Inn BBS, (402)-291-8053.


                                    Lyman R. Epp
                                10072 Wirt Plaza #15
                                Omaha, Nebraska 68134








                                  REGISTERED USERS


          Thanks to these users of QMouse for your ShareWare donation.

               D. J. James                   Ted Michelse

               Scott Brickner                Paul O'Keefe

               Elliott Hammett               Ken Rahmoeller

















                                          1









                                   QMOUSE FEATURES


          o    Screen blanks if keyboard or  mouse  is  idle  for  a while.
               This will prevent an image "burning" onto your monitor while
               left unattended.

          o    The mouse pointer blanks if mouse is idle for a  while.  The
               mouse pointer  will also  blank when  the first keystroke is
               typed.

          o    Mouse accelerator with configurable  threshold to  allow for
               precise mouse pointer positioning.

          o    Automatic  window  activation  (i.e.  Sun Mouse).  Makes the
               window under the mouse pointer the active window.  Sun Mouse
               will  not   activate  windows  if  either  mouse  button  is
               depressed--this  will  allow  you  to  move  WorkBench icons
               between windows.

          o    Multiple configurable  hot keys,  ala PopCli, activated with
               the <Left Amiga><hotkey> combination.  The <Left Amiga><Esc>
               combination is  preset to execute "NewCLI".  The RUN command
               must be in your C: directory.

          o    Keyboard  record/playback.    <Left  Alt><Esc>  toggles  the
               keystroke recorder  on and off.  Press <Left Alt><Return> to
               playback the previously recorded keystrokes.

          o    Window to front.  Left Mouse Button click(s)  in window will
               bring it to the front.  Won't try to bring the window to the
               front if it is already in the front.   The  number of clicks
               required  is  configurable.    The  time  between  clicks is
               determined by Preferences.

          o    Window to back.  Hold down the Left Mouse Button in a window
               and click  the Right Mouse Button to send that window to the
               back.

          o    The smallest clock yet!  Can be turned off if you don't like
               clocks.   The amount  of available  memory can optionally be
               displayed.  Starting column is also configurable.  The clock
               window  will  be  brought  to  the  front  (of the WorkBench
               screen) whenever it becomes obscured.

          o    Every option can be turned off or modified.  Options  can be
               entered  from  the  command  line (e.g. Startup-Sequence) or
               from a user specifiable configuration file.








                                          2









          o    Uses a background CLI.   Programs  like  DMouse  and PopCLI3
               don't  use  a  background  CLI,  and  therefore any NewCLI's
               spawned by them will have no  default directory,  no default
               path, etc.   Using a background CLI simply requires that you
               use RunBack (included) instead of Run (to allow  closing the
               initial  CLI.)    This  should be viewed as very beneficial!
               You can now set the stack size for any spawned  CLI's.  This
               will allow  you to  set a  lower stack  size before starting
               QMouse, but insure an adequate stack size for spawned CLI's.















































                                          3









                               COMMAND LINE ARGUMENTS


          Arguments can be typed in upper or lower case.   Arguments can be
          enclosed  in  quotes,  e.g.  "-A3".    Quotes are required if the
          argument contains spaces, otherwise they are  optional.  Commands
          can also be in a configuration file and used with the -F option.


          -A#            Set acceleration  to #.   Can be in the range of 0
                         to 65,535.  Mouse movement events that have X or Y
                         motion  greater  than  the  acceleration threshold
                         (see  option  -T)  will  be  accelerated  by  this
                         factor.   The default acceleration value is 3.  To
                         disable this feature, specify 0 or 1.


          -B             Enable click to back feature.


          -C[E][M][#]    Activate clock.    To  display  clock  in  24 hour
                         format (European),  specify an  "E" after the "C".
                         To display available memory, specify an  "M" after
                         the "C" (e.g. -CM).  If both "E" and "M" are used,
                         the "E" must come  before the  "M".   You can also
                         specify an optional column where the clock will be
                         displayed.  The width  of the  clock is  44 pixels
                         (92 if available memory is displayed.)  The column
                         number must be in the range of 0  to [screen width
                         - clock  width].   To place  the clock next to the
                         front/back gadgets, use a value of [screen width -
                         clock width - 53].  With a screen width of 640 and
                         with available memory displayed,  this would  be a
                         column value  of 495 (-CM495).  The default column
                         value is 280.


          -Ecommand      Set command to execute  when <Left  Amiga><Esc> is
                         pressed.  If the command contains spaces, then the
                         entire command  must be  enclosed in  quotes.  The
                         default  command  is  "NewCLI".  The "Run" command
                         must be in your C: directory.   The  "Run" command
                         must  precede  any  commands  other  than "NewCLI"
                         (e.g. "-eRun ed".)


          -Fname         Read configuration information from  the specified
                         file.   The -F  option can be nested any number of
                         levels (or until the stack overflows.)  The format
                         for  the  configuration  file  is identical to the
                         command line format.   Each option  can be entered
                         on  a  separate  line.    Anything between a semi-
                         colon character ";" and the end  of the  line will
                         be considered  a comment.   A sample configuration
                         file is included.

                                          4









          -Hxx=command   Set the command to  execute when  this hot  key is
                         invoked.   The 'xx'  parameter defines the raw key
                         code for this  hot  key.    Whenever  this  key is
                         pressed in combination with the <Left Amiga><key>,
                         the command will be executed.  The raw  key values
                         are printed later in this documentation.  For more
                         information, see option -E.


          -K#            Set number of clicks required to bring a window to
                         the front.   The  default value  is 2  clicks.  To
                         disable this feature, specify 0 clicks.  Can be in
                         the range of 0 to 65,535 clicks.


          -M             Deactivate the  screen shuffler.  The <Left Amiga>
                         <M> combination  will revert  to Intuition pushing
                         the WorkBench screen to the back.


          -P#            Set the  number of  seconds to  wait after a mouse
                         event before blanking  the  mouse  pointer.   Just
                         move  the   mouse  again   and  the  pointer  will
                         reappear.  The default  value is  10 seconds.   To
                         disable this  feature, specify  0 seconds.  Can be
                         in the range of 0 to 65,535 seconds.


          -R             Enable automatic window activation.


          -S#            Set the number of seconds to  wait after  any user
                         event  (keyboard,  mouse  or  disk changed) before
                         blanking the screen.  Just move the mouse,  type a
                         key  or  insert  a  disk  and  the  screen will be
                         restored.  The default value is  600 seconds.   To
                         disable this  feature, specify  0 seconds.  Can be
                         in the range of 0 to 65,535 seconds.


          -T#            Set mouse  acceleration  threshold  in  pixels per
                         event (see option -A).  This option provides a way
                         to position  the mouse  pointer precisely, without
                         the acceleration factor "getting in the way."  The
                         default value is 3.  Can be in  the range  of 0 to
                         65,535 pixels per event.


          -V#            Set the  stack size  for any  spawned CLI's.  This
                         allows the stack size for the  QMouse's CLI  to be
                         set to  a minimum.   The default value is obtained
                         from the CLI that QMouse was run from.  Can  be in
                         the range of 1800 to 655,360 bytes.



                                          5









                                     HOW TO USE


          QMouse must  be executed from a CLI (or from a Startup-Sequence.)
          It can't be run from WorkBench.  It  is recommended  that you set
          the stack  size option  of RunBack  to 4000 when starting QMouse.
          It is also recommended that you  use the  -V option  of QMouse to
          set the stack size for any spawned CLI's to at least 20000.

               1> Stack 20000
                  ...
               1> RunBack -S4000 QMouse -B -CEM543 -R -V20000



                                  TO REMOVE QMOUSE


          Press <Control><Left Amiga><Esc> (all at the same time.)



                                     SOURCE CODE


          Due to  the large size of the source code for V1.3 (over 45K), it
          will no longer be distributed.   If you  desire the  source code,
          please send a SASE and a disk with your QMouse donation.



                                       CREDITS


          This program  has been inspired by PopCLI, Mach, DMouse, MouseOff
          and  others.    Thanks  to  the  authors  of  these  programs for
          providing good examples of how to make the Amiga "do its thing!"

          RunBack is copyrighted by MicroSmiths, Inc.



                                     KNOWN BUGS

          Intuition will often restore the mouse pointer to the Preferences
          pointer.  QMouse  will  reblank  the  pointer  within  1/10  of a
          second,  but  this  can  be  very annoying (especially when using
          WordPerfect.)  This seems to be a tug-of-war match with Intuition
          over control  of the mouse pointer.  If it bothers you, just turn
          off the mouse pointer blanking option.






                                          6









                                 RAW KEY DEFINITIONS


                  Raw Key                       Raw Key
                  Number      Key               Number      Key

                    00        `                   30        Undefined
                    01        1                   31        Z
                    02        2                   32        X
                    03        3                   33        C
                    04        4                   34        V
                    05        5                   35        B
                    06        6                   36        N
                    07        7                   37        M
                    08        8                   38        <
                    09        9                   39        >
                    0A        0                   3A        /
                    0B        -                   3B        Undefined
                    0C        =                   3C        NK.
                    0D        \                   3D        NK7
                    0E        Undefined           3E        NK8
                    0F        NK0                 3F        NK9
                    10        Q                   40        Space
                    11        W                   41        Back Space
                    12        E                   42        Tab
                    13        R                   43        Enter
                    14        T                   44        Return
                    15        Y                   45        Escape
                    16        U                   46        Del
                    17        I                   47        Undefined
                    18        O                   48        Undefined
                    19        P                   49        Undefined
                    1A        {                   4A        NK-
                    1B        }                   4B        Undefined
                    1C        Undefined           4C        UP
                    1D        NK1                 4D        DOWN
                    1E        NK2                 4E        RIGHT
                    1F        NK3                 4F        LEFT
                    20        A                   50        F1
                    21        S                   51        F2
                    22        D                   52        F3
                    23        F                   53        F4
                    24        G                   54        F5
                    25        H                   55        F6
                    26        J                   56        F7
                    27        K                   57        F8
                    28        L                   58        F9
                    29        ;                   59        F10
                    2A        "                   5A        Undefined
                    2B        Undefined           5B        Undefined
                    2C        Undefined           5C        Undefined
                    2D        NK4                 5D        Undefined
                    2E        NK5                 5E        Undefined
                    2F        NK6                 5F        Help


                                          7









                                  RELEASE 1.1 NOTES
                                     08-Jul-1988


          o    Made the clock come to the front whenever its been obscured,
               rather  than  every  10  seconds.    This was bothering some
               programs.  Thanks to D. J. James for this idea.

          o    The manual incorrectly documented  the <Control><Left Amiga>
               <Esc> method  of terminating  QMouse.  This should have read
               <Control><Left Amiga><F1>, but I changed the program to work
               as documented.

          o    Intuition will  restore the  mouse pointer  occasionally.  I
               changed QMouse  to re-blank  the mouse  pointer quicker than
               before.



                                  RELEASE 1.2 NOTES
                                     30-Aug-1988


          o    Modified  to  assemble  with  the  Manx assembler.  The Manx
               assembler  creates  about  5-10%  smaller  code.    See  the
               included  makefile  for  assembling with the Manx assembler.
               Source will still assemble  with the  Metacomco assembler as
               before!

          o    Intuition calls  are now  made from  the QMouse task, rather
               than from  the  input  handler.    This  should  resolve any
               Intuition lockups.

          o    WindowToFront() not  called for BACKDROP type windows.  This
               should help eliminate the  possibility of  WorkBench locking
               up.

          o    Added automatic window activation (i.e. Sun Mouse).  Specify
               option -R to activate Sun Mouse (-S was already used.)

          o    Added click to back feature.  Specify option  -B to activate
               click to back.

          o    Added  stack  size  feature.    Allows  QMouse to run with a
               smaller stack while insuring adequate stack size for spawned
               CLI's.  Specify option -V to change the default stack size.

          o    Fixed bug  with clicking  to front a window on a screen that
               is in the background.  No one had reported this bug yet. ;-)

          o    Cleaned up documentation and  fixed any  inaccuracies that I
               found.      Documentation   for   option  -M  now  reads  to
               "deactivate" the screen shuffler.   Actually,  the -M option
               was ignored until release 1.2.


                                          8









                                  RELEASE 1.3 NOTES
                                     8-Oct-1988


          o    Added multiple hot key support.  Specify option -H to define
               multiple hot key commands.  Thanks  to Clete  Baker for this
               idea.

          o    Added  keyboard  record/playback  support.   <Left Alt><Esc>
               toggles  the  recorder  on  and  off.    <Left  Alt><Return>
               activates the keyboard playback.

          o    Added ability  to read  commands from  a configuration file.
               This was needed to  support  multiple  hot  key definitions.
               Specify option -F to read commands from a file.

          o    Added option  to display the amount of available memory with
               the clock.  Add the "M" modifier to option -C to display the
               amount of available memory (e.g. -CM).

          o    Added option  to display  the time  in 24 hour format.  This
               option was added at the request of Jim Cooper.

          o    When  pointer  blanking  is  enabled,  the  pointer  will be
               blanked immediately  when a  key is  typed.   Thanks to Eric
               Schwertfeger for this idea.

          o    Changed the method of  screen blanking.   Previously, QMouse
               opened  an  Intuition  screen  and  changed it's colors, now
               QMouse turns off DMA  for the  COPPER.   This shaved  off 88
               bytes from QMouse.  Thanks to Jim Cooper for this idea.

          o    General code  cleanup.  Tried to make the code more reliable
               in certain situations.  The code  size grew  several hundred
               bytes on account of this effort.





















                                          9