JAWS Scripts For TeamTalk Classic
Doug Lee
Last Revised July, 2021

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.

System Requirements For JAWS Users

There are no known system requirements for these scripts beyond those for TeamTalk itself. These scripts only support the classic client. All testing in recent years has been against TeamTalk 5 Classic. JAWS 17.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 keystroke 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 keystroke, 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.

Script Commands and Features

Moving Focus Among Controls and Windows

In the main TeamTalk window, [ C will focus the channel tree.

In the main window and in private chat windows, [ E focuses the chat input box, while [ G focuses the chat history output box. ([ H already has another use for navigating among chat messages.)

From within any TeamTalk window, type the sequence [ N to move to the next visible TeamTalk window, and the sequence [ P to move to the previous one. These will include all chat windows and main TeamTalk windows from all open visible instances of TeamTalk. The order of windows may sometimes seem arbitrary but is usually related to the order of window creation.

Managing Chat Messages

The scripts include a comprehensive system for navigating through chat messages in the current window and keeping track of a "current" position among them. The system 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. There are also commands for checking the most recent messages without altering current position.

The chat reading system consists of typing [ followed by any number of the following, in any order:

Press Esc to exit this navigation system.

Scanning For Users

The scripts add command sequences for searching for users on the current server, so you need not rifle through all levels of the channel tree structure to find them all. For these commands to work, the option in Preferences > Display called "Show number of users in channels" must be checked, as it is by default.

There are two basic ways of searching for users: 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.)

To search for users, type the sequence [ U followed by any number of the following, in any order (note these are the same as for chat message navigation):

Press Esc when finished moving among users.

All of these commands will search the entire channel tree and will, as necessary, expand channels on screen in order to place focus on a user in a channel.

Note: The method used for determining user 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. The commands have worked consistently for many years, however.

TeamTalk Status Reporting and Inquiry

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 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. 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. This information typically includes the rate at which packets are being received (RX) and transmitted (TX). Sometimes, it will also include a ping time, which is an indication of how long it takes data to travel between your machine and the TeamTalk server.

Examining Packet Statistics

In a User Information dialog, such as is produced by typing Ctrl+I on a user name in the channel tree, the Insert+PgDn 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 this packet information:

Incremental List Searching

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:

Special User Accounts Dialog Support

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.

Miscellaneous Commands and Features

The scripts report who is online versus idle and who is currently sending sound as you arrow through participants in a channel. This feature only works if "Analyze tree icons" is checked in Quick Settings. This feature may slow navigation under Windows 10, which is why the "Analyze tree icons" checkbox exists in Quick Settings. Ctrl+G also speaks some of this information natively (without requiring scripts).)

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

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.

Useful Tips and Tricks

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

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 294, July 4, 2021, tested against TeamTalk Classic 5.7 and 5.8 versions

Revision 278, June 14, 2021, tested against TeamTalk Classic 5.7 and 5.8 versions

This is a fairly major script update. Please read carefully; some keystrokes and key sequences have changed. The home of these scripts is also slightly changed; the new official URL for these classic client scripts is https://www.dlee.org/teamtalk/classic/. The original URL is now a TeamTalk Resources page for related resources on this site, including but beyond these scripts.

Changes in this update:

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:


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.