^\input texinfo
     [file version.texi not included]

GNU Typist - Typing Tutor
*************************

This manual is for GNU Typist (version VERSION, UPDATED), a program to learn typing in several languages and for different keyboard layouts.

Copyright © 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.

     Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being ``A GNU Manual,'' and with the Back-Cover Texts as in (a) below.  A copy of the license is included in the section entitled ``GNU Free Documentation License.''

     (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify this GNU Manual, like GNU software.  Copies published by the Free Software Foundation raise funds for GNU development.''

GNU Typist is an interactive typing tutor that can help you to type correctly. It has several lessons for different keyboard layouts and in different languages. The lessons for gtypist are described in a easy-to-learn scripting language that the user can use to modify the existing lessons or create new ones.

Distribution
************

GNU Typist (or gtypist) is free software; this means that everyone is free to use it and free to redistribute it on certain conditions. The precise conditions are found in the GNU General Public License that comes with this program and also follows this section.

You can obtain GNU Typist from a friend or from the Internet:

Primary distribution site
     ftp://ftp.gnu.org/gnu/gtypist/

Alternate distribution site
     http://gtypist.org/releases/

Home page
     http://www.gnu.org/software/gtypist/

Alternate home page
     http://gtypist.org/

On-line manual (updates between program releases)
     http://www.gnu.org/software/gtypist/doc/

Developers' home page (CVS repository, tasks, support...)
     http://savannah.gnu.org/projects/gtypist/

GNU Typist download page (sources, binaries and tutorial updates)
     http://gtypist.org/

Screenshots
     http://gtypist.org/screenshots/

     [file gpl.texi not included]

Introduction
************

GNU Typist is an interactive typing tutor program. It uses an input file to create a series of typing tutorials, drills, and speed tests. It is intended to be used on raw terminals without graphics --it has been compiled and used in GNU/Linux and Unix (OpenBSD, AIX, Solaris) and also in DOS/Windows (DOS 6.22, Windows 95, 98, NT and XP).

The program reads lessons written in an easy-to-learn scripting language. It is distributed with several complete and good lessons. You can use them, modify them or create new lessons (see Create new lessons and see Script file commands).

If a script file is not specified on the command line, a default file gtypist.typ will be used. (See details about the path in the section see Environment Variables).

The top line of the screen displays a banner. The bottom line of the screen displays a message line, queries, and other status information. The lines in between are used for the tutorials, drills, and speed tests.

There are two types of typing exercises: drills and speed tests.

In a drill, gtypist displays text in every other line on the screen, and waits for the user to correctly type the exact same text in the intermediate lines. Typing errors are indicated with an inverse ^, or > if the character is a newline and at the end of the exercise it calculates the real and effective rate in Words Per Minute (WPM). If there were too many errors, it will re-run the drill.

Backward deleting of previously typed characters to correct errors is not allowed.

In a speed test, gtypist displays text on the screen, and waits for the user to correctly over-type the exact same text. It indicates typing errors, and at the end of the test it calculates the real and effective rate in WPM. If there were too many errors, it will re-run the speed test. Backward deleting of previously typed characters to correct errors is permitted, but errors still accumulate.

If you already made too many mistakes, then you can use ESC to give up and start again. You can also skip a lesson by pressing ESC twice. Once you complete a lesson, you will be asked whether you want to repeat it.

There are also ``practice only'' exercises (of both drills and speed tests) which you won't have to repeat at all. But we won't tell you when this is the case, so you'll have to give your best anyway ;-)

In typing speed reports, a word is deemed to be five characters, so the raw (gross) WPM is the number of characters in the test passage, divided by five, then divided again by the number of minutes elapsed in typing the passage. The adjusted WPM factors in the errors; each error is counted as a mistyped word.

Invoking
********

The syntax to invoke GNU Typist is:

gtypist [ Options... ] [ script_file ]

The supported options are given below (note that the long form is not supported on DOS):

-e, --error-max
     Specifies the default maximum error percentage.  The default value is 3.0 and it must be between 0.0 and 100.0. There is a corresponding script file command (see Script file commands) which only overrides this if it is stricter (smaller). This value is ignored for ``practice only'' drills.

-n, --notimer
     gtypist will display the typing speeds in WPM after both drills and speed tests. However, the lessons appear to be written for a program that only does this for speed tests. To make gtypist behave in a manner that matches the lessons, that is, to sup WPM reports on drills, use -n or --notimer.

-t, --term-cursor
     gtypist creates its own flashing block cursor on the screen, to help distinguish between the cursor and reverse video error indications. Setting -t or --term-cursor suppresses this, and forces the program to use the terminal's cursor instead.

-f, --curs-flash
     Sets the block cursor flash period in tenths of a second. A value of 0 indicates no cursor flashing. The default is 10, and the maximum is 512. This option is ignored if -t or --term-cursor has been set.

-c, --colo[u]rs
     In normal operation, gtypist uses only normal and reverse video attributes in monochrome mode. This option may be used to specify the foreground and background colours on terminals that support colours. The colours are specified as two integers, in the range 0 to 7, separated by commas, setting the foreground and background colours. The colour codes 0 to 7 indicate black, red, green, yellow, blue, magenta, cyan, and white respectively. The default colours string is 7,0 - white on black. The option is ignored if the terminal does not support colours.

-s, --silent
     When gtypist detects a typing error, it will beep the terminal. Use this option to silence the beep.

-q, --quiet
     Same as -s or --silent.

-w, --wpmode
     With this option, gtypist will try to mimic a word processor in certain ways when executing an exercise. It will treat space at the end of a line as a correctly typed character, and word wrap. It will treat return at the end of a line as a signal to move to the start of the next paragraph if applicable. It will compress multiple spaces into a single space. And it will skip over hyphens found at the end of a line.

-l, --start-label
     Specifies the label in the script file at which gtypist begins executing (see script files and commands below for information on labels). If this option is not used, gtypist begins execution at the first line of the file.

-k, --no-skip
     Prohibit the user from skipping lessons or exiting from lessons via ESC ESC.

You also have to set the environment variable LANG if you want to run gtypist in your native language. See Environment Variables.

In some languages like French, some interface messages are longer than in English. Therefore, you may need to make your terminal larger before invoking the tool. Otherwise, the text on the lower left may overlap with the string on the lower right.

Examples:

To run the default lessons of lesson gtypist.typ:

gtypist

To run the lesson in Spanish:

gtypist esp.typ

To instruct gtypist to look for lesson bar.typ in a non standard directory /home/foo:

export GTYPIST_PATH="/home/foo" gtypist bar.typ

To run the lessons in the file test.typ of directory /tmp, starting at label TEST1, using the terminal's cursor, and running silently:

gtypist -t -q -l TEST1 /tmp/test.typ

Supplied lessons
****************

The following lessons are supplied with GNU Typist :

q.typ
     Quick QWERTY course in English

r.typ
     Long QWERTY course in English

t.typ
     QWERTY touch typing in English

v.typ
     Yet Another QWERTY in English

w.typ
     QWERTY Review in English

d.typ
     Dvorak touch typing in English

m.typ
     Typing drills in English

s.typ
     Speed drills in English

n.typ
     Calculator keypad in English

gtypist.typ
     Compendium of all previous lessons in English

esp.typ
     QWERTY course in Spanish

cs.typ
     Lessons in Czech

ru.typ
     Lessons in Russian

kt*.typ
     These lessons are the standard lessons from Ktouch 1.0 (http://ktouch.sourceforge.net/), which have been converted to gtypist's file format using tools/ktouch2typ.pl.

     The files are called ktde.typ (german.ktouch), kten.typ (english.ktouch), ktfr.typ (french.ktouch), ktfr2.typ (french-2.ktouch), ktno.typ (norwegian.ktouch) ktdk.typ (danish.ktouch), ktdk2.typ (danish-2.ktouch), ktdvorak.typ (dvorak.ktouch) and ktnumber.typ (number.ktouch).

ttde.typ
     This is the German lesson of tipptrainer (http://www.pingos.schulnetz.org/tipptrainer/), which has been converted using tools/tt2typ.pl.

If you find errors in these lessons, if you modify any of them or if you write a new lesson, please release it with a free license and tell us about it, by writing an email to bug-gtypist@gnu.org.

Using typefortune
*****************

typefortune lets you practice with text from fortune.

SYNTAX: typefortune [-dslh] [-n count] [-o <gtypist_opts>]

-d
     Use D: instead of S:.

-s
     Run fortune with -s.

-l
     Run fortune with -l.

-n <count>
     Practice <count> fortunes.

-o <gtypist_options>
     Pass options to gtypist, in the form option (boolean option, i.e. -o word-processor), option,value (option with value, i.e. -o e,1.0) where option is the name of the option (short or long) with all leading dashes removed. You need to quote the argument to -o if you are specifying more than one argument: typefortune -n 3 -o 'silent e,5 word-processor'.

Script file commands
********************

GNU Typist reads in the data for its typing lessons from a script file. With the exception of comments and blank lines, each line in the file is of the format

command_char : command_data

Here, command_char is a single character code that defines an action for gtypist to take, and command_data is data for that command. If command_char is a space character, this indicates that the line is a continuation of the preceding non-space command. The : separator must be in column two of the line.

Comment lines are lines beginning with a # character, and are ignored, as are blank lines. Comment lines may have any format provided that they begin with #; other lines must have the above format.

You should read the introduction so that you are familiar with the basics: see Introduction.

The following is a list of valid command_char values:

B
     This command clears the complete screen. If any command_data is present, it is displayed in the one-line banner at the top of the screen, and remains in place until the next B command. This command may not be continued on the following line; it is a single line command.

T
     This presents a tutorial, and is a multi-line command, up to the limit of the screen length. Each line in the command is simply printed to the screen. This command clears the screen beneath the top banner line. After the display is done, the program waits before proceeding.

*
     This indicates a label in the file. The label may be the target of a G, Y, N or F command. Labels may contain any character, including space, and are a single line command. Labels must be unique within lesson files. Whitespace at the end of labels is ignored.

I
     The I command can display some brief instructions above a drill or a speed test.  Only two lines or less are permitted.  Unlike the T command, it does not wait for any further keypresses before proceeding.  So it should really always be followed by an exercise. It clears the whole screen exercise area, so in this respect it's just like a two-line T.

M
     This command is the new way to create menus (since gtypist 2.7). Here is the syntax:

          M: [UP=(LABEL|_EXIT)] "title"
           :LABEL1 "description1"
           :LABEL2 "description2"
           ...

     The UP-label indicates the parent-menu's label which defines the last menu-item (if it's _EXIT ``Exit'', else the last menu-item ``Up'' will jump to the specified label). It is optional: if it is not supplied, the special value _EXIT is used.

     The title and all descriptions must be wrapped in quotes (""). Additionally, there must be at least one space between UP=XXX and "title" and between the labels and the corresponding descriptions.

     See the existing lesson-files for examples.

D,d
     This command is called drill, and it is one of two types of typing exercises.

     It is a multi-line command. The text is displayed in every second line, and you type in the intermediate lines. Because of this, you cannot use more than 11 lines of drill content.

     This type of exercise is supposed to be used for finger training (i.e. jfjfjjf), but may also contain complete words and sentences if they are used to practice something (i.e. a letter/syllable/"grip"), and aren't real texts.

     The lowercase version d is a ``practice only'' drill - the user will not have not repeat this drill if he/she made too many mistakes.

S,s
     This is the second type of typing exercise: the speed test.

     It is a multi-line command.  It displays its text on the screen, and prompts the user to type on top of it.  That's why you can use up to 22 lines of text for one speed test. In a speed test you can correct your mistakes, but this will not decrease the error-count.

     Speed tests should be used for typing (mostly) complete sentences, texts or files (i.e. a letter, texinfo/html/tex files).

     The lowercase version s is a practice only speed test: the user will not have not repeat this drill if (s)he made too many mistakes.

G
     This causes gtypist to go to the label in command_data, and continue execution of the script there. This is a single line command.

Q
     This command command prompts its text on the message line, and waits for a Y or an N before proceeding. Other characters are ignored.

     As a side effect, you can hit an Fkey if it is bound (a deprecated way to create the prompt for menus).

Y
     This is like G, except that the goto is executed only if the result of the last Q command was Y.

N
     This is like G, except that the goto is executed only if the result of the last Q command was N.

K
     This command is deprecated in favor of M: This binds a function key to a label. The format of the data line following this command must be fkey_number:label, where fkey_number is a function key number in the range 1 to 12, and label is a label to go to when this key is pressed. A value of NULL for label removes any label binding from the key.

     If function keys are not available on the terminal other keys can be used: 1 to 9 to replace F1 to F9, 0 to replace F10, A for F11 and S for F12.

     Other alternatives for the keys F1 to F12 are the combinations: Ctrl-Q, Ctrl-W, Ctrl-E, Ctrl-R, Ctrl-T, Ctrl-Z, Ctrl-U, Ctrl-I, Ctrl-O, Ctrl-P, Ctrl-A and Ctrl-S.

     This is also useful where function keys are intercepted by other programs (for example by a window manager).

E
     This command is used to set the highest error-rate permitted for the next drill (E:<value>%) or for all following drills until the next E: (E:<value>%*).

     If --error-max/-e is specified then this command will only have an effect if it is stricter than the value specified on the command-line.

     command_data consists of the value (between 0.0 and 100.0), followed by % (this is required so that scripts are more readable). A special value of default or Default sets the error-max value back to the default.

F
     This command (``set on-failure label'') is used to set the label (in command_data) where the user will have to go to if (s)he fails an exercise.

     Usually, this command only applies to the next exercise, but you can make it persistent by putting a * at the end of command_data.

     If label is NULL then this resets the label.

X
     This command causes gtypist to exit. It is a single line command. Any command_data is ignored. The program also exits if the end of the file is found (so you could also place a label there and just G to it)

Here is a tiny example script to demonstrate the available commands (tinydemo.typ lesson file):

     # Minimal demonstration
     B: Typing tutor demonstration
     *:LOOP
     K:1:QDONE
     T:This is a small example tutor script. A better
      :example may be found in the demo.typ file that
      :accompanies GNU Typist
     I:Here is an example of a drill:
     D:asdf ghjkl;
     I:And here is an example of a speed test:
     S:qwe rt yu iop
     *:QDONE
     Q:Seen enough yet? [Y/N]
     N:LOOP
     X:

Create new lessons
******************

This section provides guidelines and hints for creating new lessons (or improving existing ones).

Ktouch lessons
==============

A very easy way to write lessons is to write them in the format that ktouch uses, and then convert it to a gtypist lesson using tools/ktouch2typ.pl. This will take care of writing ``jump-tables'', a menu and a bit more.

The ktouch-format consists only of lessons, which are preceded by their names, and separated by blank lines and/or comments (# at the beginning of the line). So the first non-blank, non-comment line in the file is the name of the first lesson, and the first lesson consists of all the lines up to the next comment or blank line. After the separator (comment or blank line) the name of the second lesson follows and so on.

This is an example of a three-lesson ktouch file (excerpts from the first three lessons of german.ktouch):

     #
     # Deutsche Training-Datei für KTouch
     #

     Grundstellung
     f f f f f f fff fff fff f f f f f f fff fff fff f f f f f f f fff
     j j j j j j jjj jjj jjj j j j j j j jjj jjj jjj j j j j j j j jjj
     fff jjj fff jjj jjj fff jjj fff fjf fjf fjf jfj jfj jfj fjf jfjfj

     Grundstellung
     fff jjj ddd kkk aaa ööö fff jjj ddd kkk aaa ööö fff jjj ddd kkkff
     fda jkö fda jkö fda jkö fda jkö fda jkö fda jkö fda jkö fda jköfd
     s s s s s s sss sss sss s s s s s s sss sss sss s s s s s s s sss

     #Zwei wichtige Vokale: e und i
     e und i
     asdf ölkj fdsa jklö asdf ölkj fdsa jklö asdf ölkj fdsa jklö asdfö
     das dass lös fad dass lös als dass las lös fad dass als dass dass
     ded ded ded dej dek del deö ded deö del dek dej ded dej dek delde

Once you are done, use tools/ktouch2typ.pl to convert the file: ktouch2typ.pl lesson.ktouch converts lesson.ktouch to lesson.typ. It is important that the input file ends in .ktouch, otherwise ktouch2typ.pl will skip it. Warning: this will overwrite lesson.typ without asking you !

You can customize the number of lines that ktouch2typ.pl uses for each drill by modifying the relevant variable in tools/ktouch2typ.pl.

Obviously, the disadvantage of this is that you cannot make use of all of gtypist's features (but the output file is very readable, so you can edit it to use more of gtypist's features).

Exercises from fortune
======================

Using gtypist-mode.el you can quickly create lessons with text from the program fortune (or the emacs-internal yow if fortune isn't available, as is usually the case on Windows).

Once you installed gtypist-mode.el (see Emacs mode), you can open a file with the .typ extension and run C-c C-f to create a drill (D: by default, use C-u or C-u C-u prefix to change).

Design patterns for lessons
===========================

Structure of lesson files
-------------------------

  * Use mixture of drills and speed tests (this is more fun for the user)

  * Use some ``practice-only'' exercises (d:/s:) (possibly mixed with ``real'' exercises) followed by a ``final test''. esp.typ uses this scheme.

Patterns for exercises
----------------------

  * When introducing a new key, start out by mixing other (known) keys of the same finger in with the new key in the first drill(s). Here is an example (from t.typ, line 237):

          I:Use your J-finger for the H key.
          *:_T_R_L23
          D:jjj jhj jjj jhj jjj jhj

  * use 'word, word.' repeatedly to practice ,/.

Findwords script
================

The tools/findwords script in the GNU Typist sources is there to assist you in creating new lessons.

Purpose
-------

In the beginning when you are creating a new tutorial from scratch, it's not very easy to form words and even sentences while the range of letters you can use is restricted. Sometimes you want to insert some paragraph ``targeted'' at some special combination of two or three letters. This is even harder.

For this purpose we created findwords. It uses the dictionaries from the aspell database (free multilingual spellchecker).

Installing
----------

You will need the aspell and aspell-LG packages, where LG is the ISO language code for the language you want to use.

After a successful installation, you will have to make a little change in your configuration so that aspell's master database is the one of your language. This can be done two different ways:

 1. In your home directory create the file
     .aspell.conf and add this line:

     master LANGUAGE

 2. Create /usr/share/pspell/LG-aspell.pwli
     and add this line:

     /usr/lib/aspell/LG

     Make sure your locale setting is LG.

In the above, LG means ISO language code (eg. `en', `fr', `cs') and LANGUAGE means name of the database in /usr/lib/aspell (eg. `english.multi', `french', `czech').

You can try if it works by typing:

             aspell dump master | less

Using findwords
---------------

The syntax is as follows:

./findwords letters [combination]

In the mandatory letters argument you must list the letters that you want use without any spaces. You may use the dot (`.') to say `all letters'. The second argument combination is optional and you can specify there what combination of letters are you searching for.

Some examples:

  * ./findwords asdfjkleruio
     We are looking for all words composed from the listed letters.

  * ./findwords asdfjkleruio sa
     We search words containing the combination `sa', but only these composed from specified letters.

  * ./findwords . col
     Words can contain all letters, but must have `col' somewhere inside.

Emacs mode
**********

gtypist now comes with an Emacs major-mode which does syntax-highlighting, indentation and has some convenient commands for counting labels, a goto-label-command, inserting properly centered banners, special comments and a bit more.

Copy this file from tools/gtypist-mode.el to wherever you put your local elisp files (e.g.  ~/elisp) and put this in your ~/.emacs (adapt path!):

     (autoload 'gtypist-mode "~/elisp/gtypist-mode")

or put it in load-path (make install in the sources should take care of this for GNU Emacs, or if you are using the Debian package, it installs it here for you) and use this instead:

     (autoload 'gtypist-mode "gtypist-mode")

and add this to your ~/.emacs:

     (setq auto-mode-alist
           (cons '("\\.typ\\'" . gtypist-mode) auto-mode-alist))

All this is also mentioned in the README-section of tools/gtypist-mode.el.

Here are the commands along with the keybindings:

C-c C-i, M-x gtypist-mode-info
     This shows gtypist's texinfo-documentation, starting at node ``Script file commands'' (see Script file commands). With prefix, start at the top-node.

C-c M-g, M-x gtypist-mode-goto-label
     Query for a label to go to (with completion).

C-c C-l, M-x gtypist-mode-next-label
     This command inserts the next label in a numbered sequence of labels. For example, if you insert

          *:SERIES1_L1

     and hit C-c C-l then gtypist-mode will insert

          *:SERIES1_L2

C-c C-b, M-x gtypist-mode-insert-banner
     This command inserts a centered B: command. It's centered on 66 columns because ``gtypist <version>'' is in the right corner (prompts for content).

C-c C-r, M-x gtypist-mode-insert-hrule
     Inserts a horizontal rule (comment) consisting of dashes.

C-c C-n, M-x gtypist-mode-new-lesson
     Insert the comments (header) and a label to start a new lesson (prompts for name).

C-c C-f, M-x gtypist-mode-fortune-to-drill
     Insert a drill (D:) with text from fortune (or yow if fortune isn't available). Use C-u prefix to get S:, and C-u C-u to get d:.

Run C-h m for a complete list of commands and their keybindings.

If you find bugs or if you think there's something else this mode could do, please write to bug-gtypist@gnu.org.

Environment Variables
*********************

GNU Typist uses the following environment variables:

LANG

     GNU Typist offers Native Language Support (NLS) with support of the gettext library, this means that if your system supports it, the language of the messages shown by gtypist can be chosen. By now gtypist is distributed with messages in English, Czech, Finnish, French, German and Spanish. To use a particular NLS use the environment variable LANG and set it to the appropriate LL_CC combination where LL is an ISO 639 two-letter language code and CC is an ISO 3166 two-letter country code (e.g. es_ES for Spain and de_DE for Germany). In some systems it will be also necessary to set the environment variable LANGUAGE to the same value.

     If you want to translate messages to a different language (or if you want to correct a message), please communicate it to bug-gtypist@gnu.org.

GTYPIST_PATH
     Lists the directories that the program will look in for script files. It has the standard format for paths, that is, a list of directories separated by :s. To open a script, gtypist will try the following paths: (1) to use the script name alone (2) it will append each one of the directories specified in the variable GTYPIST_PATH and (3) it will append the directory used during the installation process (e.g. /usr/local/share/gtypist or /usr/share/gtypist).

TERM
     Used by curses to manage the display.

TERMINFO
     This may need to be set if the path to the terminfo database is different between the system the binary was compiled on and the one it is being run on. For example, in older Slackware systems, the terminfo database resides in /usr/lib/terminfo. On RedHat Linux, it is in /usr/share/terminfo. If the program complains about the terminal type, and the value of TERM is correct, check into this.

Errors and omissions
********************

GNU Typist does not support multi-byte character encoding yet (such as UTF-8). To see all the characters in some lesson files, you have to make sure that your terminal is run in such an environment in which the LANG variable is not set to an UTF-8 encoding. Lazy users can also try just try to run GNU Typist on another type of terminal. It sometimes works.

GNU Typist does not go to much effort to minimize terminal output. In particular, the flashing block cursor can cause a lot of cursor movement. Using the terminal's own cursor will help if this becomes a problem.

In speed tests, the program does not allow backspacing or deletion past the beginning of the screen line, or back through Tab characters. This is purely to simplify screen updating.

Colour curses modes do not seem to work well with UnixWare. In particular, reverse video is not always rendered correctly on some terminal types, and xterms.

History of GNU Typist
*********************

  * The initial program was written for VAX/VMS BASIC by someone at Harris Corp (Ft. Lauderdale, FL).

  * D. Jason Penney rewrote it for Microsoft BASICA

  * D. Jason Penney rewrote it in C and the curses library

  * Simon Baldwin rewrote the version of D. Jason Penney, his innovations are described in the NEWS file (versions 2.2 to 2.2b). He is the holder of the copyright for GNU Typist (that is distributed under the GPL). Simon also wrote a version of Typist in Java that initially he called JTypist but that now is called Typist again:

     http://www.geocities.com/simon_baldwin/typist/

  * Since 1997, Ben Armstrong has helped by fixing bugs and maintaining a Debian package (http://packages.debian.org/gtypist/).

  * In 2000, Vladimir Támara and Igor Támara became the maintainers of the C version. Before November 2000, GNU Typist was maintained as part of the Structio project.

  * November 2000, accepted as a GNU package! Renamed to GNU Typist (or gtypist).

  * In May 2001, Michael Opdenacker, who learned touch typing with GNU Typist, became the new maintainer. Project development is now hosted on http://savannah.gnu.org/projects/gtypist/.

  * In June 2001, Felix Natter joined and made major contributions to the project: lesson imports from other tutors, tool enhancements, new tutorial capabilities, , Emacs mode, arrow key based interface, and many more!

  * In 2003, Dmitry Rutsky joined joined the development team and brought in a dramatic number ideas, hacks and improvements, and he's not done yet!

Copying this manual
*******************

     [file fdl.texi not included]