Typist v3.0 (Java) User's Guide

Table Of Contents

This document contains the following sections:

  1. Using Online Help
  2. The Control Window
  3. The Tutorial Window
  4. The Exercise Window
  5. The Statistics Window
  6. The Lesson Loader
  7. Building The Program
  8. Running The Program
  9. Java Runtime Notes
  10. Bugs and Omissions
  11. General Information
  12. GNU GPL

Using Online Help

You can use the Help Window to display online help while running Typist. At the top of the window you can select from the topics that the help window offers. Selecting a topic brings the help information for that area into the window's text display.

Select File->Close Window on the menu bar for this window to close it.

The file Typist30.html contains an HTML version of the online help text.

The Control Window

This is the main window for Typist. The menu bar allows you to activate the other windows that Typist can display - the Tutorial Window, the Exercise Window, the Statistics Window, and the online Help Window. Additionally, it also offers a Help pulldown item: Use Help->About to get information about Typist and its licensing, and Help->On Typist to obtain the online Help Window.

Typist offers a number of alternative and complementary lesson series. The Control Window allows you to select which lesson series is currently active, and within a lesson series allows you to select a particular lesson.

Beneath the window's menu bar is a toolbar. Using the toolbar, you can select the lesson series that is active, and move forwards and backwards through the lessons in that series using the <Prev and Next> buttons.

The central area of the Control Window is the lessons list. This shows each lesson that the currently active series contains. To run any lesson individually, select it from this list. Lessons can be of three basic types:

Tutorials are displayed in the Tutorial Window. Drills and Speed Tests are displayed in the Exercise Window.

At the bottom of the window is a status bar, that shows which lesson is currently being run. If there is a problem accessing any of the lesson series files, the error message will be shown here.

The Tutorial Window

This window shows the text of the most recently selected Tutorial. Use the scroll bars to read the text. The window may be left up as a reminder of the lesson if you wish.

The Exercise Window

This is the window that you type into for practice, and displays both Drills and Speed Tests.

When a Drill is being shown, the window contains two text areas. The upper one shows the target text that should be typed, highlighting the next character expected. The lower text area shows what you have typed at the keyboard so far, with error characters picked out as '*'s. In a Drill, backspace characters will not delete the last typed character.

For a Speed Test, only one text area is shown. Again, the expected next character is highlighted. In a Speed Test, you are required to overtype the characters in this text area. If you enter an incorrect character, Typist puts a '*' at the location of the error. You can use backspace to back up and correct mistypings in Speed Tests.

For both of these types of exercise, Typist times each keystroke, and at the end of the exercise, it displays information about how many errors you made in typing the exercise, and also your typing speed and adjusted speed in Words Per Minute (WPM). Your raw typing speed is calculated as the number of keystrokes you made, divided by five (the notional average word is taken as being five characters), divided by the time in minutes taken to complete the exercise. The adjusted WPM is calculated in the same way, except that one word is taken away for each single character typing error you made.

When timing keystrokes, Typist does not count the first character of an exercise. Also, if you pause for a few seconds between characters it won't count the next character after the pause as part of the exercise. It does this to try to maintain sensible keystroke timing information in cases where you might take breaks in mid-exercise.

By default, Typist will try to behave like a word processor. A space character is treated as correctly typed at the end of a line, and multiple spaces are condensed down into a single space. If you hit Return at the end of a line, the cursor moves forward to the next significant character to be typed, skipping over blank lines and paragraph indentation. Typist won't insist that you type the hyphen at the end of lines that end in one, but will wrap for you. To switch off any or all of these word processing features, use the Options menu on the menu bar.

To restart an exercise from the beginning, use File->Restart Lesson on the menu bar.

The Statistics Window

Each time you strike a key in an exercise, Typist notes the key that you struck, the one it was expecting you to strike, and the time it took you between the last key you struck and this one.

The Statistics Window displays a complete analysis of all of this timing information collected on exercises. Keystroke statistics are integrated by finger, and also displayed by individual key. You can use the View pulldown menu to decide which set of statistics you want to see in the window.

Each statistic is shown as a pair of gauges, giving the percent accuracy and speed for the finger or key. If the accuracy or speed drop below certain threshold levels, the gauges will change color to orange or red, to indicate that these are areas in which you might consider some additional practice.

Press the Refresh button to bring the window up to date with current keystroke statistics. The window is automatically refreshed if you change which set of statistics is on view, when the window is displayed, and at the end of each typing exercise you complete.

You can use the File->Reset All pulldown menu item to set the complete collection of measurements back to their initial condition.

The statistics shown by this window are the normal keystroke statistics, broken down by key and by finger. Note that the WPM rates are calculated on timing information that is maintained regardless of whether you struck the right key or the wrong one - this means that where accuracy is poor, the WPM rates shown for individual keys and fingers can become misleading.

The Lesson Loader

Because a large amount of Typist is exercises and other typing practise material, it makes sense for the program to only load those lesson series that are actually required. It does this by using dynamic class file loading to access a lesson series when it is selected on the Control Window. Once a lesson series has been loaded, Typist keeps it in memory, so there is no need to load it again.

The effect of this is that the startup time is reduced where Typist is being runing as an applet. You may however notice a delay due to downloading when you access a lesson series for the first time. Dynamic lesson loading happens automatically, and does not require you to take any special actions.

Building The Program

Typist (Java version) consists of a flat directory of Java source files, and a single Makefile. If you have make on your system, then merely invoking the command should be sufficient to build the complete set of class files - the Makefile does not contain any complicated or GNU-make dependent constructs.

If you do not have make available, try 'javac [-O] *.java'. The Java compiler is sometimes smart enough to automatically compile any source files for a needed class file, so building may not be too much of a problem.

Most classes contain a main() method that tests the class in some way, the obvious exception being the Typist class that contains the 'real' main() method, and also the applet entry point for the program. The main() method in the HelpHTML class prints out the online help text as a single HTML User Guide document.

Running The Program

The single main runnable class file in Typist is:

To run Typist as an application; use a command something like 'java Typist' to run the Typist class. You can add -k keyboard_type to specify the keyboard type. Use -h for a full list of arguments.

To run Typist as an applet, again use the Typist class. For an applet, the keyboard type can be specified using the applet parameter kbtype - see TypistApplet.html for an example of HTML applet tags to activate the program. Because the program makes heavy use of frames and menu bars, the applet form is nothing more than a single pushbutton that starts the main program in a separate frame outside the browser. Use the buttonlabel applet parameter to control the label on this pushbutton.

One other point about applets; they cannot use dialogs very well, so for applets the popup dialogs are actually implemented within their own frames. Among other things, this means that they don't disappear when their 'parent' window is iconised, unlike true dialogs.

Java Runtime Notes

Typist was developed on a combination of the 1.0.2 JDK and the 1.1.7 JDK. both running on Linux. To maintain usability for the largest number of users, for the present it uses the 1.0 Java event model. The following notes apply to the the various Java runtimes tried so far:

JDK 1.0.2 on Linux
The program mostly works fine, but on occasions it does show a tendency to lock up FVWM from time to time. This could be due to lack of memory, as the test system has only 8Mb of RAM. On the other hand, it may be something to do with FVWM or with the way the Java runtime acts with FVWM, since some brief tests with TWM have not shown the same problems.
JDK 1.1.7 on Linux
There are no unsightly interactions with FVWM. However, there are two annoying features that simply won't work with this runtime. The first is the Caps Lock key -- no matter what state keyboard Caps Lock is in, the key press events passed in to the program never show capital letters, just always lowercase. The second is that numeric keypad key presses do not, apparently, generate key press events at all, rendering the numeric keypad useless. Test programs coded using the AWT 1.1 event model showed the same problems, so for the moment it appears that this is a deficiency in 1.1-based runtimes. Since no elegant workround seems to exist, for now these features won't work. Hopefully the situation will improve with later releases.
JDK 1.1.3 on SCO UnixWare 7
This behaves as JDK 1.1.7 above. Neither Caps Lock nor the numeric keypad will function correctly on this runtime.
Kaffe 1.0b on Linux
Sadly, this runtime doesn't offer AWT 1.0 compatibility, so the program simply won't run. A basic AWT 1.1 version of Typist, put together specifically to test with Kaffe, would also not run for long, either freezing on startup, or dumping core with a nasty assertion failure in the garbage collector.
Netscape Navigator Gold 3.04 on UnixWare
Caps Lock and Num Lock work fine, probably because this Java runtime is AWT 1.0 based. The only odd behaviour is with the Exercise Window, where the graphical X cursor needs to be over one of the two labels at the top of the window (the exercise name or description) for some reason; putting the cursor in one of the text areas results in just a beep when a key is struck.
Netscape Communicator 4.04 on UnixWare
The input focus is not a problem, and Caps Lock works fine. However, the numeric keypad problem remains. Shrug.
Netscape Communicator 4.07 on Linux
The input focus is not a problem, but neither Caps Lock nor the numeric keypad work. And a special treat -- on closing the applet, the browser will complain hard about finding circular dependencies in forms children.
Netscape Communicator 4.5 on Windows
At last, a browser-based runtime that seems, at least so far, to run the complete applet without any of the mishaps described above.

You may need to be prepared for a voyage of discovery with your Java runtime.

Bugs and Omissions

There really should be keyboard shortcuts for all of the pull-down menu functions in the program. Odd that there aren't in a program so rooted in handling the keyboard. The reason they're not there is that they are a bit fiddly to implement in AWT 1.0. They should arrive in the AWT 1.1 or SWING version of Typist.

The exercise GUI interface is not as slick as it could be. In particular the slavish use by Typist of TextArea components does not give as much control over things like text placement as might be desirable.

The dynamic loading of lesson series class files should be OK, but it is a a new feature in v3.0b, so hasn't had as much testing as the rest of the program.

General Information

This program is a Java reworking of a UNIX C++ reworking of a UNIX C/Curses reworking of an IBM PC reworking of an original DECUS VAX BASIC program. This Java version, Typist v3.0 was created by Simon Baldwin, simonb@sco.com, and will probably be my last word on the subject, since I now feel I have truly worked this one to death.

Thanks to the original authors, whoever they were, to D. Jason Penney for the initial conversion into C/Curses, and to George Ferguson for posting it to the Internet.

GNU GPL

Typist v3.0b (Java), Copyright (C) 1998 Simon Baldwin

This program comes with ABSOLUTELY NO WARRANTY; for details please see the file 'COPYING' supplied with the source code. This is free software, and you are welcome to redistribute it under certain conditions; again, see 'COPYING' for details. This program is released under the GNU General Public License.