JAWS Scripts For WhatsApp
Doug Lee
Last Revised November, 2025

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

Important note: Do not install these scripts if you are using the UWP version of WhatsApp that was in circulation up through early November, 2025. These scripts are for the version of WhatsApp that came out of beta in mid November, 2025, and use Microsoft's WebView2 technology and the Microsoft Edge rendering engine. These scripts do not apply to the previous UWP-based version of WhatsApp. The name "waw" used for files stands for "WhatsApp Web" and is used to avoid colliding with scripts that are part of JAWS itself. If you hear "web content" when switching to WhatsApp and do not see list controls for chats and message history, these scripts should work for you. If you install these scripts and then learn that you are still using the old WhatsApp version, simply remove these scripts via the "uninstall jaws scripts for whatsApp" menu item in Start > Apps.

Table of Contents

System Requirements For JAWS Users

In addition to any system requirements for the application, the following apply for JAWS users:

Script Installation Instructions

To install these scripts on a new system:

  1. Install 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 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 and features beyond those provided by JAWS and the application:

Usage Tips

This section presents tips for performing various tasks in WhatsApp with JAWS and these scripts.

Managing and Sending Outgoing Voice Messages

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.

Once in a while, especially for the commands to focus the chat message history list, JAWS may speak the current item twice. This is a timing issue and is for now permitted so that there are no occasions when the commands will say nothing at all.

If a dialog like Settings is open and you attempt to use [ C or Alt+C to focus the chat list, a seemingly random control may actually receive focus. This is because the chat list remains on screen but WhatsApp seems to resist allowing focus outside of the open dialog. The solution is to press Esc to close the open dialog, then try the script command again.

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 35, released November 27, 2025, tested against application version 2.2575.0.21

Translators: There are significant changes in one message file.

File changes (Git Unified Diff Format)

Each changed file is indicated by a line starting with the word "diff." Lines starting with a dash are old, with a plus are new, and with a space are for context.

diff --git a/waw_lang.xml b/waw_lang.xml
index b3b7660..dd5366a 100644
--- a/waw_lang.xml
+++ b/waw_lang.xml
@@ -20,19 +20,37 @@ Revision %1 WhatsApp script
 <!-- Must be kept in sync with the JKM file for this application. -->
 <message name="msgMKCSHelpText">
 =|Command
+c=Focus the list of chats
 e=Focus the chat edit box
-s=Say conversation user status
+h=Focus the chat message history
+s=Say chat status information
 Numbers 1 through 9 and 0=read recent messages
 </message>
 <!-- The exact, case-sensitive name of the Profile Details button. -->
 <message name="scProfileDetails">
 Profile details
 </message>
-<!-- The exact, case-sensitive prefix on the name of the Edit box for a conversation. -->
+<!-- The exact, case-sensitive name of the chat list grid. -->
+<message name="scChatList">
+Chat list
+</message>
+<!-- The exact, case-sensitive prefix on the name of the Edit box for a chat. -->
 <!-- Note that a space must follow this prefix in the name itself, but not in this file. -->
 <message name="scChatEditPrefix">
 Type to
 </message>
+<!-- The names of the Pause recording and Resume recording buttons during the making of a voice message. -->
+<!-- These are only used to help identify the "Send voice message" button when WhatsApp doesn't give it a name. -->
+<message name="scPauseRecording">
+Pause recording
+</message>
+<message name="scResumeRecording">
+Resume recording
+</message>
+<!-- What to call the voice message Send button when WhatsApp doesn't name it. -->
+<message name="msgSendVM">
+Send voice message
+</message>
 <!-- How to report when no chat messages are found. -->
 <message name="msgNoMessages">
 No chat messages found
@@ -41,11 +59,20 @@ No chat messages found
 <message name="msgNotThatMany">
 Not that many messages
 </message>
+<!-- The names of the two parts of some Settings items. -->
+<!-- Each of these is followed by a colon in a space in the app itself. -->
+<message name="scTitle">
+Title
+</message>
+<message name="scDescription">
+Description
+</message>

 <!-- Messages for the last-chat (Alt+number) code -->
 <!-- The exact, case-sensitive localized control type of the footer element. -->
-<!-- This may and may not actually require localization. -->
-<!-- This element is a container for the Edit box for typing a message in a conversation. -->
+<!-- This element is a container for the Edit box for typing a message in a chat. -->
+<!-- Find this value by traveling up from a chat input edit box's UIA element until you find -->
+<!-- an element with a localizedControlType value matching the English name "footer." -->
 <message name="chat___scFooterType">
 footer
 </message>
@@ -108,9 +135,16 @@ No keystrokes at this level
 Opening custom help document for JAWS users
 </message>

-<!-- Messages for the UIA module. -->
-<message name="UIA___msgNoUIAObject">
-Unable to get a UIAScriptAPI object
+<!-- Messages for the FSXML module. -->
+<!-- %1 is a function name, GetDocumentXML or GetElementXML. -->
+<message name="fsxml___msgNoXML">
+%1 returned nothing
+</message>
+<message name="fsxml___msgNoID">
+Virtual cursor element ID not found
+</message>
+<message name="fsxml___msgNoSelect">
+Element ID not found in element tree
 </message>

 </language>

Revision 22, released November 14, 2025, tested against application version 2.2575.0.21

Translators: Translate the two xml files, waw_jcpdict_lang.xml and waw_lang.xml, according to the instructions in my Script Translation Procedure document. I will provide diffs for future WhatsApp script releases to aid in keeping up with changes in these files.