JAWS Scripts For TeamTalk Classic
Doug Lee
Last Revised January, 2020

This document describes the scripts for TeamTalk4Classic and TeamTalk5Classic (from now on referred to simply as TeamTalk) and provides tips for using this application with JAWS. This document can be opened from within TeamTalk via a double press of JAWSKey+F1 (or Insert+F1).

This document is laid out for easy navigation using JAWS HTML heading navigation commands: H will move through all headings, 2 through major sections, and 3 and 4 through any subsections or subsubsections.

Table of Contents

Why Scripts For TeamTalk?

The classic TeamTalk client is very accessible already, without the need for any custom scripts. These scripts are not required for effective use of TeamTalk. They do, however, provide a few features beyond TeamTalk itself and are publicized here in case these are sufficiently useful to people besides the script author. See the Summary of Commands and Features section for a list of features provided by these scripts.

System Requirements For JAWS Users

There are no known system requirements for these scripts beyond those for TeamTalk itself. Only the Classic versions of TeamTalk are supported. All testing in recent years has been against TeamTalk 5 Classic. JAWS 15.0 or later is required. JAWS versions older than 2018 have not recently been carefully tested with these scripts.

Script Installation Instructions

To install these scripts on a new system:

  1. Load JAWS if this has not already been done. This will require administrative privileges on the computer.
  2. Run JAWS as the user for whom the scripts are to be installed. This and the following steps must be performed for each user of the computer who will be using JAWS with these scripts.
  3. Run the installer for these scripts and follow the on-screen directions. Be sure to install the scripts in the currently running JAWS version if a JAWS version list is presented.
  4. To verify successful installation, type Ins+Q from within TeamTalk. part of the JAWS spoken response should be a revision number. If you do not hear a revision number, the scripts are not correctly loaded.

Summary of Commands and Features

This section is a summary of the commands and features provided by these scripts. For further information on script commands, refer to the next section and its subsections.

Note that many commands below are key sequences rather than key combinations. All of these sequences begin with a "command" key, by default the left bracket ([). This avoids collisions between script commands and native keystrokes. Users can change the prefix key if necessary by typing [ followed by JAWSKey+C or Ins+C. The change will survive across script and JAWS updates.

In any list control, the scripts can make multi-letter searches possible. This is especially handy in the F2 server list when there are many servers, and in a server's User Accounts list when there are many accounts. Single-letter searches as supported by the lists themselves still work as they normally would. To enable this feature, turn it on in Quick Settings; it is off by default so as not to startle those who are accustomed to TeamTalk's native single-character search support.

A bit of fine print on how the above feature works in tandem with TeamTalk's built-in list searching:

From any TeamTalk window:

When in the main TeamTalk window containing the tree of channels and participants:

In a channel or private chat window:

* Messages in a private chat window appear most recent first. These scripts correct this, but timestamp information appears after rather than before the message to which it applies as a consequence.

In the account list found in the User Accounts dialog, the scripts cause JAWS to announce not only each list entry but also the following, in this order:

This significantly simplifies verification of the set of accounts on a server. This extra information is only included if the focused Accounts list item is selected. Note that when the User Accounts dialog first opens, no account is selected; use an arrow key or Space to select an item.

Commands and Information

This section and its subsections describe the commands made available by these scripts in detail.

Enter To Enter a Room or Chat

With the scripts running, Enter on a room name will enter the room if you are not already in it. Enter on a person's name will open a chat window for that person. More generally, Enter will perform a double click at the current PC cursor location, with whatever effect that may happen to cause.

Moving Focus Among Controls

In the main TeamTalk window, [ c or Ctrl+Shift+C will focus the channel tree. In the main window and in private chat windows, [ i or the older Ctrl+Shift+E focuses the chat input box, while [ o or the older Ctrl+Shift+H focuses the chat history output box. These commands are simply for convenience and speed.

Checking TeamTalk Status

While the scripts are running, JAWS will announce automatically any changes in the following on-screen indicators, which appear as checkboxes in a toolbar near the top of the TeamTalk window. For each of these, JAWS will say the indicator name along with "Enabled" or "Disabled" when the indicator changes.

Additionally, if TeamTalk connects to or disconnects from a server, JAWS will say "Connected" or "Disconnected," respectively.

[ s or Ctrl+Shift+S will announce a summary of TeamTalk status information. This generally consists of a list of those items from the above set that are currently checked. Pressing Ctrl+Shift+s twice quickly, or typing the sequence [ Shift+s, will announce a somewhat more verbose version of the same information.

The standard JAWS command for announcing the application status line, Ins+PgDn, will reliably announce this information even if it is clipped on screen. In a User Information dialog, such as is produced by typing Ctrl+I on a user name in the channel tree, this command will announce per-second packet reception information for the indicated user. Packet counts for voice, media audio, and media video may be announced. The numbers announced after each name are per-second packets received, or in the case of video, per-second frames received. If packets were lost during that second, the number of lost packets will also be announced. An example announcement is, "Voice 25 loss 1, media audio 25."

A few advanced notes on User Information packet information:

Scanning For Members

The scripts add commands for searching for members on the current server, so the user need not rifle through all levels of an involved tree structure of channels to find them all.

There are two basic ways of searching for members: in tree order, and in order of arrival on a server. Users will most likely use the first of these methods most often, but the second may sometimes be useful for spotting newcomers. (The native Ctrl+Shift+U command in TeamTalk itself is also useful for this, however.)

The commands for searching for members in tree order are

Ctrl+DownArrow and Ctrl+UpArrow
Search forward or backward from the current point for the next member, at any tree level. If a member is found, you will be moved to that member's entry in the tree, and if necessary, the tree will be expanded to include that node on screen.. If no next member is found, JAWS will say "No more members."
Ctrl+Home and Ctrl+End
Move to the first or last member in the tree, again expanding and placing focus on the member's entry as necessary.

The commands for moving in order of arrival are similar but include an additional Shift key:

Ctrl+Shift+DownArrow and Ctrl+Shift+UpArrow
Search forward or backward from the current point for the next member, in order of arrival. If a member is found, you will be moved to that member's entry in the tree, and if necessary, the tree will be expanded to include that node on screen.. If no next member is found, JAWS will say "No more members."
Ctrl+Shift+Home and Ctrl+Shift+End
Move to the first or last member in arrival order, again expanding and placing focus on the member's entry as necessary.

Note: The method used for determining member arrival order is based on observations and not on any documented or promised TeamTalk behavior. As such, both the functionality itself and the accuracy of the ordering are subject to change or error. In other words, the author believes that the above commands move in arrival order per channel but has not managed to prove that this is ever or always true.

Cycling Through Channel and Chat Windows

The scripts make Ctrl+` and Ctrl+Shift+` move forward and backward, respectively, through all visible channel and chat windows, including those from all currently running instances of TeamTalk. "Forward" usually means in order of creation on screen.

Useful Tips and Tricks

Here are some potentially useful tricks for improving efficiency in TeamTalk using these scripts:

Keeping Track of What Is Unread In a Chat

The chat navigation system for reading sequentially through chat messages keeps track of the last message read in each channel and chat window. This means that, if you use these commands consistently, you can check for new messages in a chat window without moving focus or losing track of last position in the chat. This is far more practical than [ followed by numbers or Alt with numbers in a very busy text chat, because the "last message" can change quickly.

There are two ways to use the chat navigation system:

Finding a New Chat Message Quickly

the following plan produces a quick way to find any chat window from anywhere in Windows:

Known Issues

Sometimes, the reporting of who is online versus idle and/or who is currently sending sound stops working on arrows through a channel's participants. This occurs when the icon that indicates these things scrolls wholely or partly beyond the edges of the window. The scripts attempt to prevent this by auto-scrolling the treeView such that the icons are fully visible, but this occasionally fails. If JAWS does not say "online" or "idle" for a participant, first try maximizing the window by typing Alt+Space and then x. If that does not help, try using the left arrow to close all nodes, then navigate back down to the entry of interest. This usually causes the status indications to work again. (The Ctrl+G native TeamTalk command introduced in TeamTalk 5.1 is more reliable.)

If navigation through the channel tree is slow, try turning off the code that analyzes tree icons for status information. This is done by unchecking "Analyze channel tree icons" in Quick Settings, or in older JAWS versions, Verbosity Options.