/* 4/19/88 Beta version 1.0   */

                  Scrivener -- a keyboard macro program.
                            Beta Version 1.0
                      Copyright 1988 by Ken Howell.


ACKNOWLEDGMENTS:

   I relied heavily on the source code to Mach1.6 in the preparation of this
program.  Some of the input.event routines are taken directly from Mach1.6.
They have been used with the express permission of the author of Mach, Brian
Moats.  Without that assistance, this program would not have been completed.
For that matter, it may never have been started!  Thanks, Brian!

DISTRIBUTION:

   Freely redistributable if original archive is distributed unaltered.  No
for profit distribution without the author's express consent in writing.
No commercial use without the author's express consent in writing.  No
charge may be made for redistribution, other than a charge limited to
reimbursement for media.


DESCRIPTION:

   Scrivener is a program which "records" keystrokes and plays them back
upon command.  Up to 512 keystrokes can be assigned to any key on the
keyboard, including the keypad.

   Named after the hapless scribes of times past, Scrivener copies
characters upon command.


INVOCATION:

   Scrivener must be run from the cli.  Format is "Scrivener".
No command line options are recognized in this version.  Future command line
options with allow user definition of keystroke buffers, and loading of
previous recording sessions.

CAVEATS:

   This version of Scrivener does very little error checking.  Backup early
and often!  The only way to quit Scrivener in this version is to re-boot
the machine.  I've used this version extensively, though, and have not found
it to guru the machine, or do any other nasty things like that.

OPERATION:

   Scrivener is invoked with the "alt = " combination.  (Pressing one of the
alt keys and the equals key at the same time.)  The keystroke
immediately following "alt = " is the key to be defined.  That key will not
be echoed to the screen, but is removed from the input stream.  All
subsequent keystrokes will be recorded, until "alt = " is again struck.  The
second "alt = " terminates the recording session for that key.

   Playback is accomplished by "alt <key>."

   Two special keys are recognized during a recording session.  "Alt ["
signals the start of a variable text field. All text following "alt [" is
echoed, but not recorded.  "Alt [" terminates the variable field, but does
not terminate the recording session.  The recording session continues until
the "Alt =" is struck for the second time.  Upon playback, the user may
enter any number of keystrokes in the variable field.  When finished
entering text in the variable field, the return key will resume playback.

   During a recording session, "alt ` " (the tilde key) begins a fixed
field.  Keystrokes following "alt ` " are echoed, but not recorded.  The
number of keystrokes, though, is stored.  "Alt ` " also shuts off the fixed
field.  Upon playback, Scrivener waits for the appropriate number of
keystrokes to be entered, and then automatically continues with playback.

   Any combination or multiple of fields may be recorded per string assigned
to a key.


EXAMPLES:

(recording session)

"alt = " k This is a test <return>"alt = "

(playback)

"alt k"

[Scrivener responds]

This is a test

(recording)

"alt = " k This is the "alt ` " 23 "alt `" test "alt = "

(playback)

"alt k"

[Scrivener responds]

This is the [pause for entry of 2 keys] test

(recording)

"alt = " k This is a variable field "alt [ " 123 "alt [ " example "alt = "
(playback)
 CÄÖ‚é"

[Scrivener responds]

This is a variable field [entry of any # of keys] example


MEMORY USAGE:

   Scrivener uses 1040 bytes per recorded string.  If text is assigned to a
key, and that key is again invoked with no text, the memory allocated for
the string will be relinquished.  Thus, if "alt k" has text assigned to it,
the "alt = k alt =" combination will remove the text and clear the memory
allocated for that key.


RE-ENTRANCE:

   Scrivener does not fully allow re-entrance (using one recorded key to
invoke another recorded key).  If the called key is the last text to be
played out, things seem to work fine.  All text assigned to the calling key
after the called key plays out seems to be lost.  It doesn't crash the
machine, but is still a problem.

KNOWN PROBLEMS:

   Re-entrance is not fully working.  Removal of Scrivener is accomplished
by warm booting your machine.  It helps to clear memory fragmentation
anyhow! :-)

BUG REPORTS:

   Please report any bugs, or comments, flames, etc. to:

      Ken C. Howell
      One Shot Electronics
      P.O. Box 1202
      Boise, ID  83701

            or

      Plink "khowell"
      Bix   "khowell"

BETA VERSION:

   This is a beta version of Scrivener.  A number of features are yet to be
added, but I wanted some feedback on the current state of affairs.  I would
appreciate whatever comments, etc. that you may have.
