This document describes the scripts for the TeamTalk 5 Qt client 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).
Note: This client is sometimes referred to here as the Qt (officially pronounced "cute") client to distinguish it from the retired Classic client.
There are no known system requirements for these scripts beyond those for TeamTalk itself. These scripts only support the Qt client. JAWS 17.0 or later is required. JAWS versions older than 2021 have not recently been carefully tested with these scripts.
To install these scripts on a new system:
For tips on migrating from the TeamTalk Classic client to the Qt client, and for differences between the clients, see the TeamTalk Classic To Qt Migration Guide. That page provides the following resources:
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.
In the main TeamTalk window, [ C will focus the channel tree. This works no matter which tab is active in that window.
In the main window and in private chat windows, [ E focuses the chat input box, while [ H focuses the chat history output box. In the main window, this only works when the Chat tab is active. In a private chat (PM) window, there may not be an input edit box if the chat recipient has logged out after the box was opened.
In a private chat window, [ T announces whether the other user is typing. The scripts can also announce and/or make a sound when the other user is typing, depending on Quick Settings options. Note that not all TeamTalk clients send the necessary internal notifications to make this work. In particular, the Windows/Linux/MacOS Qt-based client does, but the Windows classic and iOS clients do not. At this writing, text clients such as TTCom also do not. If you are unsure of why you do not receive typing notifications in a particular chat, use Ctrl+I on the user in the channel tree to check the user's client type. Typing indicators are not available in a channel window.
From within any TeamTalk window, type the sequence [ N to move to the next visible TeamTalk window, and the sequence [ Shift+N to move to the previous one. These will include all chat windows and main TeamTalk windows from all open visible instances of TeamTalk Qt. The order of windows may sometimes seem arbitrary but is usually related to the order of window creation.
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.
[ 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 sequence [ Q will toggle Question mode via one of the buttons on the toolbar. Question mode produces a blinking icon beside your name in other participants' channel trees. This is similar to raising your hand in some other chat applications.
The standard JAWS command for announcing the application status line, Insert+PgDn, will reliably announce status 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.
By default, JAWS will maximize main and chat TeamTalk windows automatically so that message reading will be more efficient, rather than allowing TeamTalk's native window sizing. Native window sizing can be turned on via the "Allow native window sizing" checkbox in Quick Settings (JAWSKey+V).
As you Up and Down arrow through a chat history window, JAWS will produce a small click sound when you encounter the top or bottom of history. This only applies to the edit version of chat history, so that the repetition of the current line at the top or bottom does not sound like an actual duplicate line. In the list version of history, neither speech nor a beep occur on colliding with the top or bottom edge of the list.
This client allows activation of links in a chat message with Enter: In the edit version of chat history, navigate to the actual link, not just to the line containing it, and press Enter to activate it. If a line contains multiple links, navigate to the one you want before pressing Enter. For the list version of history, navigate to the line containing the link or links and press Enter. If the line contains only one link, it will open; otherwise, a menu of the links will appear. It may be necessary to press the Down arrow once to hear this menu.
Message date and time stamps can be ignored during navigation through chat history even when displayed by TeamTalk.
This feature is toggled on and off in the JAWS Quick Settings dialog (JAWSKey+V) with the
"Suppress message date and time stamps when shown by TeamTalk" option.
The JAWS SayLine
command, Insert+Up, will speak the stamps regardless of
this setting.
Typing that command twice will, as usual in JAWS, spell the line but then will honor the suppress-stamps
setting for convenience if the chat history style is edit.
Note that some types of entries in a message chat window may not have their stamps suppressed even when this
option is in effect, for edit-style history.
Such entries include message of the day, this user joining a channel, and server name entries. At this
writing, these are not formatted with the leading asterisk (*
) that appears before most system
message entries.
The scripts improve JAWS' reporting of correct information for Left and Right arrows, Backspace, Delete, etc. in an edit box. This does not work in a password box, however. For these, JAWS will report the number of asterisks shown.
The standard JAWS Ctrl+JAWSKey+V command for reporting the current application version reports the full correct version number. Without the scripts, the version number may be spoken oddly.
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.
Other script features:
SayWindowTitle
command, Insert+T, will indicate when there are multiple
windows open for the current TeamTalk instance.
This happens, for example, when Ctrl+Shift+U is used to open the Online Users window.
SayLine
command, Insert+Up, also reads all columns of the grid.
The other columns indicate whether the user is allowed to transmit text, voice, video, etc.
Features specific to field names and types:
The scripts provide a system for rapid changing of sound devices and/or sound device settings. This is considered an advanced feature of use mostly to those with complex needs, Virtual Audio Cable setups, etc. Users of the feature discussed in this section would also profit from understanding TeamTalk profiles, which are not covered in this document but which provide rapid means to launch TeamTalk instances with different configurations that will not collide with each other when settings are changed during use.
The system works by allowing storage of a menu option for future toggling or activation with a shortcut. After a shortcut is made, using it will activate its menu option very quickly without requiring the user to go through all the menu levels again to find it. Commands for this system begin with the sequence [ M and end with a plain digit to activate a shortcut, Ctrl with a digit to set a shortcut, and Shift with a digit to report the current setting of a shortcut.
There is one additional sequence, [ M L, which displays a list of assigned shortcuts. Pressing Enter on one of these will execute it. To close the list without running a shortcut, press Esc.
To create a shortcut:
To use a shortcut, type [ M followed by the shortcut's digit. JAWS will say the name of the final menu item being activated. Note that it may take a couple seconds for the shortcut to complete its execution.
To check what is assigned to a shortcut, type [ M followed by Shift with the digit. In this case, JAWS will say the full menu path of the item that would be activated. Alternatively, type [ M L to display a list of all shortcut assignments at once.
This shortcut system can actually be used to assign a shortcut to any menu item in TeamTalk, but most items that are not for sound device control already have keyboard shortcuts in TeamTalk itself. Assigning shortcuts to items like Enable Echo Cancellation or Enable Denoising might be useful though.
There are a few caveats to keep in mind when using this system:
Screen readers may repeat history entries during Up and Down arrowing, especially if the window is not maximized. This is a UIA issue.
Leaving the cursor at the end of a chat history, such as after typing Ctrl+End, will cause the cursor to remain at the end as new lines are added. This means that you must avoid leaving the cursor at the very end of the history if you want TeamTalk to remember where you left off reading. It is ok to leave the cursor anywhere else on the last line. This issue can also occur if you use the history control's Context menu to clear the message history, because doing so will often, if not always, cause the cursor to be at the end of the history as new messages arrive.
If a user is selected in the channel tree, such as by arrows, and that user changes status, such as when starting or stopping a stream or going away, screen readers may report a focus change even though none has occurred. This is a Qt issue. A good workaround is to move focus to a channel rather than a user before moving away from the channel tree.
Braille support is not well tested.
Here is the revision history of these scripts, most recent revision first:
SayLine
command will include timestamps for a list-format chat
entry even though it can be removed for an edit-format one.
Balancing this out, timestamps are removed from all line types in list-style history whereas some remain for
edit-style history entries.
UIARefresh
calls are removed, as they appear no longer to be necessary.
These calls are suspected of causing the
crashes on TeamTalk focus addressed in a previous revision.
Translators: There are changes in one message file.
Diff showing message file changes
Lines starting with a dash are old, with a plus are new, and with a space are for context.
This material is offered experimentally to see if it helps translators keep up with project changes.
=== modified file 'teamtalk_lang.xml'
--- old/teamtalk_lang.xml 2024-07-08 17:35:43 +0000
+++ new/teamtalk_lang.xml 2024-08-15 18:54:11 +0000
@@ -31,6 +31,7 @@
x=Type Ctrl+Alt+X to mark one or more channel participants for moving
v=Type Ctrl+Alt+V to move channel participants saved earlier
m=Menu hotkey|Hotkey
+m&l=List hotkey assignments
m&Digits 0 through 9=Execute previously saved hotkey
m&Shift with digits 0 through 9=Speak hotkey assignment
m&Ctrl with digits 0 through 9=Save hotkey assignment
@@ -96,6 +97,10 @@
</message>
<!-- Messages for the mhs module. -->
+<!-- Title of key assignment list dialog. -->
+<message name="mhs___msgKeyList">
+Key Assignments
+</message>
<!-- For when the user tries to save an item but focus is not on a menu item. -->
<message name="mhs___msgNotMenuItem">
Focus is not on a menu item
@@ -119,6 +124,14 @@
<message name="mhs___msgNotInMainWindow">
Focus is not in the main window
</message>
+<!-- How to point out a menu item that can't be found. -->
+<!-- %1 is the menu item path. -->
+<message name="mhs___msgNotFound">
+Unable to find menu item %1
+</message>
+<message name="mhs___msgGeneral">
+Menu processing error
+</message>
<!-- Messages for the typing module. -->
<!-- Case-sensitive text that must appear in a typing indicator for it to be considered one. -->
Translators: There are changes in one message file.
Diff showing message file changes
Lines starting with a dash are old, with a plus are new, and with a space are for context.
This material is offered experimentally to see if it helps translators keep up with project changes.
=== modified file 'teamtalk_lang.xml'
--- old/teamtalk_lang.xml 2024-04-18 17:46:43 +0000
+++ new/teamtalk_lang.xml 2024-07-20 15:03:41 +0000
@@ -30,6 +30,10 @@
Shift+s=Speak more verbosely the statuses of toolbar icons
x=Type Ctrl+Alt+X to mark one or more channel participants for moving
v=Type Ctrl+Alt+V to move channel participants saved earlier
+m=Menu hotkey|Hotkey
+m&Digits 0 through 9=Execute previously saved hotkey
+m&Shift with digits 0 through 9=Speak hotkey assignment
+m&Ctrl with digits 0 through 9=Save hotkey assignment
</message>
<!-- What to say when the sequences [ X and [ V, respectively, are typed. -->
<message name="msgMark">
@@ -91,6 +95,31 @@
%1, %2
</message>
+<!-- Messages for the mhs module. -->
+<!-- For when the user tries to save an item but focus is not on a menu item. -->
+<message name="mhs___msgNotMenuItem">
+Focus is not on a menu item
+</message>
+<!-- For when trying to save from a non-leaf menu item. -->
+<message name="mhs___msgNotLeaf">
+Focus is on a menu item that has a submenu
+</message>
+<!-- Save success and failure messages. -->
+<message name="mhs___msgSaved">
+Hotkey saved
+</message>
+<message name="mhs___msgSaveError">
+Error saving hotkey
+</message>
+<!-- For when Speak is called on a key with no assignment. -->
+<message name="mhs___msgNoAssignment">
+Not assigned
+</message>
+<!-- For when Exec is called from a menu, user buffer, dialog, etc. -->
+<message name="mhs___msgNotInMainWindow">
+Focus is not in the main window
+</message>
+
<!-- Messages for the typing module. -->
<!-- Case-sensitive text that must appear in a typing indicator for it to be considered one. -->
<!-- A space will be required before this text in the string being checked. -->
@@ -121,7 +150,7 @@
Stream Media File to Channel|Stream to channel
Mute All|Mute all
Record Conversations to Disk|Store conversations
-Enable Question Mode|Question mode
+Toggle Question Mode|Question mode
</message>
<!-- How checkboxes on the toolbar are announced when activated (checked) or deactivated. -->
<!-- %1 is a name from the above list of item names (the part after the vertical bar). -->
UIARefresh
request being made too soon after
TeamTalk obtained focus.
details
tag
that may be expanded to show them. Among the benefits of this, heading count is reduced and text searches won't
match very old material.
This is the first release of these scripts for the Qt client. The revision number is high because these scripts originated as scripts for the TeamTalk Classic client.