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.
- When a conversation is in focus, Command h and
Command i move to the history and input windows, respectively.
Sufficiently new SFB versions also provide Ctrl+Shift+M as a native keystroke to move to the input window.
- Command e from the input box allows editing of its contents in a JAWS edit popup, which is
useful when JAWS and SFB become very slow to respond during direct editing.
When using this feature, remember to press Enter once to close the JAWS edit popup, and again to send the message in SFB.
- Command shift+e from the input box will toggle between two modes for handling edit controls:
The default mode supports proper announcements of text in the edit box, including during arrowing; however, after several minutes of text chatting, this mode can become very slow. The alternate mode will be fast even through
heavy texting but will not announce the contents of the box and will say "blank" on arrows.
- In a conversation window,
Alt+1 announces the timestamp of the latest message received in this window, or the currently
displayed typing indicator, whichever is on screen at the time.
Note that messages sent by you do not change what this command reads.
- From a conversation in a tabbed conversation window,
Ctrl+F4 closes the active tab.
Sufficiently new SFB versions also support use of Esc for this purpose.
- When focus is on an entry in a conversation window's chat message
(history) list, Ins+F7 or JAWSKey+F7 brings up a
list of links in the focused chat entry for review and/or activation.
In sufficiently new SFB versions, Tab will reach links (though possibly without confirming speech), and Enter will activate a link. This also applies to phone numbers found in a chat
message.
- Typing the JAWS
SayLine
command, Ins+Up,
while focus is on a list item (such as in a conversation history) will
bring up the list item in a JAWS virtual viewer for review. This can
be particularly useful for long chat entries.
- Command c focuses the displayed result list when typed within
the main SfB window. This may be contacts, conversations, etc., depending on the active tab in the main window.
- If a window contains multiple panes, Ctrl+` and
Ctrl+Shift+` cycle forward and backward, respectively,
through the available panes. Ins+T will also report that
multiple panes are available.
- Ins+H brings up a short summary of scripted keystrokes.
- Typing Ins+F1 twice in quick succession brings up the
manual for these scripts in the default browser.
These scripts also provide the following features beyond those provided by
SfB itself:
- Automatic announcement of incoming chats in the current chat
window (with user toggle in JAWS Quick Settings).
- Complete reading on arrows of chat messages in chat history
windows. (In at least some SFB versions, long messages could otherwise be cut short.)
- Sound indication and/or verbal announcement of chat typing
indicators (with toggles in JAWS Quick Settings).
(Sufficiently new SFB versions can also provide a typing indicator sound natively.)
- Customization of the
SayWindowTitle
script (Ins+T) to include several items for user convenience:
- The correct main window title in SFB versions where this would not otherwise speak natively.
- The names of any active tabs or subtabs in the main window.
- For tabbed conversation windows, the number of tabs and the position of the current tab among them.
- The number of available panes in the current window, if more than one are available.
- Any notifications, such as for missed conversations or voicemails (main window only).
- For conversation windows, contact online/offline status and other shown status text.
- Improved reading in the contact list.
- Improved naming of many buttons in the application.
- Automatic announcement of the meanings of many emoticons.
- "Not checked" announcement for toggle buttons.
- A functional Ins+B (
ReadBoxInTabOrder
) command.
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.
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.
- 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.
- In "Ringtones and Sounds," uncheck "Mute incoming IM alert sounds
when viewing an IM conversation." This should make SfB produce a
sound for an incoming chat even when it arrives in the focused chat
window.
- As desired, do any of the following to save screen space in various situations:
- In Personal, uncheck "Show pictures of contacts."
- In Contacts, change "Display my contacts with" from "Contact name
and picture (two lines)" to "Contact name only (one line)."
- On the IM page, check "Hide pictures in IM."
- On the IM page, uncheck "Show emoticons in messages."
This was required for correct emoticon announcement in older Lync and
Communicator versions but should no longer be necessary.
- In Meetings under "When I join meetings," check "Show IM" and/or
"Show the participant list" if you anticipate routinely accessing
these controls during a meeting.
- Sufficiently new versions of SFB provide a built-in audio typing indicator sound. To use this instead of the one provided by these scripts, check "Play a sound when viewing an IM conversation and someone is typing" on the
Ringtones and Sounds page.
Then, disable the scripted typing sound by unchecking "Typing sounder" in the JAWS Quick Settings dialog accessed via JAWSKey+V.
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:
- Tab and Shift+Tab at any level cycle through commands at that level, speaking a description for each command along with the keystroke that would activate it.
This is a quick way to find available script commands.
- Ins+Tab repeats the last command's description spoken by Tab or Shift+Tab.
- Enter executes the command whose description was last spoken.
- Esc exits the command sequence system without executing a command, so that keystrokes can again be sent to the application.
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:
- [ (normally the default key)
- shift+[ (Note, do not just type {)
- Ctrl+Shift+; (for control, shift, and semicolon together as a command prefix)
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:
- JAWS versions through at least 2020 are supported by the installer.
- Numerous portions of the code are updated to conform to current standards and practices.
- JAWS' normal internal translation of standard phrases now apply to these scripts when they are run in a non-English language.
- Fixed a rare cross-project bug that could cause JAWS to speak or Braille out-of-date information about the current screen.
For technical details on the bug and fix, refer to The JAWS Script Cache Life Cycle (CLC) Bug and Resolution.
In these scripts, a possible effect of this bug was the announcement of a closed conversation's title in place of the title of the current conversation.
- Source code to the scripts is no longer included. See my Script Distribution Policy document for details. As one side effect, this will cause installation to run much faster.
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:
- [ (normally the default key)
- shift+[ (Note, do not just type {)
- Ctrl+Shift+; (for control, shift, and semicolon together as a command prefix)
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.
- The command for moving to the displayed contact list in the main window, formerly Ctrl+Shift+C, is now [ c.
- The command for editing text in a JAWS pop-up edit box, formerly Ctrl+Shift+E, is now [ e. This command can be useful if typing becomes slow in an SFB chat window.
- The commands for moving to the history and input areas of a chat window, formerly Ctrl+Shift+H and Ctrl+Shift+I, are now [ h and [ i.
Other script commands remain unchanged.
Further updates in this revision:
- Arrowing among messages in a chat window should no longer repeat the window's name and other superfluous information before speaking the newly focused chat entry.
- Arrowing among emoticons in a conversation's Choose Emoticon dialog does not speak the previously focused emoticon's description.
- Braille users should note the removal of spurious indeterminate checkbox indicators for buttons in SFB.
- The
SayWindowTitle
script (Ins+T) command is customized to include the following for user convenience:
- The correct main window title in SFB versions where this would not otherwise speak natively.
- The names of any active tabs or subtabs in the main window.
- For tabbed conversation windows, the number of tabs and the position of the current tab among them.
- The number of available panes in the current window, if more than one are available.
- Any notifications, such as for missed conversations or voicemails (main window only).
- For conversation windows, contact online/offline status and other shown status text.
- Ins+H help text and the script manual are updated to reflect script and SFB changes to date. For the script manual, this includes documentation of ways to do directly in SFB some things that previously required
the scripts, such as setting up a chat typing indicator sound and closing a conversation from a tabbed conversation window.
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
- Chat-related commands and announcements work with latest SFB update (16.0.7070.2426).
- The installer guards against installing when creating a script chain would wipe out a jsb file without a corresponding jss file.
This is to protect against problems sometimes encountered when attempting to install these scripts after
installing a commercial script package that does not include source code.
Revision 266, released January 25, 2016
- Braille panning should work normally in message history and other places.
- Settings updates should work even when jsb files are copied directly from the (unpacked) installer into the
JAWS user folder.
Revision 264, released December 15, 2015
This revision fixes installer and compilation issues:
- The uninstaller will properly handle installs that cover multiple JAWS versions at once.
Note though that the uninstaller present before this update is installed may still produce error messages in
such a case. If you are simply removing old scripts to install the new ones, these errors are harmless.
- The installer should handle installation into non-English JAWS 17 folders without generating error
messages.
- Compilation under JAWS 17 during installation will use compatibility mode so that message files packaged
with these scripts will work as expected in translated script versions.
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.