
                                 7Key v1.0 
                              (25 April 1999)
                          7-button keyboard driver
                             (c) K. Shirow, 1999
                          email: kamui@softhome.net

1. WHAT FOR

Do you often need to type with only one hand - because the other is busy or,
heaven forbid, is missing? You don't like the standard keyboards because you
have wrist and elbow pains or want to work lying down? You would like to type
while driving a car or a bicycle, or walking? You are sick of getting out your
laptop or notebook each time you need to scribble something down? You don't
have the money to pay for the word "ergonomic" when you need a comfortable
keyboard? This program is for you.

2. HOW

An unknown time ago (I couldn't definitely find out, alas) one Dr. David
Gopher invented a 5-key keyboard standard. It involved complete absence of
finger shifting. To type, it used chords, not unlike piano chords - each
letter would be typed by pressing several keys simultaneously. Despite the
seeming complexity, chords are easy to remember, because of the motion memory
of the muscles, and after a certain training period the speed of typing may
well exceed the one achieved on the standard keyboard. Later on, Infogrip
(http://www.infogrip.com) which makes and sells such keyboards (for $199...)
added two extra keys for the thumb, which allowed, using shift chords (i.e.
chords which would change the meaning of the next input chord) to emulate
almost all of the standard PC and Macintosh keyboard.

3. WHY

I wanted a keyboard convenient for use in the field, and I also wanted a
comfortable elbow position which I could not achieve with a given furniture
setup. After some looking around the net, I found a definition of the 7-key
typing standard and decided to make such a keyboard. Ideally, I'd rather use a
microcontroller to simulate a real PC keyboard, but it was much simpler (and
sufficent) to just wire 7 buttons to the parallel port and write a driver for
DOS. Which is what you are looking at now.

4. TECHNOLOGY

Raw materials: 1 DB-25 male connector, 1 cable, with 7 wires in a shield, or
just 8 wires, 7 comfortable buttons (if anyone successfully uses resin
buttons, please let me know) and a comfortable box which you could set all 7
buttons in.

Warning, if you aren't careful when making this, you may easily damage your
parallel port.

The schematic is extremely simple:

      DB-25                           Keyboard

                                    ***************
      __                            *   ___ SW1   *
     |  \    10 ------------------------- ------\ *
     |   \                          *   ___ SW2 | *
     |    |  11 ------------------------- ------| *
     |    |                         *   ___ SW3 | *
     |    |  12 ------------------------- ------| *
     |    |                         *   ___ SW4 | *
     |    |  13 ------------------------- ------| *
     |    |                         *   ___ SW5 | *
     |    |  14 ------------------------- ------| *
     |    |                         *   ___ SW6 | *
     |    |  15 ------------------------- ------| *
     |    |                         *   ___ SW7 | *
     |    |  16 ------------------------- ------| *
     |    |                         *           | *
     |   /                          *           | *
     |  /                           *           | *
      --     18 --------------------------------/ *
                                    ***************

Buttons from SW1 to SW4 are index, middle, ring and pinky finger buttons
respectively.
SW5 is the Red button for thumb. On a right-handed keyboard it should be on
the right.
SW6 is the Black button for thumb. It should be in the middle.
SW7 is the Blue button for thumb. On a right-handed keyboard it should be on
the left.

If you did everything right, the keyboard should work straight away. On the
7key.jpg picture that should be in the same archive as the driver, you may see
how my first 7-key keyboard looked after assembling. Nothing stops you from
finding better buttons and better box - the ideal box is likely something
close to anatomical pistol grip, though a sphere or a cylinder appear also
promising. Remember that the buttons should be securely fastened to the
surface and not falling into the inside.

5. USE

You can run the driver from autoexec.bat or in any way convenient to you. In 
the same archive as the driver there should be a picture called 7keymap.gif. 
This is a reference sheet for all the chords and the signs they represent. It 
is a good idea to print it out and train using a typing trainer program, which 
are available in many software archives. In general, you have to enter Shift 
chord before entering a capital letter, but if you can't figure that out, 
how'd you make the thing anyway?

6. SHORTCOMINGS

This driver only works with DOS and only with the keyboard connected to LPT1.
If you really require a driver for a different port, let me know and I will
add multiport functionality. A driver for Windows 95/98/NT is being planned,
as well as a driver for Linux and QNX. The current driver works from
underneath Windows 95/98 in DOS sessions, it's functionality in earlier
versions of Windows has not been tested. It will most likely not work in an
OS/2 or Windows NT DOS-session.

This driver may be incompatible with certain types of parallel ports. If you
are sure that your keyboard is wired properly but some chords don't work, try
changing the type of the parallel port in BIOS, if your motherboard allows
that. In the normal conditions, the parallel port only has 5 input lines, and
the keyboard uses 7 input lines, of which two work as input lines only if the
programmer really wants them to. More complex keyboard wiring schemes exist to
circumvent that if you can not get it working as described, however, the
current driver version does not support them. It is likely that one of the
next versions will describe more complex keyboard wiring schemes and the
driver will support such schemes.

The driver works by forcedly pushing keypresses into the keyboard buffer. This 
means that programs which intercept INT 09h (such as the majority of games) 
and work with the keyboard directly will not be affected by the use of this 
driver. This also means that key combinations like Ctrl-Alt-<key> will not 
work. I don't think this is much of an obstacle, (if you really need 
Ctrl-Alt-Del, I could hardcode it in - just ask) unless you use some exotic 
software. Some other key combinations may not work as well, for example, 
Shift-Del and Shift-Ins, which return scan code / character combinations no 
different from just Del and Ins. It is likely some of these programs can be 
forced to work properly by manipulating the keyboard state byte in BIOS data 
area, so if you really need that, let me look at the offending program.

Because of the aforementioned fact the driver ignores national keyboard
drivers. Since I'm Russian, the driver supports Russian letters in 866
codepage. If you desire support for any other codepage, let me know so that
I could implement it. (however, it's unlikely that I'll implement support for
other national keyboards)

7. SUPPORT AND WARRANTY

This program is Thankyouware. I retain the copyright to it, but it is free for 
any use and allowed for any method of distribution except bundling with 
completed 7-key keyboards. If you like it and use it, please send me a thank 
you email - it won't hurt you and will uplift my ego a little.

This program is provided AS IS. It's behavior (or misbehavior) is not subject
to any warranties, expressed or implied, I don't even guarantee it will take
up space on your hard drive. I will try to help if you ask me to, but my
abilities and desire to do that may well be limited.

8. HOW TO FIND ME

Email-address: kamui@softhome.net.
Homepage: None at the moment. Will be in the future.
