JAWS Scripts For Unigram
Doug Lee
Last Revised January, 2025
This document describes the custom scripts for Unigram and provides
tips for using this application with JAWS.
This document can be opened from within the application via a double press
of JAWSKey+F1 (or Insert+F1)
when the scripts are running.
Table of Contents
System Requirements For JAWS Users
In addition to any system requirements for the application, the following
apply for JAWS users:
- The computer should be running Windows 10 or later, as the scripted application comes from the Microsoft
Store.
- JAWS 2018 or later should be used. The scripts will not
work with or install into JAWS versions older than 2018.
Script Installation Instructions
To install these scripts on a new system:
- Load JAWS if this has not already been done. This will require
administrative privileges on the computer.
- 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.
- 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.
- To verify successful installation, type Insert+Q from
within the application. 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.
In some cases, restarting JAWS may fix this issue.
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
These scripts provide the following commands beyond those provided by the application itself:
- For convenience, Alt activates or deactivates the Unigram navigation menu.
This menu is now required for opening popup windows such as Contacts and Calls.
- The sequence [ B brings up a list of buttons for selection. Press Enter
on a button's
name to click the button, or press Esc to close the list without activating any buttons.
This command can be especially useful for finding buttons such as Call.
It is also possible to Shift+Tab once from the button list and press Space or
Enter on the Focus button, to focus the chosen button without activating it.
This trick may be handy for moving to a month header in a conversation history list,
though only the month buttons that are currently visible on screen will appear in the button list.
Also, different versions of Unigram may or may not respond as expected to Up and Down
arrows after such a focus move.
- Alt+1, or the sequence [ 1, will focus the list of chats/conversations if it is on screen.
The focused list item should be the most recently focused item in the list.
Note that this list also includes any groups and/or channels to which you are subscribed.
- The sequence [ F tries to move focus to the first field in the currently active dialog area.
This can be very useful, for example, after selecting a page in the Settings screen, to move to the first
field on the page. It will also move to the Profile link of a contact or channel that is currently displayed
in the Chats tab.
- The sequences [ E and [ H focus the chat input box and chat history list, respectively,
in the active chat.
- The sequence [ U focuses, when possible, the "Unread Messages" indicator in the open chat.
This requires the indicator to be on screen at the time.
On first opening a chat with unread messages, Unigram typically does place this indicator on screen. This means
that typing [ U immediately after opening such a chat should usually work.
- The sequence [ M focuses, but does not activate, the "Open navigation menu" button. This button is
often useful as a starting point for tabbing into dialog areas.
Note though that this command may not work properly if a popup window is open, such as Contacts or Calls.
- The sequence [ T reports if anyone in the currently displayed chat is typing.
- If the audio player for voice messages is open, the following sequences manipulate it:
- [ Space presses Play or Pause. This can be used to pause a voice message without first finding it
in the message list.
This will also place focus on the Play/Pause button, from which tabbing forward will find other audio player
controls.
- [ P reports audio player progress, indicating number of seconds played and number of seconds total
in the current voice message.
- [ C closes the audio player, providing a way to stop playback of a message without remembering
position.
- The scripts include a system for reading chat messages without shifting focus away from the input edit box:
Type the prefix key, the left bracket ([) by default, then type as many of the following keys as desired
to navigate among chat messages. Press Esc to exit the chat review mode when done.
The navigation keys comprise the right-hand portion of the home row on a standard English US QWERTY keyboard:
The semicolon (;) reads the last message available, J the previous from current position,
L the next from current position, and
K repeats the last-read message.
For users of the Dvorak keyboard layout, the row of numbers 7 through 0 respectively
perform the same functions.
(There is no command for jumping to the first available message because the first message in a chat history is
often not available without scrolling.)
- The standard JAWS commands for clicking with the right mouse button will, if executed while the PC cursor is
active, right-click the currently focused item. This feature can sometimes be used to obtain a Context menu when
the Application key does not do so.
- The standard JAWS
ReadBoxInTabOrder
command, JAWSKey+B, may be considerably faster than
it would be natively, depending on running JAWS version.
- JAWSKey+Q, along with announcing the active configuration name, will announce the revision number
of these scripts.
- Insert+F1, typed twice in quick succession, opens this document in the default browser.
These scripts also provide the following features:
- Full support in chat input edit boxes for autocomplete functionality for typing mentions,
including (in JAWS 2019 and later) the playing of sounds when an autocomplete box opens and closes.
(The sounds used are those used by JAWS natively for autocomplete boxes in Microsoft Outlook.)
To use Unigram's autocomplete feature in a chat,
type an at sign (@), optionally followed by one or more characters to restrict the member search;
then use Up
and Down arrows to search through names. Press Enter or Tab to make a selection
and close the autocomplete box, or just Backspace as many times as necessary to erase the partially
typed mention.
Warning: Space will not make a selection but will instead leave the @ sign and
whatever else you typed in the box with a subsequent space.
- Similar autocomplete support for typing slash commands in a bot chat, and for emoji options when they appear
for a chat input box. For emoji autocomplete, the file id may be included as part of what JAWS says to describe an
emoji. Many emojis have the same names and no other distinguishing characteristics that JAWS can report. Autocomplete
popups can appear for an emoji when one is pasted in via the Windows emoji selector, accessed with
Windows+Period.
- Sound and announcement indication of typing indicators in an active chat. Either or both of these features
may be switched on and off via the JAWS Quick Settings dialog but are active by default.
Typing indicators do not apply to notifications when someone is sending a voice or video message;
however, JAWSKey+T will report when someone is in the process of recording a voice message.
- Announcement and sound indicating the arrival of a new message in the current chat, or the editing of an
already-received message. These announcements and sounds may also be toggled on and off via items in Quick Settings.
By default, announcements are enabled and incoming message sounds are disabled, because Unigram natively supports
producing a sound for incoming chats.
More specifics on the sound and announcement features provided by these scripts, when enabled:
- When focus is in the chat message list, sounds will still occur; but announcements will not, so that new
messages will not intermingle with old messages as you navigate among them.
- During arrow navigation through a chat's message list, extremely long chat messages will be read in full rather
than being cut short by JAWS.
- When you send or edit a message, both sound and announcement will occur (if enabled of course).
- When you switch to a new chat, JAWS may announce the last message in the new chat as it appears. This is
because the scripts have difficulty distinguishing between a new message and a message that is only "new" on screen
but not newly sent. This author regards this side effect as useful; but for technical reasons, the side effect is
difficult to prevent without the risk of missing newly sent messages.
- Better naming of several fields and controls, especially in Settings screens.
- Evasion of double speech during navigation through the Chats list.
- Announcement of call duration and voice and video message lengths during navigation through a chat history list.
When a message is playing, the amount played so far will also be announced.
- Announcement of file information for a file transfer when one is encountered in a chat message list.
This includes the file name and can include the duration of the file.
During an active transfer, it also includes the amount so far transferred and the total size of the file.
- Indication of the origin of a forwarded message during navigation through a chat message list.
- Indication before rather than after a message of when it has not yet been seen by the recipient.
- Indication of which messages in a message list have been edited, before the message content.
- Announcement of radio button state after the user presses Space.
- More information reported by the JAWS
SayWindowTitle
command, JAWSKey+T. Information
included when applicable:
- The name of the active tab, and an indication of new items not yet read in the tab, such as Chats.
- When a chat is displayed, the chat's name and other status information shown, such as participant last-seen
time, member count for a group, and subscriber count for a channel.
- If the user in the active chat is typing or composing a voice or video message, the indicator text.
- When a Settings page is open, the page name when it can be found.
- Indications if the embedded audio player or the emoji panel are showing.
- Better pronunciation of the application name while the application is in focus.
Tips and Tricks
Unigram includes a number of
native keyboard
shortcuts
that will likely be of much use to screen reader users.
Use the letter O to move directly to the area of the page that contains the shortcut list.
(This is the JAWS command for moving to the next article on a page.)
Recent Unigram versions allow both coarse and fine playback speed adjustment for voice messages.
A quick way to manage playback speed:
- Start playing a voice message, then pause it with [ Space.
This will place focus on the button that will now be called Play.
- If you want to adjust speed while the message is actually playing, use Space or [
Space to resume playback.
- Tab past Volume to the Speed button and press Space.
This opens a menu containing a left/right slider and various specific speeds as options.
- To select a specific listed speed, use Up and Down arrows to find it and press
Enter to activate it and close the menu.
- If you instead wish to adjust the speed more precisely, use Up and Down arrows to
locate the left/right slider control, then use Left and Right arrows to select a speed.
Beware that Unigram may take a moment to change the playback speed as you arrow among fine-grain speed
options.
Press Enter when done to close the menu.
To copy a single message to the Windows clipboard, place focus on it and use the Copy option in the Context
menu for the message.
Starting in Unigram 10.2.0.4, Ctrl+C will also copy the focused message, properly formatted, to the
clipboard.
To select several messages at once, such as for copying as a block to the clipboard:
- Find the first message you wish to select.
- Open the Context menu via the Menu key, then choose Select.
The message you chose will be selected, and Unigram will be in a message selection mode.
- Arrow among the other messages and use Space to select or unselect messages.
JAWS will say "checked" when you select and "not checked" when you unselect a message.
In addition, JAWS will say "selected" before any selected message as you arrow through the list.
- When done selecting messages, use the Context menu again to choose the action you wish to perform on the
messages. Performing an action will exit the selection mode and unselect the selected messages.
- If you wish instead to cancel the selection process, press Esc to exit the selection mode and
unselect messages without performing an action.
The JAWS touch cursor sometimes might provide more information than the PC cursor, especially in Settings pages
where
it can find hints for fields, group headings, etc.
By Unigram 10.2 however, these tend also to be reachable via the Tab key.
In some cases, the JAWS "read box in tab order" command, Insert+B, is a handy way to read a
screen. Active call screens are good examples.
If Enter on a Settings page name does not open the page (depends on Unigram version),
Tab to and press Space on the button by the same name to open the page.
After opening a Settings page or subpage, it is necessary to Tab several times to reach the first
field of the newly opened screen area.
When setting input and output devices in Settings > Advanced > Call Settings, use F4 rather than
Alt+Down to open the combo boxes and then arrows to find a device and Enter to select it.
When setting a color theme in Settings > Chats, use Left and Right arrows to move among
choices (Light, Dark, etc.), then Tab to the radio button corresponding to the last-selected list
item and press Space to select the desired theme. Arrows will not move focus directly among these radio
buttons.
A fast way to scroll through members of a group is to type an at sign (@) into the chat's edit box,
then use Up and Down arrows to scroll through members via the autocomplete box. Press
Backspace when done, to clear the at sign out of the edit box.
Be aware that this trick will cause members to see that you are typing.
Also, this will only show the first 20 members.
You can also use this trick to look for specific members by typing partial names after the at sign; just remember
to clear all characters out of the edit box when finished exploring.
To play a voice or video message, find it in the chat message list, Tab once to its Play link,
and press Space to play. The Context menu,
reached with the Application key, also provides
alternatives such as saving, opening in another application, and opening the message's containing folder to
facilitate manipulation of these messages via Windows Explorer.
Voice message files have a .oga extension and are Ogg-encapsulated Opus data readable by players that
can handle this format, including the Groove Music app.
Video messages have a .mp4 extension.
To start recording a voice message in the current chat, type Ctrl+R. Type the same keystroke a second
time to send the recording when finished, or type Ctrl+D to discard the recording without sending.
This functionality is provided natively by Unigram and does not require scripts.
Known Issues
The following issues are known and may be encountered during use of the application with these JAWS scripts.
These issues may be fixed in a future update to the scripts or to the application itself.
If a channel message is forwarded into a group and the user reads the message from the group's message
history, JAWS will announce the number of views of the original channel message but will not indicate the
number of times the forward, in the group itself, has been seen. This information is available to assistive
technology and is probably also visually shown, though this visual display has not been verified.
According to the last test,
it is not currently possible to hear the name of a sticker before sending it. This would need to be fixed in the
application.
In some situations, notably large group conversations, it is possible to hear computer code-like material
instead of a message.
At this time, it appears that all of the following must be true simultaneously for this anomaly to occur:
- The current conversation is a large group chat.
- The chat was opened but no navigation via focus among messages has yet taken place.
- The user uses the scripted chat navigation system to read messages instead of moving
focus.
Moving focus among messages should fix this anomaly.
Braille support is not well tested and is likely incomplete.
Revision History
This is the revision history of these scripts, most recent revision first:
Revision 252, January 8, 2025, tested against application version 11.6
- This script revision tries to avoid saying too little for some file attachment entries in the
conversation list. This issue was seen by this script author for an m4a file attachment in late December.
- Alt+1 skips past top-of-list links, such as "Add your birthday," to reach the actual
Conversations list.
These links are actually coded as part of the list but do not allow arrow keys to move from them into the
conversation list entries.
- At a user's suggestion, for users of the Dvorak keyboard layout,
the row of numbers from 7 through 0 can be substituted for j through
semicolon for navigating among chat messages.
Translators: There is one small change in one message file,
to add the help text for the Dvorak keyboard layout support.
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 'unigram_lang.xml'
--- old/unigram_lang.xml 2024-11-01 23:13:44 +0000
+++ new/unigram_lang.xml 2025-01-08 17:01:05 +0000
@@ -31,6 +31,7 @@
p=Say audio player progress
c=Close the audio player if it is open
j k l semicolon=Read the previous, current, next, or last message in the current chat and keep track of position. Press Esc to leave this navigation mode.
+7 8 9 0=Alternatives to j k l semicolon for users of the Dvorak keyboard layout.
</message>
<!-- Tutor message text for the button that switches between silent and notification for an outgoing channel broadcast message. -->
<message name="msgSilentTutor">
Revision 245, November 19, 2024, tested against application version 11.4
Warning:
This revision is the first to support Unigram 11.3 and later properly. Older versions of Unigram 11 were not
fully tested, and this revision officially ends proper support for Unigram versions 10 and older.
Those wishing to use a version of Unigram older than 11.3 may try
script revision 224, which is documented under the next heading.
However, Unigram version 11.2 is not fully supported by either this or the older script revision.
Changes in this revision:
- Since tabs are gone in Unigram, the Alt with number combinations and the [ number
sequences are also removed, except that Alt+1 and the sequence [ 1 still focus the
chat list.
- The option for altering which chat list item is focused by the above commands is removed.
The most recently focused item will be focused; use Home to move to the start of the list if
necessary.
- For convenience, Alt activates or deactivates the Unigram navigation menu.
- Call duration speaks with call entries in a chat history.
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 'unigram_lang.xml'
--- old/unigram_lang.xml 2024-02-26 21:39:31 +0000
+++ new/unigram_lang.xml 2024-11-19 15:07:31 +0000
@@ -21,10 +21,7 @@
=|Command
b=Pick a button
f=First field in dialog
-1=Focus the Chats tab
-2=Focus the Contacts tab
-3=Focus the Calls tab
-4=Focus the Settings tab
+1=Focus the Chat list
e=Focus the chat input box
h=Focus the chat message history list
m=Focus the Open navigation menu button
@@ -51,13 +48,13 @@
<message name="msgNoOneTyping">
No one is typing
</message>
-<!-- The exact name of the Open Navigation Menu link. Case matters. -->
-<message name="scNavMenuLinkName">
+<!-- The exact name of the Open Navigation Menu button. Case matters. -->
+<message name="scNavMenuButtonName">
Open navigation menu
</message>
-<!-- For when the "Open navigation menu" link is not found. -->
-<message name="msgNoNavMenuLink">
-Navigation menu link not found
+<!-- For when the "Open navigation menu" button is not found. -->
+<message name="msgNoNavMenuButton">
+Navigation menu button not found
</message>
<!-- For when any of various other controls are not found. -->
<message name="msgNotFound">
@@ -117,23 +114,28 @@
Played %1 of %2 seconds
</message>
-<!-- Messages for tab management code. -->
-<!-- The names of various tabs. Case ignored. -->
-<!-- Warning: These are assumed to need localization, but (1) this is not verified, and (2) these names may never display. -->
-<message name="tabs___scChats">
-Chats
-</message>
-<message name="tabs___scContacts">
-Contacts
-</message>
-<message name="tabs___scCalls">
-Calls
-</message>
-<message name="tabs___scSettings">
-Settings
-</message>
-
<!-- Messages for the title enhancement code. -->
+<!-- The spoken name of chats for new message notifications. -->
+<message name="title___msgChats">
+chats
+</message>
+<!-- How to say if the menu is open but not in focus. -->
+<message name="title___msgMenuOpen">
+Navigation menu is open
+</message>
+<!-- The name of the navigation menu window. -->
+<message name="title___msgMenu">
+Navigation menu
+</message>
+<!-- How to announce that another window is open but not in focus. -->
+<!-- %1 is the window name. -->
+<message name="title___msgWindowOpen">
+%1 window is open
+</message>
+<!-- The name of the popup window for tooltips. -->
+<message name="title___scPopup">
+Popup
+</message>
<!-- The name of the Settings screen, case ignored. -->
<message name="title___scSettings">
Settings
Revision 224, March 28, 2024, tested against application version 10.9.0.0
- For users who do not choose to make Alt+1 always move to the first conversation in the
conversation list, this revision fixes an issue that caused Alt+1 to land on the
Archived Chats button when no conversation had yet been selected.
(The choice of where this command lands is an option in Quick Settings, opened with JAWSKey+V.)
- For some users and in some situations, navigation may be notably faster due to a change in this
revision's recognition of conversation message lists that need fixing.
Such methods of situation recognition must periodically be updated as the application evolves.
- The sound made when use of the chat navigation system strikes the start or end of the
available chat messages is now a short click rather than a system beep.
Besides being faster and thus more efficient, it is less ambiguous and more likely to come through the JAWS
sound output device rather than the system default device when they are different.
Revision 215, February 26, 2024, tested against application version 10.8.0.0
- Fixed a new surge of double speech in conversation message lists.
- Prevented repetition of a chat message with reactions on Tab from the message itself to the
reaction list.
- Updated the script code that forces Unigram to repair its accessibility information structure for a
conversation message list when necessary.
Details on what this means
Unigram, like many modern applications, produces a UI Automation (UIA) element tree that screen readers can
examine to figure out what is on screen.
Unfortunately, for conversation message lists, this tree is sometimes structured incorrectly, so that the
focused message in the list appears to be parented by a strange element or directly by the element for the
entire Unigram window.
Because the various types of this misconstruction can cause JAWS to misread chat entry information, the
scripts provoke a rebuild of this element tree when a problem is detected.
This may cause a brief pause during navigation among chat messages but will also prevent misreading of the
messages themselves.
- For translators:
The "Messages for the err module" section is removed from
unigram_lang.xml
.
22 older revisions back through February 16, 2020
Revision 209, January 23, 2024, tested against application version 10.4.0.4
- The "not seen" announcement again works as expected as of Unigram version 10.4.0.4.
- JAWS no longer repeats the name of a channel before every message in the channel.
- The new ability to use Ctrl+C to copy a message to the clipboard is
documented. This capability was added to Unigram in version 10.2.0.4.
Revision 205, November 16, 2023, tested against application version 10.2.0.1
This revision is for those who have upgraded to Unigram 10.2. Do not update to this script revision before
updating Unigram to 10.2, or some script features may stop working until you upgrade Unigram.
- There is a new [ F sequence to move focus to the first field in a dialog
area.
- Commands and sequences to jump to specific tabs work in Unigram 10.2. These are Alt with
numbers and [ followed by numbers.
- The key sequence for moving focus to the navigation menu button, [ M, works in Unigram 10.2.
- Insert+T will include the page name when a Settings page is displayed.
- This revision includes minor updates to improve support for Windows 11.
- There is a semi-undocumented key sequence, [ Ctrl+E, for use in diagnosing script problems.
This command will announce any messages associated with recent error conditions that caused the scripts to
emit a system beep sound.
These messages are sometimes technical in nature and are intended for script developers. Because of this, these
messages are not localized and will always be spoken in English when the sequence [ Ctrl+E is typed.
Revision 196, September 27, 2023, tested against application version 10.1.0.2
- Insert+T includes information about which screen is active in Unigram 10.1.0.2 as in older
Unigram versions.
- Selected messages in a conversation will say "Selected" before the message.
- This document includes a tip on how to select multiple messages at once, such as for
copying many messages at once to the Windows clipboard.
- The code for deciding how to read messages has been significantly rewritten. User benefits of this:
- Vote counts on polls speak.
- Comment counts for channel messages speak as before but no longer require a localized message constant in
unigram_lang.xml
.
(Translators: You can delete the chat___msgComments
entry in that file.)
- The Known Issues section of this document is updated.
- There is a hint on how most efficiently to find and read the list of native Unigram
keyboard shortcuts.
- By popular vote, old history entries in this document section are now hidden inside a
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.
Revision 189, September 4, 2023, tested against application version 10.0.0.3
- Chat messages from you that have not yet been seen by the recipient will now say "not seen" before rather
than after the message.
Seen messages still wait until the end of the message to say "seen," to avoid a lot of repetitions of "seen"
since seen messages retain that status indefinitely in this application.
- The JAWSKey+T support for indicating the number of unread chats and messages works in Unigram 10.
The reporting of mentions is also improved.
Script translators should update the entries in
unigram_lang.xml
under the heading "Messages for
the title enhancement code" to make this feature work in non-English languages.
- JAWS should no longer double-speak during arrowing through a conversation history
and should also stop saying "not checked" for each message.
- Alt+3, when it moves to the Calls tab, announces this and focuses the call list, just as
Alt+1 and Alt+2 do for chats and contacts, respectively.
Note that in recent Unigram versions, Alt+2 through Alt+4 may not work unless the respective
tab has first been opened from the navigation menu.
- The [ M sequence for focusing the menu button works in Unigram 10.
- The [ H sequence for moving to a conversation's message history list avoids landing on the
"Pinned messages list" button when shown.
- The [ R command for toggling voice message playback rate between normal and double speeds is
removed, because Unigram's significant upgrade to this control rendered this command obsolete.
Documentation on how to adjust playback speed, including both coarse (0.5x at a time) and
fine (0.1x at a time) adjustments, is included for this script revision.
- Specific support for the "Tab farther" button of Unigram 8 fame is removed, as
this button is by now gone from Unigram.
There are a few other bits of code for old Unigram versions that are also removed for efficiency.
- Documented the use of the button list command sequence ([ B) as a
means to jump to specific months in a conversation's message history list.
- The
unigram_lang.xml
file contains a comment above the tab name entries explaining that all
but one appear to require localization in non-English Unigram installations. Thanks to Alkor for help with
this discovery.
- The UIA support is refactored significantly and updated to account for recent increases in JAWS' UIA support.
A JAWS restart after installing this script update is recommended, though not required.
This refactor is being applied to several projects.
Users who use several of this author's script sets may notice a slight reduction in JAWS' memory consumption as
these updates progress.
Revision 161, November 17, 2022, tested against application version 9.1.0.7877
- Dates again read as expected during arrowing through a conversation's message list.
- The temporary fix to arrows in message history is removed for lack of continuing need.
This temporary fix was included in revision 158.
Revision 158, July 28, 2022, tested against application version 8.4.0.6853
- These scripts are updated to load for Unigram versions whose application name starts with Telegram instead of
Unigram.
If your scripts don't load for your instance of Unigram, run this script installer to remove and reinstall the
scripts, then restart JAWS to make the change take effect.
- This script revision includes an optional temporary fix to the Unigram issue of the Down
arrow
jumping too far ahead in a message list.
This issue is reportedly already fixed in Unigram itself as of this writing, but the fix has yet to arrive in
the Windows app store. This script author finally implemented this workaround after waiting at least two weeks
for that arrival to occur.
The fix is not enabled by default. To turn it on, enter Quick Settings with JAWSKey+V and check the
item called "Fix Down arrow in message lists."
Turn this setting off again once the Unigram fix is released and updated on your computer.
There are two caveats for this fix:
- There may be an occasional brief pause when you first press the Down arrow in a newly opened
message list, because the scripts must also sometimes cause Unigram to repair its own UIA accessibility
information structure before the fix can work.
- Arrows may still jump unexpectedly once or twice in a new list, for reasons not related to the bug being
fixed here. In particular, sometimes initial focus in the message list lands far from the end, and arrows from
there don't initially move quite as expected.
- The perhaps infamous "Nothing to see here, tab further" button is now just called "Tab farther."
(The Unigram author created this button to avoid various focus loss problems and tried to give it a name that
would ensure that people would find the more important controls on each new screen.)
- Many Settings page fields read header and descriptive information automatically.
More combo boxes in Settings also speak their names.
The Unigram version information control in Settings also speaks.
- Insert+T again reports unread message counts in Unigram 8.8.0.
- The sequence [ M for moving to the Open Navigation Menu control works in recent Unigram versions.
- Up and Down arrows on slider controls, notably the one that controls position in a
playing voice message, read the correct time rather than the one in effect before the keystroke.
- The odd character that has long broken up time stamp fields is removed, mostly to improve appearance for
braille users.
- The sequence [ B brings up a list of buttons for selection. Press Enter on a button's
name to click the button, or press Esc to close the list without activating any buttons.
This command can be especially useful for finding buttons such as Call.
- The Remove buttons for options, found when creating a poll, are named by JAWS.
- A few unusual message types in a message list speak meaningful content instead of code names like
"Unigram.ViewModels.MessageViewModel."
Revision 135, May 4, 2021, tested against application version 7.7.0.6179
- The scripts now load for users of Unigram releases that do not come through the Microsoft app store.
Revision 134, April 26, 2021, tested against application version 7.7.0.6152
- The [ E sequence for focusing the chat input edit box works again in channels, where its name is
"Broadcast" rather than "Message."
- There is a bit of protection against misreading during navigation through the conversation list when Unigram
either structures the MSAA and UIA trees incorrectly or fires irregular or untimely events. The last version in
which this author saw such behavior, and very rarely at that, was Unigram version 7.2.0.5889.
Revision 129, March 27, 2021, tested against application version 7.2.0.5889
- The [ H sequence for focusing chat history works even when stickers are enabled.
- Checkboxes in a live poll chat entry will announce percentages as they receive focus via Tab.
- This document explains how to record a voice message and also includes a link to the
Unigram keyboard
shortcut documentation.
- Some old code is removed, and there are minor updates to improve support for JAWS 2021.
Revision 122, November 11, 2020, tested against application version 7.2.0.5752
- During navigation through messages in a channel, JAWS will prefix commented messages with an indication of
how many comments are attached. Tab to the comments link and press Enter to open the comment
thread for reading.
- Typing a list focus command such as Alt+1 should indicate if the sought list is empty, and therefore
not focusable, instead of saying nothing.
This can happen, for example, after pressing the "Archived Chats" button when there are no archived chats.
- Fixed Alt+1 and Alt+2 to work in Unigram version 7.2.0.5752.
- Fixed honoring of the Quick Settings "Focus first chat list entry" option.
- Fixed the [ C sequence for closing the audio player so it works in Unigram version 7.2.0.5654 and
later.
Starting in that version, the Volume button has the same name.
- Fixed the name of the audio player's Volume button in the same Unigram versions.
Revision 118, October 12, 2020, tested against application version 7.1.0.5486
- Fixed
SayWindowTitle
(Insert+T) to work as described in Unigram version 7.1.0.5486,
where the internal name of one of the screen elements changed
and the internal organization of Settings pages also changed a bit.
SayWindowTitle
also includes the name of the active tab, even when there are no new items in it,
and also includes "Search" when the Search screen is open.
- JAWS reads the dates of calls in the Calls tab along with what was already announced.
- Keystroke names in this document are more consistent, and there are other minor documentation improvements.
- Fixed a bug that could cause some localized strings not to be spoken where expected.
- Many internal improvements to code used to name fields.
Revision 108, June 07, 2020, tested against application version 4.0.0.5098
- Worked around cases where Unigram list items, usually if not always in the list of conversations, claim via
UIA to be parented by other invisible list items.
This caused JAWS to read random-sounding conversation entries before reading the actually focused entry during
arrowing through the contact list.
The cause of this issue is not known but is within Unigram itself.
- The installer contains version and product information visible from the Details tab in Windows Explorer,
to better identify its contents. This update is being applied to all projects.
- A "directives" text file is included that provides information on how to install this set of scripts manually.
See "Handling Directives Files" in the "Common
Script Elements" document for further information.
Revision 105, May 01, 2020, tested against application version 3.15.0.3073
- The sequence [ U focuses, when possible, the "Unread Messages" indicator in the open chat.
This requires the indicator to be on screen at the time.
On first opening a chat with unread messages, Unigram typically does place this indicator on screen. This means
that typing [ U immediately after opening such a chat should usually work.
- [ H, for focusing chat history, works in channels where there is no message input edit box.
- For those who need to change the Command key, the left bracket ([) by default, the system is
significantly improved, so that you need not type the key or key combination out as a name or string of key
names. You may
edit the keystroke names before accepting them, but JAWS will type them out for you now.
The system is documented in more detail in the Multi-Key
Command Sequence section of my Common Script Elements page.
Revision 97, April 19, 2020, tested against application version 3.14.0.2691
- The slider representing progress through a playing voice message speaks when reached via the keyboard.
- Screen readers respond better to activation of Table of Contents links in this document.
- The messages for these scripts are now distributed in XML rather than jsm files so that translators can create
translations with no need for script source recompilation.
See the Script Translation Procedure document for details on how
to translate these scripts, including how to update the XML message file.
Revision 86, March 29, 2020, tested against application version 3.14.0.2691
- Video chat messages that play in a Unigram popup window announce length before other material during chat
message navigation, just as is done for voice messages.
- Quick Settings includes an option for making Alt+1 and the sequence [ 1 move to the
first Chats list entry instead of to the one most recently focused.
- The autocomplete support works for the list that appears when the user types a slash (/) into the
chat input box for a conversation with a bot that supports commands.
- Autocomplete support also works for emoji characters and includes the file id of each option, to help
distinguish
it from other options with the same name or no name that JAWS can identify.
Revision 80, March 13, 2020, tested against application version 3.14.0.2691
- The autocomplete support works on systems where Unigram's chat input box reports via JAWS as being only one
rather than multiple lines in height.
Revision 79, March 12, 2020, tested against application version 3.14.0.2691
- Full support for Unigram's autocomplete functionality for typing mentions in a chat edit box.
- Commands to control the audio player directly when it is open: [ Space presses Play or Pause, [
R toggles the playback speed between normal and double, [ P reports progress in seconds
(this feature was requested by a user), and [ C closes the audio player.
- Alt+1 tries to return focus to the last-focused entry in the Chats list rather than going to the
first entry available.
- When focus is on a chat history list item that represents a voice message, Space or Enter
will play or pause the message. Without scripts, it is necessary to Tab to a link for the message first.
- JAWSKey+T will not freeze Unigram when typed while the emoji panel is displayed but will indicate
that the panel is open.
- The command sequences for jumping within a chat to its input and history boxes, [ E and [
H, work more reliably in busy chats.
Revision 64, March 09, 2020, tested against application version 3.14.0.2691
- Minor revision to fix handling of a few lists. An effort to avoid treating chat messages containing code
differently than other chat messages broke the handling of channel and group membership lists.
Revision 63, March 08, 2020, tested against application version 3.14.0.2691
- More buttons are named.
- There is a new system for reading and navigating among chat messages in the current window without shifting
focus away from the chat input edit box:
See Script Commands and Features for details.
- New-message sounds and announcements, when enabled in Quick Settings, should not occur more than once for the
same new message.
- File transfer entries in a chat message list speak the name of the file.
- Voice and video lengths speak before the rest of the information for a chat history list entry rather than
after it.
- Replies (mentions) count as unread messages for the JAWSKey+T enhancement that counts unread messages
and chats containing them. Replies did not count properly before because they show up with a different UI
Automation name than the one used for unread message counts.
- Edited channel messages announce as "edited" more reliably.
Revision 53, March 07, 2020, tested against application version 3.14.0.2691
- Announcement and script-generated sounds for an incoming chat, when enabled in Quick Settings, should work
more reliably. They will still sometimes occur an extra time or two on a switch between conversation windows though.
- The sequence [ M focuses, but does not activate, the "Open navigation menu" button. This button is
often useful as a starting point for tabbing into dialog areas.
- During arrow navigation through a chat's message list, extremely long chat messages will be read in full rather
than being cut short by JAWS.
- In a chat message list, location messages (sent via Attach Media) will read any included location name.
- In a chat message list for a group chat, voice message lengths will announce even when chat participants have
admin-enhanced names.
- Typing indicators also apply to notifications when someone is sending a voice or video message.
- In Settings > Language and possibly in other places, JAWS should not say long and confusing code names for
controls, like "
System.Collections.Generic.List`1[Telegram.Td.Api.LanguagePackInfo]
."
- In the screen for sending a broadcast message to a channel, JAWS more effectively describes how to handle the
button that flips between "Send notifications" and "Send silently."
This button's name represents how things work now, rather than how things will work after the button is pressed.
- JAWSKey+T, when typed very quickly after an Alt+Tab into the application, should speak
the correct title rather than saying "popup host."
- In the Chats list, JAWS should no longer act as if the items are checkboxes and should speak the correct
position information for each entry rather than saying "1 of 1" for all of them.
- In the history list for a channel, the channel name should not speak twice for each post.
- The scripts are ready for others to translate into non-English languages.
See the "Script Translations" part of my "Script Distribution
Policy" page
for information on how this works.
Revision 32, February 25, 2020, tested against application version 3.14.0.2683
- When a new message arrives in the focused chat, JAWS can read it and can also produce a short sound to indicate
its arrival. This applies also to a newly edited message even if it is not the most recent,
though this feature is not tested against messages old enough to have scrolled off screen. See the
Script Commands and Features section for further details.
The announcement and sound indicators for new messages can individually be toggled on and off via two new items
in Quick Settings.
By default, the announcement of incoming chats is enabled but the sound is disabled, because Unigram 3.14.0.2689
and later can natively produce a sound for an incoming chat.
- During navigation in a chat message list, forwarded messages will announce their origins.
Edited messages will also say "edited."
- When the Chats tab is active and contains chats with unread entries, the JAWS
SayWindowTitle
command, Insert+T, includes an indication of how many unread items exist.
- When the embedded audio player is on screen, Insert+T indicates this.
- Insert+T correctly reports the active chat's name even when the audio player is also showing.
- The disappearance or invalidation of the typing indicator, such as on a switch to a different conversation,
is more quickly recognized.
Revision 19, February 16, 2020, tested against application version 3.14.0.2665