[comp.binaries.ibm.pc] v01i148: autokey, feeds keystrokes to keyboard from file

cgs@umd5.umd.edu (Chris Sylvain) (02/17/89)

Posting-number: Volume 01 Issue 148
Originally-from:  PCResource Magazine <no email address>
Submitted-by: cgs@umd5.umd.edu (Chris Sylvain)
Archive-name: autokey/autokey.uue

AUTOKEY.COM and KEYCODE.EXE are programs written by Hardin Brothers for
PCResource Magazine January 1989.

The entire contents of the January 1989 issue of PCResource is
            (c) Copyright 1988 by IDG Communications/Peterborough, Inc.

Hardin Brothers is PCResource's West Coast editor.

AUTOKEY performs a similar function as the program I've heard of called
KEYFAKE.  Basically, it stuffs the DOS keyboard buffer with keycodes
you've put in a "script" file.  A program must be "well-behaved" with
respect to keyboard input to work with AUTOKEY -- MSKERMIT is a good
example of a program which is well-behaved.  A sample key-script file
is included.

Chris Sylvain
ARPA: cgs@umd5.UMD.EDU     BITNET: cgs%umd5@umd2
UUCP: ..!uunet!umd5.umd.edu!cgs

[
Seems to work.

Assembly source is included for both autokey and keycode.

Checksums obtained with the 4.3BSD "sum" or System V "sum -r" command.

checksum     size (bytes)  file (between BEGIN--cut and END--cut lines)
   33536        16232      this uuencoded posting

checksum     size (bytes)  file
   51042        11760      autokey.arc

-- R.D.
]

BEGIN--cut here--cut here
begin 644 autokey.arc
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
/A(]/$_F7E+C@J4W4`!H`
`
end
END--cut here--cut here