JAWS Scripts For Skype for Business 2015/2016 and Microsoft Lync 2013
Doug Lee
Last Revised February, 2020

This document describes the scripts for Skype for Business 2015/2016 (SfB) and Microsoft Lync 2013 ((Lync). and provides tips for using these applications with JAWS. This document can be opened from within SfB or Lync via a double press of JAWSKey+F1 (or Insert+F1).

These scripts were made possible in part by funding and resources provided by Level Access while it was known as SSB BART Group, for which this author is most grateful.

Table of Contents

Supported Software

These scripts are written for Skype for Business 2015/2016 and Microsoft Lync 2013, the actual application name for both being lync.exe. For simplicity, this document will refer to these application versions simply as "SfB." These scripts will not work with older SFB / Lync / Microsoft Communicator versions and should not be used with newer SFB versions such as those that come with Office 365. For links to all script sets for other SFB/Lync versions, visit the main Skype For Business script page.

These scripts work in JAWS 15 and later. They will not work with older JAWS versions because earlier JAWS versions do not include sufficient support for UI Automation (UIA), which is required for scripting this application.

Note: The official names for these Microsoft products are Skype for Business (SFB) and, the older name, Microsoft Lync. These are not to be confused with the consumer-grade Skype products now also owned by Microsoft (Skype 8 for Windows Desktop and Skype UWP for Windows 10). These scripts and this document refer exclusively to the Skype for Business (SfB) that is the rebranded Microsoft Lync. For scripts and documentation pertaining to Skype, refer to the JAWS Scripts For Skype page.

Script Features In Brief

Note: SFB itself provides many commands and features for blind users. Refer to the following Microsoft documents for further information:

These scripts provide the following commands beyond those available in SfB itself. Note that the word "Command" below, when appearing as part of a keystroke sequence, refers to the prefix key for all script command key sequences. By default, this is the left bracket ([) key. See the "Key Sequence Help section for more details on key sequences, including how to change the command key if necessary.

These scripts also provide the following features beyond those provided by SfB itself:

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. Note that there is also an older (revision 324) script version from June 13, 2017 in case the current version does not work with some older versions of the application.
  4. To verify successful installation, type Ins+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.

SfB Configuration For Optimal Use With JAWS

The following SfB option settings may improve SfB's usability via JAWS. These items are located in the Tools/Options dialog (Alt+T O). Switch among pages by arrowing through the treeView of page names. All of the following suggestions are optional.

Tips For Using Skype For Business With These Scripts

To focus the main SFB screen, type Ctrl+Alt+Shift+3 (a native SFB keystroke).

To hear any notifications, such as notice of missed conversations or voicemails, type Ins+T from the main SFB screen. The scripts will make JAWS include these notifications after the screen title and, when applicable, the names of any active tabs on the screen.

To switch quickly among tabs on the main screen, use Ctrl with numbers; for example, Ctrl+1 switches to the Contacts tab. These keystrokes are native to SFB itself and will work with or without the scripts being loaded.

In some lists, such as Contact lists, the JAWS SayLine command, normally Ins+Up, may announce more information than is automatically announced on arrowing among list items or when tabbing into the list. Technically, arrowing among items and tabbing into the list will announce the Name of the item, whereas the SayLine command uses more script logic to determine what to announce. As SFB evolves, the precise content of these announcements may change based on the structure of accessibility information provided by Microsoft for the list items.

Key Sequence Help

These scripts incorporate several commands that consist of sequences of keystrokes, all beginning with a common prefix, or "command key." By default, the command key is the left bracket ([) key; see below for how to change it if necessary.

In addition to the commands documented elsewhere, the following commands are also available, at any level:

If you need to change the command key, type the current command key followed by either JAWSKey+C or Ins+C. An edit box will appear into which you may type your desired command key. The current key will initially appear in the box. Then Type or spell out your desired command key and press Enter to apply the change. If the keystroke requires modifiers like Shift or Ctrl, spell those out; do not simply type, for example, A when you mean shift+a. Example keystrokes exactly as they should be typed:

Warning: If you accidentally set the command key to something you cannot type, you will currently need to edit it in these scripts' .jcf file in the JAWS user directory under the MKCSOptions section.

Known Issues and Workarounds

This script set does not implement the normal chat management command set (Alt with numbers, arrows, Home, End, and NumPad5). Lync 2013 and Skype for Business 2015/2016 do not provide a means, even via scripting, to implement this navigation system. These scripts do provide Alt+1 to read the timestamp of the last received message in a chat window.

In some SFB versions, arrowing or tabbing to a contact in the contact list may announce different information than would be spoken by the JAWS SayLine command, Ins+Up. This is because of variations among accessibility properties provided by SFB itself. Arrows and tabs use just the Name property of the newly focused list item, whereas the SayLine command uses much more involved script logic to determine what to speak. As SFB evolves, the precise content of these announcements may change based on the structure of accessibility information provided by Microsoft for the list items.

As a special case of the above issue, tab and arrows may report outdated information as compared to SayLine; for example, arrowing to a contact may say "Away 5 mins," whereas SayLine might say "away 30 mins." Future versions of SFB will likely be better at keeping these list item names up to date.

JAWS may say "button" more often than it should. This is because many SfB controls are parented in UIA by controls that call themselves buttons. The scripts silence some but perhaps not all of these extra announcements.

Sometimes, pressing Tab from a message in the chat history list will encounter one or more extra tab stops before reaching the chat input box. These may say nothing, "Rich edit control," or the name of a chat participant. It may be more efficient to use Command i to jump directly to the chat input box in such cases. Sufficiently new SFB versions also provide Ctrl+Shift+M as a native keystroke for this purpose.

Arrowing among messages in a chat history list can encounter silent spots, where an up or down arrow appears to do nothing. Continue to arrow past such spots. No information is skipped; it just appears as if arrows now and then fail to leave the current item and move to the next one. This is considered a bug in some older SFB versions but appears to have been fixed in newer versions.

Revision History

This is the revision history of these scripts, most recent revision first.

Revision 333, released February 8, 2020

This is a substantial update to bring code and JAWS version support up to date:

Revision 325, released June 13, 2017

Primarily to support command key change for non-English script installations, there is now a way to configure the command key to use: Type the current command key followed by JAWSKey+C or Ins+C. An edit box will appear where you can type the key you want as a command prefix. Examples, exactly as they should be typed:

Warning: If you accidentally set the command key to something you cannot type, you will currently need to edit it in these scripts' .jcf file in the JAWS user directory under the MKCSOptions section.

Revision 321, released June 9, 2017

This revision avoids extra speech during arrowing through a chat history list in Lync 2013. This update should not affect users of Skype for Business 2016. This fix has been tested in Lync 2013 versions 15.0.4911.1000 and 15.0.4420.1017. It may not work for some other Lync 2013 versions.

Revision 311, released May 30, 2017

Important: This revision changes some commands; please read these notes before downloading and installing the revision.

To avoid key conflicts with both local and global hotkeys, some of which can be changed dynamically by SFB based on context, this revision changes the following script commands from Ctrl+Shift combinations to key sequences. All key sequences begin with a left bracket ([). The left bracket replaces Ctrl+Shift and is typed before, not simultaneously with, the final key for each command.

Other script commands remain unchanged.

Further updates in this revision:

Revision 291, released February 15, 2017

This version corrects a few anomalies introduced by recent SFB updates:

Sender and timestamp information are again announced during navigation among chat messages.

The word "Unread" is removed from the beginning of many messages (read and unread).

Ins+T should no longer read unrelated conversation names in a multi-conversation window along with the correct name.

Ctrl+F4 again works to close the current conversation in a multi-conversation window.

JAWS' spoken identification and tutor text for many SFB controls are updated.

Ctrl+Shift+E pops up a JAWS edit box for editing edit control content. This is particularly useful for handling extreme sluggishness in chat input boxes. When using this feature, remember to press Enter once to close the JAWS edit popup, and again to send the message in SFB.

If anyone experienced surprise resets of SFB-specific JAWS settings from time to time, this should no longer happen.

Note that two features of particular interest are still lacking; namely, automatic announcement of incoming chat messages when focus is in the chat window, and chat message reading with Alt and numbers and/or letters. For the first of these, I have not seen a way to implement this announcement in current SFB versions. For the last, I have been waiting for SFB to settle down because any implementation of this feature will involve significant code dependency on the exact structure and behavior of chat message lists and items.

Revision 273, released August 3, 2016

In a tabbed conversation window, Ins+T includes the position of the current tab among tabs as well as the count of tabs available.

Revision 272, released August 2, 2016

Fixes the reading of other chat tab names on Ins+T when more than one chat tab are present.

Revision 271, released August 1, 2016

Revision 266, released January 25, 2016

Revision 264, released December 15, 2015

This revision fixes installer and compilation issues:

Revision 260, released October 15, 2015

Typing the JAWS SayLine command (Ins+Up) three times in quick succession will place the focused chat line in a JAWS virtual buffer for review. This is particularly useful for long and multiline chat messages.

The installer for these scripts should also work now with JAWS 17.

Revision 254, released August 20, 2015

This revision makes Ins+F7 and JAWSKey+F7, when typed while focus is on a chat history entry in a chat window, bring up a list of any links in that chat entry for review and/or selection.

Revision 250, released August 10, 2015

This is the initial release of these scripts. Refer to the manual for a feature list.