
          The HANDS ON  Wizard manual            Page 1



          Updated June, 1994


          This Product is Shareware, if you continue to use it

          Please Legalise your usage through Registration.


                        _______
                   ____|__     |               (R)
                --|       |    |-------------------
                  |   ____|__  |  Association of
                  |  |       |_|  Shareware
                  |__|   o   |    Professionals
                -----|   |   |---------------------
                     |___|___|    Member



          Table of Contents                              page #

          1.     Introduction                              1
          2.     Script Files                              2
                 2.1    Script Commands                    3
                 2.2    An example                         6
          3.     Using Wizard with Batch Files            11
          4.     SHOW - debugging scripts                 11
          5.     Feeding the Wizard                       13
          6.     The Apprentice                           15
          7.     SUPPORT and the ASP                      15

          Appendix   A - Special keys                     16
          Appendix   B - Acknowledgments and history      18
          Appendix   C - ShareWare Vendor Notice (if any)



          1.  Introduction

          The Wizard is a program which will run any other program, and
          make it appear to that program that a user is typing commands
          at the keyboard.  Actually the "typing" is done automatically
          by the Wizard as specified in a script file.  The Wizard's
          scripts also allow it to monitor the contents of the
          computer's screen and elapsed time and take actions based on
          the screen contents and/or the time.  The Wizard should work
          with any program that uses DOS or the BIOS for keyboard input,
          or that uses the BIOS data area directly.  However, programs
          that interface directly with the keyboard hardware will not




          The HANDS ON  Wizard manual            Page 2


          work with it.  Fortunately very few programs work this way.
          Wizard is commonly abbreviated as WIZ, and you can also just
          call it 'Wizard'.

          There are two primary Wizard distributions:
            1) with the Hands On remote access package.
            2) on its own.

          Typical usage of Wizard might be:
          (Wizard is abbreviated as WIZ here)

              WIZ script.scr kermit

          which would cause Wizard to read in the script file name
          'script.scr' and then run kermit.  While kermit was running,
          Wizard would "type" whatever was in the script file.  When
          kermit terminated (either because the script file included a
          command to terminate the program, or because the user manually
          terminated kermit) Wizard would also terminate.  This has the
          benefit that the user does not need to worry about whether a
          TSR is loaded;  Wizard is loaded for just long enough to run
          the application, and unloads itself as soon as the application
          has finished.

          If for any reason more than one application needs to be used,
          Wizard can be run as:

              WIZ script.scr command

          which will run another copy of the DOS command interpreter.
          The Wizard script can then run as many applications as
          necessary, and finish by
          entering:     EXIT
          to leave the command interpreter (and hence also terminate
          Wizard).

          You can pass a complete command line with parameters to your
          application - for example, if you would normally start an

          application as:     program arg1 arg2 arg3
          then simply use:    WIZ script.scr program arg1 arg2 arg3



          2.  Script Files

          Normally, script files contain ordinary letters:  each letter
          is interpreted as the corresponding key on the keyboard.  Thus
          a
          script:      abc




          The HANDS ON  Wizard manual            Page 3


          would cause the keys 'a', 'b' and 'c' to be "typed".

          However, end-of-line is ignored in script files, so there
          needs to be some way to specify the <ENTER> key (and indeed
          the many other special keys that are not normal printable
          ASCII characters).  These are indicated by enclosing a
          description of the key inside '<' and '>'.

          A number of special keys are permitted.  Some examples
          follow:
          <Ctrl-@>        <X>             <Alt-180>       <Alt-P>
          <Ctrl-A>        <Y>             <Alt-181>       <Alt-Q>

          There is a complete list in Appendix A.

          These special keys must be entered exactly as shown (with the
          exception that case is not significant):  for example, Wizard
          will not recognize <Control-Up> or <Ctrl Up> - it must be
          <Ctrl-Up> or <ctrl-up> etc.

          There is no need to enclose normal printable characters within
          '<' and '>', although it is permitted. For example, the
          following two lines are equivalent:

              dir<enter>
              <d><i><r><enter>

          Two characters have a special meaning in script files:  '<'
          and '{'.  These must be written as <<> and <{> respectively.

          Blank spaces in script files will be "typed" as the <space>
          key whenever they appear.  This can be confusing if there is
          trailing white space at the end of a line, or if you leave a
          blank between two commands (see below).  The output of the
          SHOW command (again, see below) will make these space
          characters more obvious...



          2.1 Script Commands

          In addition to keys, Wizard provides a number of commands to
          do more exotic things such as checking for text on the screen
          so that the "typing" can be more intelligent.  You can use the
          cpscrn tool, PRTSCR (print screen), or we can provide other
          screen location and grabbing tools as needed.  Commands are
          enclosed in '{' and '}'.  The following commands are
          supported:






          The HANDS ON  Wizard manual            Page 4


          AFTER seconds Go to a label if timer has been running for more
          than a specified number of seconds.  For example, here is a
          script to wait until it finds C:\> in the bottom left corner
          of the screen, but with a timeout after 5.5 seconds:

               {zero}
               {label loop}
               {after 5.5 abort}
               {not_at (24,0) "C:\\>" loop}
               {label abort}

          Notice that the timer is zeroed before the start of the loop.


          AT (row, col) Go to a label if the text at a specified
          position on the screen matches.  Syntax is {at (line,column)
          "text" label}.  Line and column are numbered from 0.  The text
          to match is enclosed in quotes.  To match a double quote, use
          \".  To match a \, use \\.  For example, the following script
          waits until it finds C:\> or C:\DOS> in the bottom left corner
          of the screen:

               {label loop}
               {at (24,0) "C:\\>" root}
               {at (24,0) "C:\\DOS>" dos}
               {goto loop}

          (Naturally "root" and "dos" must be labels elsewhere in the
          script!)


          BEFORE time Go to a label if timer has been running for less
          than a specified number of seconds.  For example, to go to a
          label "loop" if the timer has been running less than 10
          seconds use:

              {before 10.0 loop}


          CUT Record the contents of the screen in a given location.
          The specified number of characters, starting at the specified
          location, will be saved for later playback using the "paste"
          command.  The syntax is:
              {cut buffer (line,col) number}

          Example:  {cut 1 (0,0) 20}

          to record 20 characters starting from the top left corner and
          store this in buffer number 1.  The number of buffers is
          limited;  currently it is 5 (0-4 inclusive).  Trailing spaces




          The HANDS ON  Wizard manual            Page 5


          are eliminated;  however, if the entire text is all spaces
          then a single space is retained.


          DISABLE Disable the keyboard, so that the user cannot
          interfere with what is happening.  The syntax is:  {disable}
          Make sure you call {enable} afterwards, or the user will be
          locked out!


          ENABLE Enable the keyboard, so that the user can type
          normally.  This is the default.  However, if the user types
          while Wizard is "typing" the result is likely to be
          confusion!  The syntax is:  {enable}


          END Terminate the "typing" of keys.  Interpretation of the
          script will just stop here.  This happens automatically at the
          end of the script, but saves using an artificial {goto end} if
          the end of the script is error handling code.  Example:  {end}


          GOTO Goto label.  Instead of moving on to the next key or
          command in the script, go to the specified label and continue
          from there.  For example, the following script will keep on
          "typing" dir<enter> indefinitely:

               {label loop}
               dir<enter>
               {goto loop}


          HOLD Hold shift keys.  Some applications (such as Hands On)
          check the status of various shift keys.  The possible shift
          keys are:  left, right, ctrl or control, alt, num (for
          numlock), scroll, caps and insert.  For example, to "hold
          down" left shift, right shift, control and alt, use:

                  {hold left right ctrl alt}

          This command does not change the status of any of the shifts
          that are not mentioned.  See "release" for key release.


          LABEL Record the position of a named label (see the other
          commands for uses).  For example, to create a label named
          "loop" use:

              {label loop}





          The HANDS ON  Wizard manual            Page 6


          Label names are case sensitive.

          Normally label names cannot be reused.  However, if the label
          name starts with a '$' character then the name can be reused,
          and any reference will be to the most recent label (or to the
          first one if no labels with this name have been encountered
          yet).


          NOT_AT Go to a label if the text at a specified position on
          the screen does not match.  Syntax is {not_at (line,column)
          "text" label}.  Line and column are numbered from 0.  The text
          to match is enclosed in quotes.  To match a double quote, use
          \".  To match a \, use \\.  For example, the following script
          waits until it finds C:\> in the bottom left corner of the
          screen:

               {label loop}
               {not_at (24,0) "C:\\>" loop}


          PASTE Play back the characters saved by the most recent "cut"
          command as if typed from the keyboard.  The syntax is:  {paste
          buffer}

          Example:  {paste 1}

          to paste back the contents of buffer 1.


          REBOOT Reboot the PC.  This is a drastic way to recover from
          an application that is not responding as expected!  Usage:
          {reboot}


          RELEASE Release shift keys.  This is the opposite of "hold";
          it releases the specified keys.  For example, to release num
          lock use:  {release num} This command does not change the
          status of any of the shifts that are not mentioned.  See
          "hold" for a list of the shift keys supported.


          RESULT Set the DOS result code.  This is used to return an
          "errorlevel" that can be used from a DOS batch file.  For
          example, to return a result code of 2 use:  {result 2}


          SPEED Set "typing" speed.  Normally, one key is "typed" every
          0.055 seconds, and this is the fastest possible speed.
          However, if your application requires slower typing, the gap




          The HANDS ON  Wizard manual            Page 7


          between characters can be set anywhere up to 14 seconds.  For
          example, to type at 4 keys per second, use:  {speed 0.25}


          WAIT Wait for X seconds (0 < X < 117,951,481).  For example,
          to pause for half a second, use:  {wait 0.5} Alternatively,
          wait for a given clock time.  For example, to wait until
          3:30:25 in the afternoon, use:  {wait 15:30:25}


          ZERO Zero timer (see the following commands for uses).  For
          example:

              {zero}



          2.2 An example

          Here is a real life example of a script file which will run
          Hands On (eg HO.exe) to retrieve a file automatically from a
          remote PC:

               {zero}
               {result 4}
               {label $wait}
               {after 60 continue}
               {not_at (24,0) "C:\\" $wait}

               {hold left right ctrl alt}
               {label $wait}
               {not_at (23,66) "Press key:       " $wait}
               {release left right ctrl alt}
               <pgdn>
               temp.dat<enter>

               {zero}
               {label $wait}
               {after 10 abort_start}
               {not_at (5,18) "File Transfer in Progress..." $wait}

               {label ok}
               {zero}
               {label $wait}
               {after 600 abort_mid}
               {at (0,73) "Partial" abort_no_file}
               {at (5,18) "File Transfer in Progress..." $wait}

               {result 0}
               {label continue}




          The HANDS ON  Wizard manual            Page 8


               {hold left right ctrl alt}
               {label $wait}
               {not_at (23,66) "Press key:    " $wait}
               {release left right ctrl alt}
               <F10>3
               {end}

               {label abort_start}
               {result 1}
               {zero}
               {label $wait}
               < >
               {at (4,0) "  Type <ESC> to continue:" escape}
               {at (5,18) "File Transfer in Progress..." ok}
               {after 10 continue}
               {goto $wait}
               {label escape}
               <esc>
               {goto continue}

               {label abort_mid}
               {result 2}
               1
               {zero}
               {label $wait}
               {at (2,0) "  Remove incomplete" yes}
               {after 5 continue}
               {goto $wait}
               {label yes}
               y
               {goto continue}

               {label abort_no_file}
               {result 3}
               1
               {goto continue}

          Now the same script with an explanation:

          Start by waiting for Hands On (HO) to dial, establish a link,
          take control of the remote PC, and transmit the screen of the
          remote PC.  The remote PC is assumed to be at the DOS command
          line prompt, and this prompt is assumed to be at the bottom
          left corner of the screen.

               {zero}

          Zero timer so that the "after" command will work correctly.

               {result 4}




          The HANDS ON  Wizard manual            Page 9


          If a timeout occurs, then we want to return errorlevel 4 to
          DOS.

               {label $wait}

          Use a reusable label name (purely to save needing to invent a
          whole lot of unique label names).

               {after 60 continue}

          If the desired text does not appear within 60 seconds then
          give up.

               {not_at (24,0) "C:\\" $wait}

          If the desired text has not yet appeared then go back to the
          start of the loop.

          Bring up HO's local menu, select a file transfer, and specify
          the name of the file.

               {hold left right ctrl alt}

          To get HO's attention, all four shift keys must be held down
          at one time.

               {label $wait}
               {not_at (23,66) "Press key:  " $wait}

          Loop until the local menu appears...

               {release left right ctrl alt}

          No need for the shift keys any more.

               <pgdn>

          Select a file download.

               temp.dat<enter>

          Specify the name of the file to be downloaded.

          Wait for the file transfer to commence.

               {zero}
               {label $wait}
               {after 10 abort_start}

          If it takes more than 10 seconds then something has gone badly




          The HANDS ON  Wizard manual            Page 10


          wrong, so give up!

               {not_at (5,18) "File Transfer in Progress..." $wait}

          Wait for the file transfer to complete.

               {label ok}

          This label is so we can resume if we find we can during error
          processing.

               {zero}
               {label $wait}
               {after 600 abort_mid}

          If the file transfer has taken more than 10 minutes then give
          up and abort it.

               {at (0,73) "Partial" abort_no_file}

          If the file did not exist (and hence could not be downloaded)
          then give up.

               {at (5,18) "File Transfer in Progress..." $wait}

          Keep waiting as long as the transfer is happening.

          Success!  The file transfer has completed.  Terminate the
          session.

               {result 0}
          Return a success errorlevel to DOS.

               {label continue}

          Resume here after error processing.

               {hold left right ctrl alt}
               {label $wait}
               {not_at (23,66) "Press key:    " $wait}

          Get into HO's local command menu.

               {release left right ctrl alt}
               <F10>3

          Exit and hang up.

               {end}





          The HANDS ON  Wizard manual            Page 11


          Stop here (just in case HO takes a moment to terminate, so
          that we don't go on and start typing any of the error
          processing stuff).

          The file transfer never got started.

               {label abort_start}
               {result 1}
               {zero}
               {label $wait}
               < >

          The space key (actually any key would do) causes HO to give up
          waiting for the transfer to commence.

               {at (4,0) "  Type <ESC> to continue:" escape}

          This is part of the message HO gives when a transfer was
          aborted this way...

               {at (5,18) "File Transfer in Progress..." ok}

          We were just too impatient!  The transfer has started after
          all.  Resume normal operations.

               {after 10 continue}

          If there is no response then try to see if we can terminate
          anyway...  (hopefully this would never be required)

               {goto $wait}
               {label escape}
               <esc>
               {goto continue}

          The file transfer took too long (presumably due to data
          transmission errors).

               {label abort_mid}
               {result 2}
               1
          Option 1 tells HO to abort the transfer.

               {zero}
               {label $wait}
               {at (2,0) "  Remove incomplete" yes}
          HO should ask if we want to remove the incomplete file (which
          we do).

               {after 5 continue}




          The HANDS ON  Wizard manual            Page 12


          If no response after 5 seconds then try to abort anyway...

               {goto $wait}
               {label yes}
               y
               {goto continue}

          The file did not exist on the remote PC.

               {label abort_no_file}
               {result 3}
               1
          Abort the transfer, then terminate HO.

               {goto continue}

          If a script file contains any error, then Wizard will reject
          it and immediately return an errorlevel of 255.  Use SHOW to
          help locate the cause of the error (look for SHOW below ).


          3.  Using Wizard with Batch Files

          Because Wizard can return an errorlevel for DOS, it is
          possible for a batch file to determine what went on during a
          Wizard (wiz.exe) session.  For example, here is a batch file
          that might be used with the example Hands On (ho.exe) file
          transfer above:

               @echo off
               WIZ sample.scr HO.exe site.HO
               if errorlevel 255 goto bad_script
               if errorlevel 4 goto no_HO
               if errorlevel 3 goto abort_no_file
               if errorlevel 2 goto abort_mid
               if errorlevel 1 goto abort_start
               echo Success!
               goto done
               :bad_script
               echo Bad Wizard script
               goto done
               :no_HO
               echo Could not establish HO link
               goto done
               :abort_no_file
               echo Aborted due to file not found
               goto done
               :abort_mid
               echo Aborted mid-file
               goto done




          The HANDS ON  Wizard manual            Page 13


               :abort_start
               echo Aborted before starting transfer
               goto done
               :done


          4.  SHOW - debugging scripts

          SHOW is a program to assist with debugging Wizard scripts.
          Usage is SHOW <script file name>

          For example, given the following script in a file SAMPLE.SCR:

               {label loop}{not_at (24,0) "C:\\>" loop}

          the command:  show sample.scr would produce the output:

               {label loop}
               {not_at (24,0) "C:\\>" loop}

          SHOW is useful for locating errors in script files.  For
          example, given the following script:

               {zero}
               {label loop}
               {aftera 5.5 abort}
               {not_at (24,0) "C:\\>" loop}
               {label abort}


          SHOW would produce the output:

               unknown command: 'aftera'

               Script file:

               {zero}
               {label loop}

               Error in script file!


          As another example, given the script:

               {zero}
               {label loop}
               {after 5.5 abort}
               {not_at (24,0) "C:\\>" loop}
               {label loop}





          The HANDS ON  Wizard manual            Page 14


          SHOW would produce the output:

               duplicate label 'loop'

               Script file:

               {zero}
               {label loop}
               {after 5.49 }
               {not_at (24,0) "C:\\>" loop}

               Error in script file!

          Observe that in all cases SHOW stops at the first error it
          finds, tells you what the error was, and then lists everything
          up to the position at which the error occurred.



          5.  Feeding the Wizard

          The Wizard feeder feeds text file information into wizard
          script files.  For example if you have a file containing a
          list of (lets call it a response file and give it the name
          TRANSFER.TEL) a number of other files to be transferred to
          another machine as in:

          \BACKUP\BACKUP.1
          \OTHER\OR\SOMEFILE
          \ORIG\WORKFILE

          or if you produced it with the telemenu program, the
          file might look like:

          [TRANSFER]
          \BACKUP\BACKUP.DAT
          \OTHER\OR\SOMEFILE
          \ORIG\WORKFILE
          ; The NAMES and ADDRESS dBase databases will
          ; be moved to D:\STORAGE\
          [MOVE D:\STORAGE\]
          NAMES.DBF
          ADDRESS.DBF

          The [transfer] is used to separate the file transfer section
          from possible copy, move, delete sections that can be
          automatically created using the telemenu.

          You can use the feeder to read in the individual lines from
          the response file and insert the lines in a specified Wizard




          The HANDS ON  Wizard manual            Page 15


          script file, so the Wizard will use the inserted information.
          The feeder runs the Wizard with the altered script file for
          each line in the response file, then restores the original
          script file when the job is done.  This gives you the
          capability to produce and use dramatically simpler Wizard
          script files.  It also give you the capability to transfer any
          number of files from anywhere on one computer system to
          another.

          The following script file was taken from an earlier example,
          with 'temp.dat' replaced by 'DUMMY_VALUE'.  Given the correct
          instructions the feeder will replace DUMMY_VALUE with each
          line, one at a time, from the response file and run the Wizard
          on the altered script file.

          The dummy_value replacement is case sensitive.  Be careful
          with your upper and lower case usage.


               {hold left right ctrl alt}
               {label $wait}
               {not_at (23,66) "Press key:       " $wait}
               {release left right ctrl alt}
               <pgdn>
               DUMMY_VALUE<enter>

               {zero}
               {label $wait}
               {after 10 abort_start}
               {not_at (5,18) "File Transfer in Progress..." $wait}

          You provide setup and runtime instructions to the Wizard
          feeder in two places.

          1 The Feeder uses the TELE.INI configuration file, as repeated
          below:

          [CONTROLLER]          ; The feeder uses the [controller] section
          RUN  WIZ sample.scr   ; run wiz.exe with the sample.scr
          FILE sample.scr       ; Confirms the file name
          EXCHANGE dummy_value  ; the value to be replaced
          RESPONSE transfer.tel ; the name of the response file
          CHDIR yes             ; change directories as it runs
          ERROR 2               ; quit on DOS error code number 2

          The feeder will actually run 'wiz sample.scr' with the changed
          'sample.scr'.  It does not check that the file names
          (sample.scr here) are the same in the two places.

          The other different item is 'CHDIR', which is a switch to




          The HANDS ON  Wizard manual            Page 16


          change directories as the feeder runs.  You can enter YES or
          NO.  If you enter YES the feeder strips the directory names
          from file names and itself changes to the directories.  So
          \SOMEDIR\backup_file is fed to the Wizard as just
          'backup_file' in the script file while the feeder is in the
          \SOMEDIR directory.  There is no command line equivalent to
          'CHDIR'.


          2 The Feeder uses command line parameters or instructions, as
          show below:

             Usage is: ' WIZFEED   -I -D -R -S -Q## -H ? '

              -Ifile  for an alternate .Ini file.  TELE.INI is the default.
              -D      Dummy_value to be exchanged in the script file.
              -Rfile  alternate Response file name.
              -S      to Swap WIZFEED to disk before running other software.
              -Q#     Quit on DOS error number.  DOS returns 0-255.
              -H or ? this Help or usage.

          -Isome_file is used to replace the TELE.INI with some other
          'some_file' setup file.

          -DEXCHANGE_VALUE allows you to over-ride the value given in
          the TELE.INI setup file.

          -Rsome_name tells the feeder to over-ride the file name in the
          TELE.INI setup file with the response file name provided.

          -S tells the feeder to swap all but 2k of itself out of memory
          before running the Wizard, or other, program.

          -Q23 would tell the feeder to quit if it received a DOS error
          code of 23 after running the Wizard.  The default value is
          300.

          -H or ?  are used to display the usage on screen.



          6.  The Apprentice

          The Wizard's Apprentice is designed to be a kinder, gentler,
          bigger, and dumber, variant of the Wizard.  It is also
          designed to run on machines that lock up running the Wizard.
          Some software corrupts a machine's innards enough that even
          keyboard diagnostic software will lock-up the machine.  The
          current version of the APPrentice (app.exe) is a true TSR, or
          resident, program.




          The HANDS ON  Wizard manual            Page 17


          Some features:

          - More flexibility looking for a specified string.
          Anywhere on a row, or on the screen.
          - Ability to change scripts on the fly.
          - Ability to run multiple programs from one script.


          Its command line usage follows:

          Usage: APP  -C -D9 -E -H -M9999 -Pscript -TS ? -U

          -C       Clock time
          -D9999   Delay time
          -E       add an Enter or return to each line
          -H or ?  Help as seen here
          -M9999   runtime Memory bytes
          -Rsome   Run some program, up to 15 characters
          -Sfile   use the Script file
          -TS      Timer Seconds instead of milliseconds
          -U       Unload the program from memory

          Unload hotkey  leftshift-rightshift-U

          However, the APPrentice is not included in the current
          release, but is available on request.  We are comtemplating
          merging it into a future release of the Wizard instead of
          introducing more tools.  Yell for it if you have registered
          the product and need it.



          7.  SUPPORT and the ASP

          Please consider reporting the circumstances, preferably in
          written form, to technical support when you discover problems
          with the software.

          Its not a good idea to compress the Hands On .EXEs.  If you
          have used pklite or diet or something similar on them, please
          replace the .EXE's with the original versions.

          For technical support, either call (604) 433-5189, or write to
          Suite 606 - 6455 Willingdon Avenue, Burnaby, British Columbia,
          Canada, V5H 4E4.  Both registered and soon to be registered
          users currently get the same support without any arbitrary
          time limit.  You may also try leaving a Compuserve message at
          75020, 2664, but be aware that messages rapidly 'scroll off'
          Compuserve.  The best electronic message area (also available
          from Compuserve) is via the internet at:




          The HANDS ON  Wizard manual            Page 18


          INTERNET:vic_williams@mindlink.bc.ca.

          P. C. Softsmith
          Suite 606 6455 Willingdon Ave
          Burnaby, B. C., Canada
          V5H 4E4

          ASP Introduction:

          Please also carefully read the accompanying SHR_WARE.DOC
          document.

          "This program is produced by a member of the Association of
          Shareware Professionals (ASP).  ASP wants to make sure that
          the shareware principle works for you. If you are unable to
          resolve a shareware-related problem with an ASP member by
          contacting the member directly, ASP may be able to help.  The
          ASP Ombudsman can help you resolve a dispute or problem with
          an ASP member, but does not provide technical support for
          members' products.  Please write to the ASP Ombudsman at 545
          Grover Road, Muskegon, MI 49442 or send a CompuServe message
          via CompuServe Mail to ASP Ombudsman 70007,3536."


          Warranty

          THE DOCUMENTATION AND ASSOCIATED SOFTWARE ARE DISTRIBUTED AND
          SOLD WITH NO WARRANTIES, EITHER EXPRESS OR IMPLIED, REGARDING
          ITS MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE.
          THE INFORMATION IN THIS DOCUMENTATION IS SUBJECT TO CHANGE
          WITHOUT NOTICE AND DOES NOT REPRESENT A COMMITTMENT ON THE
          PART OF THE VENDOR.

          OTHER PRODUCT AND BRAND NAMES MENTIONED ARE TRADEMARKS OR
          REGISTERED TRADEMARKS OF THEIR RESPECTIVE HOLDERS.  FOR
          INFORMATION ONLY, PORTIONS OF THIS DOCUMENT AND THE SOFTWARE
          ARE LICENSED COPYRIGHT MATERIAL COURTESY DOUGLAS THOMSON.

          Portions of this document and associated documents and
          software are Copyright (C)1994 P. C. Softsmith All Rights
          Reserved.


          Appendix A - Special keys

          These special keys must be entered exactly as shown (with the
          exception that case is not significant):  for example, Wizard
          will not recognize <Control-Up> or <Ctrl Up> - it must be
          <Ctrl-Up> or <ctrl-up> etc.





          The HANDS ON  Wizard manual            Page 19


               <Ctrl-@>        <X>             <Alt-180>       <Alt-P>
               <Ctrl-A>        <Y>             <Alt-181>       <Alt-Q>
               <Ctrl-B>        <Z>             <Alt-182>       <Alt-R>
               <Ctrl-C>        <[>             <Alt-183>       <Alt-S>
               <Ctrl-D>        <\>             <Alt-184>       <Alt-T>
               <Ctrl-E>        <]>             <Alt-185>       <Alt-U>
               <Ctrl-F>        <             <Alt-186>       <Alt-V>
               <Ctrl-G>        <_>             <Alt-187>       <Alt-W>
               <Ctrl-H>        <`>             <Alt-188>       <Alt-X>
               <BackSpace>     <a>             <Alt-189>       <Alt-Y>
               <Ctrl-I>        <b>             <Alt-190>       <Alt-Z>
               <Tab>           <c>             <Alt-191>       <F1>
               <Ctrl-J>        <d>             <Alt-192>       <F2>
               <Ctrl-K>        <e>             <Alt-193>       <F3>
               <Ctrl-L>        <f>             <Alt-194>       <F4>
               <Ctrl-M>        <g>             <Alt-195>       <F5>
               <Enter>         <h>             <Alt-196>       <F6>
               <Ctrl-N>        <i>             <Alt-197>       <F7>
               <Ctrl-O>        <j>             <Alt-198>       <F8>
               <Ctrl-P>        <k>             <Alt-199>       <F9>
               <Ctrl-Q>        <l>             <Alt-200>       <F10>
               <Ctrl-R>        <m>             <Alt-201>       <F11>
               <Ctrl-S>        <n>             <Alt-202>       <F12>
               <Ctrl-T>        <o>             <Alt-203>       <Shift-F1>
               <Ctrl-U>        <p>             <Alt-204>       <Shift-F2>
               <Ctrl-V>        <q>             <Alt-205>       <Shift-F3>
               <Ctrl-W>        <r>             <Alt-206>       <Shift-F4>
               <Ctrl-X>        <s>             <Alt-207>       <Shift-F5>
               <Ctrl-Y>        <t>             <Alt-208>       <Shift-F6>
               <Ctrl-Z>        <u>             <Alt-209>       <Shift-F7>
               <Ctrl-[>        <vq>            <Alt-210>       <Shift-F8>
               <Esc><w>                        <Alt-211>       <Shift-F9>
               <Ctrl-\>        <x>             <Alt-212>       <Shift-F10>
               <Ctrl-]>        <y>             <Alt-213>       <Shift-F11>
               <Ctrl-        <z>             <Alt-214>       <Shift-F12>
               <Ctrl-_>        <{>             <Alt-215>       <Ctrl-F1>
               < >             <|>             <Alt-216>       <Ctrl-F2>
               <!>             <}>             <Alt-217>       <Ctrl-F3>
               <">             <~?             <Alt-218>       <Ctrl-F4>
               <#>             <Alt-127>       <Alt-219>       <Ctrl-F5>
               <$>             <Alt-128>       <Alt-220>       <Ctrl-F6>
               <%>             <Alt-129>       <Alt-221>       <Ctrl-F7>
               <&>             <Alt-130>       <Alt-222>       <Ctrl-F8>
               <'>             <Alt-131>       <Alt-223>       <Ctrl-F9>
               <(>             <Alt-132>       <Alt-224>       <Ctrl-F10>
               <)>             <Alt-133>       <Alt-225>       <Ctrl-F11>
               <*>             <Alt-134>       <Alt-226>       <Ctrl-F12>
               <+>             <Alt-135>       <Alt-227>       <Alt-F1>
               <,>             <Alt-136>       <Alt-228>       <Alt-F2>
               <->             <Alt-137>       <Alt-229>       <Alt-F3>




          The HANDS ON  Wizard manual            Page 20


               <.>             <Alt-138>       <Alt-230>       <Alt-F4>
               </>             <Alt-139>       <Alt-231>       <Alt-F5>
               <0>             <Alt-140>       <Alt-232>       <Alt-F6>
               <1>             <Alt-141>       <Alt-233>       <Alt-F7>
               <2>             <Alt-142>       <Alt-234>       <Alt-F8>
               <3>             <Alt-143>       <Alt-235>       <Alt-F9>
               <4>             <Alt-144>       <Alt-236>       <Alt-F10>
               <5>             <Alt-145>       <Alt-237>       <Alt-F11>
               <6>             <Alt-146>       <Alt-238>       <Alt-F12>
               <7>             <Alt-147>       <Alt-239>       <Alt-1>
               <8>             <Alt-148>       <Alt-240>       <Alt-2>
               <9>             <Alt-149>       <Alt-241>       <Alt-3>
               <:>             <Alt-150>       <Alt-242>       <Alt-4>
               <;>             <Alt-151>       <Alt-243>       <Alt-5>
               <<>             <Alt-152>       <Alt-244>       <Alt-6>
               <=>             <Alt-153>       <Alt-245>       <Alt-7>
               <>>             <Alt-154>       <Alt-246>       <Alt-8>
               <?>             <Alt-155>       <Alt-247>       <Alt-9>
               <@>             <Alt-156>       <Alt-248>       <Alt-0>
               <A>             <Alt-157>       <Alt-249>       <Alt ->
               <B>             <Alt-158>       <Alt-250>       <Alt =>
               <C>             <Alt-159>       <Alt-251>       <Up>
               <D>             <Alt-160>       <Alt-252>       <Down>
               <E>             <Alt-161>       <Alt-253>       <Left>
               <F>             <Alt-162>       <Alt-254>       <Right>
               <G>             <Alt-163>       <Alt-255>       <PgUp>
               <H>             <Alt-164>       <Ctrl-Break>    <PgDn>
               <I>             <Alt-165>       <Alt-A>         <Ins>
               <J>             <Alt-166>       <Alt-B>         <Del>
               <K>             <Alt-167>       <Alt-C>         <Home>
               <L>             <Alt-168>       <Alt-D>         <End>
               <M>             <Alt-169>       <Alt-E>         <Ctrl-Up>
               <N>             <Alt-170>       <Alt-F>         <Ctrl-Down>
               <O>             <Alt-171>       <Alt-G>         <Ctrl-Left>
               <P>             <Alt-172>       <Alt-H>         <Ctrl-Right>
               <Q>             <Alt-173>       <Alt-I>         <Ctrl-PgUp>
               <R>             <Alt-174>       <Alt-J>         <Ctrl-PgDn>
               <S>             <Alt-175>       <Alt-K>         <Ctrl-Home>
               <T>             <Alt-176>       <Alt-L>         <Ctrl-End>
               <U>             <Alt-177>       <Alt-M>
               <V>             <Alt-178>       <Alt-N>
               <W>             <Alt-179>       <Alt-O>

          Note that these special keys must be entered exactly as shown
          (with the exception that case is not significant):  for
          example, Wizard will not recognize <Control-Up> or <Ctrl Up> -
          it must be <Ctrl-Up> or
           <ctrl-up> etc.






          The HANDS ON  Wizard manual            Page 21


          Appendix B - Acknowledgments and history

          This product has been developed with the co-operation of the
          author, and a proportion of each registration is being
          forwarded to the primary author Douglas Thomson.

          A brief history:

          May, 1994  Reworked documentation and product name.  Ver. 1.6
          24-Nov-93  made cut eliminate trailing spaces.  Ver. 1.6
          19-May-93  added enable and disable keyboard functions
          15-Jun-92  initial release.  Version 1.0


          Appendix C - ShareWare Vendor Notice (if any)

          If you are a shareware vendor, please feel free to replace
          this with your standard notice.




































