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

This document describes the scripts for 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).

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. Download and run, or run directly, 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 Insert+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.

Configuring the Classic Client

The following settings are recommended in the screens and menus indicated. Most if not all of these should be default settings; this section may however serve as a guide in case of trouble. The Preferences tabs are accessed by pressing F4.

Key Sequences

These scripts incorporate commands that consist of sequences of keystrokes, all beginning with a common prefix, or "command keystroke." This approach allows many script commands without the risk of conflicting with application keystrokes. See the "Multi-Key Command Sequences" section of the "Common Script Elements" document for further details, including how to explore the available script commands (similar to exploring a menu system), and how to change the Command key if necessary.

By default, the Command keystroke for these scripts is [. This document may refer to this keystroke as [ or Command; so, for example, [ Tab and Command Tab both refer to typing the prefix key, then separately the Tab key. Some sequences may consist of more than two keystrokes, or "levels"; for example, [ d r would refer to typing [, then d, then finally r.

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.

JAWS will appropriately name the channel tree in TeamTalk 5.6.0 where it is mislabeled as "Voice Activation Level" in the application itself.

The sequences [ X and [ V are added as alternatives to the TeamTalk native commands Ctrl+Alt+X and Ctrl+Alt+V for marking and moving channel participants to another channel. These duplicate commands may be useful to those who struggle with compound keystrokes or prefer sequences over compound keystrokes.

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 combination 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, Insert+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.

Revision History

Here is the revision history of these scripts, most recent revision first:

Revision 267, September 20, 2020

Revision 265, August 21, 2020

Revision 260, May 25, 2020

Revision 253, January 13, 2020

Revision 250, January 6, 2020

Incremental search works in list controls. This means, for example, that you can find a server in the F2 list by typing several characters of its name. Similarly, you can find a user account in the User Accounts list (Ctrl+Shift+L) by typing the first few letters of the account name.

Revision 248, January 4, 2020

During navigation through the list of accounts in the User Accounts dialog, JAWS will read not only the name of each account but also, 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.

Revision 243, May 30, 2019

Revision 227, May 18, 2018

Revision 220, September 2, 2017

Installer updates:

Revision 219, August 31, 2017

This update adds support for JAWS 2018. There is also a minor possible Braille speed increase.

Revision 218, March 21, 2017

Revision 206, June 26, 2016

This revision streamlines support for the latest TeamTalk 5.1 releases that speak chat messages on arrival natively and include proper names for more on-screen controls, such as volumes. As such, support for older TeamTalk versions is reduced in this revision.

There are also fixes for the commands for cycling among TeamTalk windows (Ctrl+` and Ctrl+Shift+`):

Revision 197, December 15, 2015

This revision fixes installer and compilation issues:

Revision 195, November 24, 2015

Chat timestamps always speak on Alt+NumPad5 regardless of verbosity settings, to provide a quick way to check the timestamp on a particular message.

Attempted to fix the problem of Ctrl+Shift+S occasionally saying nothing when multiple instances of TeamTalk are open at the same time.

Revision 192, September 30, 2015

The main change in this revision is that the installer works in JAWS 17 public beta 2. The change is necessary because of a change in script compiler flags between public betas 1 and 2 of JAWS 17.

Revision 191, September 16, 2015

This revision includes installer fixes only and supports JAWS 17 public beta.

Revision 189, June 15, 2015

Announcement of status information like who is sending sound, who is idle or online, etc., during navigation through the channel tree should be greatly improved on Windows 8/8.1 machines and high-DPI laptops under JAWS 15 and later. This enhancement may also apply on JAWS 14 but will not apply on older JAWS versions and has not been tested in JAWS 14 or older. These announcements may still fail to be completely accurate from time to time due to scrolling problems. In sufficiently new versions of TeamTalk 5, the new native Ctrl+G command will announce some of this information as well. (At this writing, Ctrl+G is only available in a beta TeamTalk 5 client.)

Anyone who sometimes found Ctrl+Shift+S silent should find this no longer to occur.

The standard JAWS Ctrl+JAWSKey+V command for reporting the current application version now reports the full correct version number.

The special code for making Ctrl+Left and Ctrl+Right navigate by word in a channel chat window is removed, because it actually worsened the behavior of these commands under recent JAWS versions.

The installer changed in this script version, with the following benefits:

Note that because of the last item above, the zip file is removed from this script version's distribution files. If you want to examine or manually install these scripts without running the installer, use 7Zip or a compatible application against the installer file to do so.

Revision 156, December 2, 2014

This revision lets Ctrl+Alt+Left/Right raise and lower voice volumes in TeamTalk 5 rather than saying "Not in a table" and doing nothing. This update also allows mostly silent installation via a /silent installer command-line option, and completely silent installation via a /verySilent option.

Revision 153, September 22, 2014

TeamTalk 5 (alpha, at this writing) should work with these scripts. As part of this, script files have been renamed. Anyone installing the scripts manually, without running the installer, must edit ConfigNames.ini in the JAWS user folder to link TeamTalk to the renamed file set. The following should work:

[ConfigNames]
TeamTalk5Classic=tt_classic
TeamTalk4Classic=tt_classic

Chat commands' no longer miss the first entry in a channel chat window. (This bug may never have gone public.)

Blank participant names with no flags (like "Sending") in the channel tree no longer get replaced by the next tree item. This was happening on at least some Windows 8.1 machines with high-resolution displays.

TeamTalk window switching (Ctrl+`) works even when a subdialog, like a volume control, is open over a TeamTalk main window.

When typed in a TeamTalk main window (as opposed to a private chat window) or in a dialog descended from one, such as a volume dialog, The SayWindowTitle command (Insert+T) includes the server name before the actual main window name. This is useful when multiple TeamTalk instances are running at the same time, because it helps identify which is which.

When a message arrives in a TeamTalk channel message window for a TeamTalk instance with an empty channel tree, which generally means there is no fully active server connection, and that TeamTalk instance is not in focus, the server name on that window's status line is used to identify the window to which the message is sent. This situation often happens when a non-current TeamTalk instance's connection breaks due to Internet issues and begins placing messages about retries into its channel message window. This fix makes it easier, when multiple TeamTalks are running, to figure out which one's connection is breaking.

Typing the SayLine command (Insert+Up) twice quickly should now spell the current line as it does in most applications.

Radio buttons no longer announce count and position on up and down arrows, for consistency with behavior in other applications.