LEGAL STUFF

Please read the file COPYRIGHT for information on what you can legally
do with this software.  It applies to all the files in their entirety
except for Utils/Matrix.java, which was based on someone else's work
(see that file itself for details).

OVERVIEW

gdt is a program intended to help designers of Pen-based User
Interfaces create good gesture sets.  Designers can input example
gestures and the tool will train a gesture recognizer on them.

In the future, gdt will give feedback about gesture categories that
are badly designed (either because they will be difficult for the
computer to disambiguate or because they will be difficult for humans
to learn and remember) and examples that are poorly drawn.

As you can see if you look at the "todo" file, there are many things I
wish gdt did that it does not do (yet) (and some it does that I wish
it didn't).  I believe that the recognizer works and is trustworthy,
but the rest is beta software at best.

INSTALLATION

To successfully run gdt, you will need:

- JDK 1.1.3 or later, available from
  http://www.javasoft.com/products/index.html
- Swing (aka JFC), available from
  http://developer.javasoft.com/developer/earlyAccess/jfc.html.  Note
  that you will need to join the Java Developer Connection to get this
  (but it's free).  Also, this version of gdt was developed with Swing
  0.7, and parts of Swing may change in the future.  gdt probably
  won't work with earlier versions of Swing, and small parts of it
  *may* break with later versions (depending on whether the API
  changes or not).

To easily compile gdt, you should also have gmake and JavaDeps (available
from http://www.cs.mcgill.ca/~stever/software/JavaDeps).

1. Unpack the tar file (if you haven't already)
2. If you lack gmake or JavaDeps, set your CLASSPATH environment
   variable and compile all the .java files in the top level and in
   the Utils and features directories with javac.  Then go to step 5.
3. Set the CLASSPATH variable in the Makefile to point to your copy of
   the JDK and Swing
4. Run 'make'.  This will take a little while, since it will compile
   many files.
5. If you want documentation for the classes, run 'make docs' if you
   have gmake.  If you don't have gmake, look at the Makefile and run
   javadoc by hand.  It will make a doc directory with
   javadoc-generated html.

STARTING gdt

1. Set the CLASSPATH in your shell to include the JDK and Swing.
2. Run 'gdt'.  This will start the gesture design tool.

Options

If you are running under X and have a tablet, use 'gdt -t' to enable
the tablet while gdt runs.

You can load a file on startup by specifying it on the command line.
For example, "gdt data/graffiti2.gs" will load with my copy of
Graffiti.

USING gdt

This is not an exaustive description of all the menus, since most of
them are either obvious or can be figured out with a little trial and
error.

The interface mirrors the class structure, which is as follows.  The
basic unit is the Gesture.  Example Gestures are input using gdt to
form a GestureCategory, which in an application will map to a single
action or (in the case of graffiti) a character.  Example
GestureCategories related to editing might include a carat (to do an
insert) and a pigtail (to do a delete).  GestureCategories are grouped
into GestureSets.  Currently, gdt can operate on one GestureSet at a
time.  The recognizer in gdt can be trained on a GestureSet and then
Gestures entered in the GestureSet window are classified into one of
the GestureCategories in the GestureSet.

Note: Gesture categories are called Classes in the interface since
that is the term Rubine used.  It's not used in the code because class
has a completely different meaning in Java.

Normally, gdt deals with entire GestureSets, but individual
GestureCategories can also be saved and loaded from files.

To make a new GestureSet, do the following:

1. Start gdt.
2. Select Class/New from the menu.
3. Name the Category by selecting File/Rename and entering the name in
   the dialog box and pressing Ok
4. Draw examples for the Category in the white box.  Existing examples
   can be deleted, cut, etc. by clicking on them to select and using
   the Edit menu.  The recognizer may not work well if your categories
   do not have at least approximately 15 examples each.
5. Go back to 2 until you have defined all your Categories.
6. Train the recognizer with Set/Train in the GestureSet window.
7. To recognize a gesture, draw it in the white area in the
   GestureSetWindow (you may have to resize it).
8. You can save the GestureSet with File/Save As... in the GestureSet
   window.

AUTHOR

gdt was written by A. Chris Long, Jr. <allanl@cs.berkeley.edu>.  The
classifier was based on Dean Rubine's algorithm, with guidance from
Rob Miller's C++ Amulet port.  All blame for the interface belongs to
Chris.

Copyright (c) 1998 Regents of the University of California.
