Dec 142017
TSR enhances keyboard INT 9 to allow 35 more keystrokes.
File ENHKBD.ZIP from The Programmer’s Corner in
Category Utilities for DOS and Windows Machines
TSR enhances keyboard INT 9 to allow 35 more keystrokes.
File Name File Size Zip Size Zip Type
ENHKBD.CIS 449 317 deflated
ENHKBD.COM 2639 1591 deflated
ENHKBD.DOC 23925 7741 deflated
KEYCHK.EXE 12788 7455 deflated

Download File ENHKBD.ZIP Here

Contents of the ENHKBD.DOC file

EnhKbd version 1.00
Copyright 1989 by Peter N. Howells
4600 Mira Loma Drive, Ste. 7G
Reno, Nevada 89502
CIS # 72770,3103

Jeff Prosise of PC Magazine has made the inference that nobody at
IBM can type. (PC Mag., Apr. 26, 1988, pg 233) We must make the
inference that additionally nobody at IBM even uses the keyboards
they design (do they even use the computers?). Nine years after
they introduced the PC they still do not allow us to use the Center
Key on the numeric keypad (the 5-key, with NumLock On, yes; but not
the Center Key, with NumLock Off).

With the introduction of the "enhanced" 101-key keyboard IBM
upgraded the ROM BIOS of the AT to include support for the F11 and
F12 keys and for the previously unsupported Ctrl and Alt Cursor key
combinations; BUT there is still no support for the unshifted,
NumLock Off, Center Key (or Ctrl-Center or Alt-Center)!

More important to those of us who cling tenaciously to our 8088
based machines is the fact that 3rd party vendors such as
KeyTronics and Northgate have developed 101-key keyboards which can
be used on PCs, XTs, and/or ATs. Unfortunately the fact that these
keyboards are plugged in and functioning does not implement the
improved BIOS support for them.

EnhKbd is an attempt to rectify these problems. EnhKbd consists
of two programs, ENHKBD.COM and KEYCHK.EXE. ENHKBD is a short
(less than 1K when installed) Terminate and Stay Resident (TSR)
program which enhances the hardware keyboard interrupt, int 9, by
enabling 35 keystrokes (see the table on pg. 5) which are not
supported by the ROM BIOS keyboard interrupt. KEYCHK allows you
to press any key and have the system tell you which key it thinks
was pressed; ie, it allows you to test the functioning of your
keyboard before and after ENHKBD is installed; if ENHKBD is
installed, KEYCHK will display the current status of the resident
portion of ENHKBD.

ENHKBD attempts to implement the newly supported keystrokes for the
101-key keyboard in addition to enabling the Center Key without the
necessity of upgrading your ROM chips.

One minor difference between ENHKBD and the BIOS is that it does
not "beep" when it fills the keyboard buffer; it just discards the
keystroke (as does the BIOS) and exits quietly.

Before proceeding any further, it should be pointed out that the
keyboard processing on a PC/XT/AT is extremely intricate and
detailed. Reference is made to various aspects of this processing

in this document. It is NOT necessary that you understand all of
this in order to use these programs. The information about 'scan
codes', 'interrupt 9', 'ROM BIOS', etc. is presented for those who
are interested; those of you who think that it is all Greek may
safely ignore it.

The important part of this document is the information that:
1. many new programs allow themselves to be customized with your
own preferred key combinations.
2. there are quite a few keystrokes (mostly involving the cursor
keys) which are ignored by PC/XT (and many AT) type computers.
3. the use of ENHKBD can make these keystrokes available to you.

Therefore, what you need to get out of this document is the
information as to which keys the ENHKBD can give you and how to run
the program so they are available.


We use Borland's Turbo C for most of our programming. We also use
Borland's Sidekick Plus (SKP) which, among many other things,
provides keyboard support for most (if not all) of the keys
supported by ENHKBD.

Since Turbo C's editor uses a WordStar-like command set (which we
can't stand) and allows the command set to be customized, we
completely redid the commands for the editor making extensive use
of the Center Key (allowed since we had SKP installed). Recently
we obtained a ShareWare program by Innovative Data Concepts called
SWAPSP which reduces the memory required by SKP from about 72K down
to about 9K! by swapping the resident portion of SKP to the hard

Unfortunately, when we installed SWAPSP (which works beautifully),
we lost the support for the Center Key provided by SKP. Since we
didn't want to give back the 63K of memory which SWAPSP had given
us and we certainly didn't want to redo (and relearn) the Turbo C
editor command set, we wrote ENHKBD which, in our XT compatible,
uses only 784 bytes of memory when resident and gives our key(s)
back to us again.


ENHKBD & KEYCHK require an IBM PC/XT/AT or true compatible running
MS/PC-DOS 2.0 or later. (Is ANYBODY still using DOS 1.x?)


As is the case with any TSR program, ENHKBD cannot be expected to
be compatible with all applications or all other TSR programs. If
you experience difficulties, try rearranging the order in which you

load your TSR programs. We load ENHKBD as the 7th of 16 TSR
programs (it is the first one loaded which intercepts interrupt 9,
though). We have also tried loading it just before SWAPSP (which
our last TSR) and have not had problems; otherwise we have not done
a lot of fooling around with TSR loading order.


ENHKBD is designed to implement most of the additional keystrokes
which are supported by the enhanced 101-key keyboard BIOS routines
in the newer IBM machines.

ENHKBD was written on and for a PC/XT machine. When an enhanced
keyboard is used with a PC/XT, the keyboard is not as "smart" as
when it is attached to an AT. For example, the enhanced keyboard
attached to an AT will report different scan codes for the left and
right Ctrl keys and for the left and right Alt keys; it reports the
same scan codes for both keys of a pair to a PC/XT, however.

Therefore, ENHKBD is not intended to duplicate the functions of the
new BIOS routines; it enables the reporting of keystrokes to DOS
which are otherwise unavailable from the BIOS. This means that the
new interrupt 16h functions (10h, 11h, & 12h) are not used nor is
any attempt made to implement them. The DOS Data Area, in low
memory, is not updated at all by ENHKBD.

The syntax for running ENHKBD.COM is:

ENHKBD [?] [D] [R] [[-]A] [[-] [...]]

? ==> display program help
D ==> Deactivate the program entirely
R ==> Reactivate the program (after deactivating it)
-A ==> deactivate All keys
A ==> re-enable All keys after deactivate them
-C ==> deactivate the alt-Cursor keys
C ==> reactivate the alt-Cursor keys
- ==> deactivate a specific key
==> reactivate a specific key after disabling

To install ENHKBD as a memory resident program, enter "ENHKBD",
followed by any parameters which you may want to use, from the DOS
prompt or (better) from your AUTOEXEC.BAT file. The alphabetic
parameters, "D", "R", "A", and "C" may be entered as either upper
or lower case letters. The parameters must be separated from the
"ENHKBD" command and each other by at least one space or tab

After ENHKBD has been installed in memory you may re-enter the
command with or without parameters. It will not allow itself to
be re-installed. It cannot be removed from memory without
rebooting or the use of a TSR manager program. Entering "ENHKBD"

without parameters will simply display the program name and a
message that it is resident in memory and then exit. The
parameters are discussed in detail below.

"?": Displays a detailed Help screen which summarizes the
following discussion and includes a table of the keys
which are supported by ENHKBD and which indicates the
current status of the keys. [ This parameter will
prevent the program from installing itself as memory
resident. An exit code of 2 is returned to DOS. ]

"D": Deactivates the functioning of the program entirely. It
remains resident in memory but it does not do anything
except pass control to the previous interrupt 9 handler.
If you want to disable the additional key support
temporarily, using the "D" parameter will allow your
system to function the same (and virtually as fast) as
if ENHKBD were not present at all.

"R": Reactivates the program after you have deactivated it
with the "D" parameter. After using the "R" parameter
the program will resume functioning exactly as it did
before you used the "D" parameter. By default, when the
program is loaded into memory, it is active; once it is
memory resident, there is no default.

"-A": Deactivates all keys supported by the program. This is
different than the "D" parameter. When "-A" is used, the
program continues to function normally EXCEPT for the
fact that, when it detects a keystroke, it thinks that
it does not support the key and asks the system to
respond to it. This is useful when used in conjunction
with the parameter, discussed below.

"A": Reactivates all keys supported by the program. Again,
this is different from the "R" parameter. When "A" is
used, the program continues to function as before EXCEPT
its knowledge of the supported keys is fully reinstated.
The "A" parameter can be used before or after the "-A"
parameter is used.

{ What happens when you follow "D" by "A", for
example, will be discussed after the
parameter is explained. }

"-C": Deactivates all of the Alt-Cursor keys. Similar to "-A"
except only the Alt-Cursor (and Alt-Insert) keystrokes
are affected. Allows the Numeric Keypad to be used with
the Alt-key to enter any character from the keyboard
while maintaining support for the other keys which are
processed by ENHKBD.

"C": Reactivates all of the Alt-Cursor keys. Similar to "A"
except only the Alt-Cursor (and Alt-Insert) keystrokes
are affected.

"-": Deactivates a specific key which is supported by the
program: the one identified by 'keynum'. By default, when the
program is loaded into memory, all supported keys are active;
once the program is memory resident, there is no default.

The table below shows all of the keys which ENHKBD supports
and the 'keynum' associated with each of those keys:

key: no-shift shift ctrl alt
------ -------- ----- ---- ---
F11 133 135 137 139
F12 134 136 138 140
Home no no no 151
Up no no 141 152
PgUp no no no 153
grey- no no 142 154
Left no no no 155
Center 76 76 143 156
Right no no no 157
grey+ no no 144 158
End no no no 159
Down no no 145 160
PgDn no no no 161
Ins no no 146 162
Del no no 147 163
Tab no no 148 165 \_| Note the reversed
/ no no 149 164 / | values here
Enter no no no 166

The keystrokes which have a 'no' entry are those which are
already supported by the system. You cannot use ENHKBD to
deactivate these keys. Only the keys which have a 'keynum'
value in the table can be enabled and disabled. [ This table
is displayed as part of the Help screen when you use the "?"
parameter. ]

"": Reactivates a specific which is supported by the
program: the one identified by 'keynum'.

[ Comments ]
ENHKBD processes its parameters one at a time from left to
right; it stops processing of the parameters either when it
has exhausted the list or when it encounters an unknown
parameter. An unknown parameter also stops the program
execution (and thus can prevent the program from going TSR)
with an Exit Code of -1. For example:


will deactivate the program. Later, if you enter either:

ENHKBD -133 -134 r
ENHKBD r -133 -134

the program will be reactivated and the F11 & F12 keys will
remain disabled.

If you were to enter the following command:


you could expect these results: 1) the F11 key will be
disabled, 2) the program will not be active, 3) the F11 key
(and any other previously disabled keys) will be reactivated,
and 4) the program will still be disabled and the enhanced
keys will still be unavailable, BUT 5) as soon as you reactive
the program with a "ENHKBD R" command, all of the keys will
be enabled as specified by the "A" parameter, which was
executed last.

What was probably meant was:


which will enable all the keys except F11 and disable the
program until you reactivate it later with a "ENHKBD R"
command at which time only the F11 key will be disabled.

What is the purpose behind all of this enabling and disabling of
keys? The main purpose is to give you whatever flexibility you
feel that you require. An immediate purpose lies in the fact that,
when the ALT-Cursor_Keys (ALT-Home, ALT-PgUp, etc.) are active,
you CANNOT use the ALT-Number_Pad_Keys to enter ASCII character
values from the keyboard (if you don't know how to do this, you
obviously don't feel hampered).

If you do need to use the ALT-Number_Pad_Keys method of keyboard
entry, the fastest way to enable it is to deactivate them with the
"-C" parameter; use the keys as you need them and then reactivate
them with the "C" parameter. Unfortunately, you must do this from
the DOS prompt -- ENHKBD is not a Pop-Up program. If your
application program allows you to use a "DOS shell" (go to DOS
without exiting the program), ENHKBD can be used effectively from
the shell. WordPerfect, Turbo C, Turbo Pascal, Lotus 1-2-3, dBase
III, and most other major applications provide the DOS shell
feature under one name or another. ("Go To DOS", "DOS shell", "OS
shell", "DOS command", etc. as opposed to "Exit", "Leave", "Quit
to DOS", etc.)

If all you are interested in is having the Center Key available to
you, the following line in your AUTOEXEC.BAT file will do:


Remember, you can get a table of all of the supported keys, their
status, and 'keynum's at any time by simply entering



KEYCHK is a companion program to ENHKBD which allows to you test
the interaction between your keyboard and your system. When KEYCHK
is running, you may press any key on the keyboard; KEYCHK will
display a message spelling out the key which was pressed along with
the (decimal and hexidecimal) keyboard code for that key.

The syntax for running KEYCHK is:

KEYCHK [color1 [color2 [color3]]]

color1 ==> informational text color (default: 7 DOS gray)
color2 ==> highlighted text color (default: 15 white)
color3 ==> normal text color (default: 7 DOS gray)

( If you are using a monochrome or black & white monitor, you will
want to use the default colors.) If you are using a color monitor,
any of the colors may be any number between 0 and 255. The
following table shows the available colors:

0 black 8 dark grey
1 blue 9 light blue
2 green 10 light green
3 cyan 11 light cyan
4 red 12 light red
5 magenta 13 light magenta
6 brown 14 yellow
7 DOS grey 15 white

0 - 15 may be used for foreground colors; 0 - 7 may be used for
background colors. To calculate the number of a color you want

1. choose a foreground and background color
2. multiply the background color number by 16
3. add the foreground color number to it.
4. if you want it to blink, add 128.

For example, to specify DOS grey (7) on a blue (1) background as
informational text (color1), yellow (14) on blue (1) as highlighted

text (color2), and white (15) on blue (1) as normal text (color3),
(16 x 1) + 7 = 23, (16 x 1) + 14 = 30, and (16 x 1) + 15 = 31, are
the numbers you should use as the parameters for KEYCHK:

KEYCHK 23 30 31

If you want to specify one of the colors, you must also specify all
of the colors which come before it in the parameter list; you do
not need to specify the colors which follow it (in which case the
default color(s) will be used), ie, if you want to specify color3,
you must specify color1 and color2 as well; if you want to specify
color2, you must specify color1, but you do not have to specify

KEYCHK 11 15

will give light cyan on black for color1, white on black for
color2, and (by default) DOS grey on black for color3.

If ENHKBD is memory resident KEYCHK will display a table of
'keynums' similar to that displayed by ENHKBD's "?" parameter with
the unsupported and deactivated keys shown using color3, the
supported, active keys using color2, and the table itself in

The information which is displayed by KEYCHK while it is running
should make its use self-explanatory. If you press a key, such as
Ctrl-; or Alt-\, which is not supported by the BIOS or by ENHKBD,
nothing will happen; otherwise you will told which key you pressed,
what the ASCII or extended code for the key is, and, if
appropriate, the display character for the key.


ENHKBD, KEYCHK and their documentation are copyrighted material and
we retain and reserve all rights to them. You are licenced to use,
copy, and distribute these programs freely and without payment
under the following conditions:


If you distribute the programs to others, you must supply them with
legal copies of all files associated with this package: ENHKBD.COM,
ENHKBD.DOC and KEYCHK.EXE. These files may be "archived" into a
single file for distribution purposes.

You may not sell or otherwise charge any fees whatsoever for these
programs. You may, however, charge a nominal fee (not to exceed
$5.00) for distributing a disk containing these programs for the
purpose of recovering your copying and distribution costs. If your
business involves software vending, we require that you place us
on your mailing list and that you provide us, without charge, with
copies of any catalogues, newsletters, or other materials in which
these programs are mentioned.

We do not charge a licence or registration fee for this software
(except as noted). However, if you find it to be useful, a
contribution to help us in the development of other utilities and
programs would be appreciated. We also welcome any comments,
suggestions for improvements, suggestions for other programs, or
any other thoughts which you may like to share with us.


While due care has been taken to write these programs and their
accompanying documentation carefully and without errors, the nature
of software development is such that no warranty can be made that
these programs or their documentation are, in fact, error free.
Furthermore, since we have no control over the (hardware and/or
software) environment in which you will attempt to use this
software, we make no warranty that these programs are suitable for
your purposes in any way.

The authors, publishers, and distributors of this software assume
absolutely no liability whatsoever for any damages or consequences
arising from the use of these programs. You must use them entirely
at your own risk. If you do not agree to any of the terms
contained in the LICENCE or DISCLAIMER sections of this document,
your licenses to use ENHKBD.COM and KEYCHK.EXE are revoked and are
null and void at which time you must destroy any and all copies of
the programs and their documentation, on any media, which you may
have in your possession.

 December 14, 2017  Add comments

Leave a Reply