The KeyGlove is a glove interface with many press-studs on the fingers, thumb and palm, which when touched together generate a keypress in the same manner as a keyboard. It is intended to be used as an input device for a wearable computer. The original idea came from an article at (currently available via the Internet Archive Wayback Machine) but in this version I have moved the press-studs to what I believe are more comfortable positions, and mapped the keyboard in a different fashion through software.

General Description

[glove picture - 11KB]The KeyGlove uses the electronics from an old keyboard. A keyboard is more or less a 16 x 8 grid. When you press a key, you short out a row with a column, and the electronics translate this into a number which is sent to the computer. The glove works by hooking up each of the rows and columns to press-studs, which the user then touches together to generate a keypress.

I found that it was not possible to produce all the combinations necessary for 101 unique keys using only one hand - there are some places you just can't make your fingers go. To solve this, I have four special 'toggle keys' that work like the caps-lock key on a normal keyboard. They are shift-lock, ctrl-lock, alt-lock and func-lock. In normal mode (all toggles off), you can generate lowercase alphanumeric characters, space, backspace, carriage return and some punctuation. With shift-lock on, you can do uppercase characters and the rest of the punctuation. With func-lock on, the number keys and brackets become the equivalent of 'F1-F12' on a normal keyboard, and the press-studs on the index finger become cursor keys. ctrl-lock and alt-lock do the same thing as the ctrl and alt keys on a keyboard.

The way in which the press-studs are laid out is based on the idea behind the Dvorak keyboard layout, where the most commonly used letters are also the easiest ones to type. I have made these letters combinations of the thumb and first two fingers, as these are the ones with which I have the most dexterity. One problem with this device is the ability of each individual to move their fingers into odd positions, therefore the glove really needs to be custom made for each user. There is a QuickTime movie (791Kb) of me using the glove that will give you an idea of the contortions involved.

I have found that it is very easy to use the glove for navigating around documents (ie: up, down, left, right etc), and with a little practice it is not difficult to write with it. However, I do believe that it would require daily practice to get your hand used to the unfamiliar movements without strain. I suspect that playing bass guitar (which I do) helps in this respect.

The 'key layout' and shift-lock, ctrl-lock, alt-lock and func-lock functionality is facilitated by a program I wrote that hooks all the keyboard input. I have made versions of this for DOS and Windows NT, and have used the glove on Linux for typing (no shift, ctrl, alt, func etc) by modifying the keymap file. The next incarnation of this device will use a custom programmed keyboard controller chip that will handle the remapping so you can just plug it into a computer and use it without changing anything.

A very useful addition would be a program that checked what application was currently being used and switched the glove to cursor-key mode (func-lock) when you were looking at, say, a web page that you need to navigate around, then switching back to alphanumberic-key mode when you go back to a word processor or command line.

Key Layout

Following are three tables that map finger positions to key presses. One is for the keys produced with all the locks turned off; one is for shift-lock; and one is for func-lock.

The tables show press-stud positions as row and column headings. "S" is an abbreviation for "side", "Mid" is an abbreviation for "Middle" and "Btm" is an abbreviation for "bottom". Therefore, to type an "M", you touch the middle press-stud on the thumb to the bottom press-stud on the side of the middle finger.

Normal (no locks)

  Index Finger Middle Finger Ring Finger Little Finger
  TipS TopS MidS Btm TipS TopS MidS Btm NailTipMidS TopS Btm NailTipSide
Thumb Nail \    ;     '-    [func] 
Thumb Tip ypa  fgc  [esc]wvqz [tab][shift][enter]
Thumb Mid iueo dhtm  , /=  [ctrl] 
Thumb Bottom xkjl bsrn  .     [alt] 
Thumb Base      [bksp]     `       
Palm Top 1    2    3     4  
Palm Mid 5    6    7     8  
Palm Bottom 9    0    [     ]  


  Index Finger Middle Finger Ring Finger Little Finger
  TipS TopS MidS Btm TipS TopS MidS Btm NailTipMidS TopS Btm NailTipSide
Thumb Nail |    :     "_    [func] 
Thumb Tip YPA  FGC  [esc]WVQZ [tab][shift][enter]
Thumb Mid IUEO DHTM  < ?+  [ctrl] 
Thumb Bottom XKJL BSRN  >     [alt] 
Thumb Base [space]    [bksp]     ~       
Palm Top !    @    #     $  
Palm Mid %    ^    &     *  
Palm Bottom (    )    {     }  


  Index Finger Middle Finger Ring Finger Little Finger
  TipS TopS MidS Btm TipS TopS MidS Btm NailTipMidS TopS Btm NailTipSide
Thumb Nail                  [func] 
Thumb Tip   [up]    [pgup]  [esc][ins][del]   [tab][shift][enter]
Thumb Mid  [right][down][left]  [end][pgdn][home]        [ctrl] 
Thumb Bottom                  [alt] 
Thumb Base [space]    [bksp]             
Palm Top F1    F2    F3     F4  
Palm Mid F5    F6    F7     F8  
Palm Bottom F9    F10    F11     F12