JAWS Scripts For Tween and OpenTween
Doug Lee
Last Revised February, 2022

This document describes the scripts for Tween and OpenTween (from now on referred to collectively as Tween) and provides tips for using this application with JAWS. Focus for these scripts is on OpenTween and not on the original Tween application.

This document can be opened from within Tween via a double press of JAWSKey+F1 (or Insert+F1).

Table of Contents

System Requirements For JAWS Users

There are no known system requirements for these scripts beyond those for Tween itself. The minimum JAWS version supported is JAWS 2018. JAWS versions older than 2022 have not been carefully tested with these scripts. The scripts are most thoroughly tested against OpenTween versions 2.5.x.

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.
  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.

Configuring For Optimal Use With JAWS

The following suggestions are optional but may ease use of Tween/OpenTween with JAWS. These suggestions apply through at least version 2.5.0.

To customize OpenTween, open Settings from the File menu. The Settings dialog consists of several pages. The pages are organized in a treeView; arrowing through the tree changes which page is displayed. Beware that top-level nodes like General and Behavior also have pages; they are not just groupings of pages.

Tween beginners may find it useful to type Insert+B twice in quick succession after selecting a Settings page in order to explore it with a JAWS virtual cursor before making changes. The scripts make JAWS announce most text in Settings pages, but some pages include helpful hints that are not announced because they are not clearly associated with a particular field. Press Esc to close the virtual view and return to the Settings page.

In OpenTween, the title bar can be customized to include various pieces of information that might be of use. This is accomplished via a "Title format" combo box on the Display page of Settings. This author's favorite setting is "unread items(unread @reply items)," which includes the total number of unread tweets across all tabs, then the number of replies (mentions) that remain unread. Users with multiple simultaneous application instances for different accounts may also find it useful to check the "Show username in application titlebar and balloon" option, so that JAWSKey+T will indicate which instance is in focus.

The format of tweet timestamps is also adjustable, on the Lists page under Display, in the "Date Format in List" box. There are several canned formats to choose from, but typing your own format is also permitted. This author's preference, at this writing, is "MM/dd/yyyy H:mm," which translates to things like "08/25/2016 23:45" (23:45 is 11:45 PM in so-called military time).

When finished reviewing or changing settings, Tab to OK or Cancel and press Space to save or discard any changes, respectively.

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 Features

Script Commands

The scripts provide the following keystrokes in addition to those provided by Tween and OpenTween:

Other Script Features

In addition to the commands just described, the scripts also provide the following features:

Tabular Tweet List Navigation

These scripts make standard HTML table navigation commands (Ctrl+Alt with arrows, Home, End, etc.) apply to tweet lists. This facilitates scanning down columns other than column 1 without having to type numerous or difficult key sequences. There are also a few added commands for clicking cells and column headers without having to use the JAWS cursor. This simplifies resorting tweet lists, for example. In JAWS 13 and later, the Table Layer commands also work on supported controls. This system of tabular navigation is borrowed from the ListTbl scripts by this same author, but without requiring ListTbl to be installed.

The following table lists the additional functions with the commands for each supported keyboard layout:

Added ListView Support Commands
Function Common/Desktop Layout Laptop and Classic Laptop Layouts Kinesis Layout Table Layer Description
Left-click cell Ctrl+Alt+NumPad / Ctrl+Alt+8 Ctrl+Alt+I NumPad / Left-clicks The Current Cell In The listView.
Right-click cell Ctrl+Alt+NumPad * Ctrl+Alt+9 Ctrl+Alt+O NumPad * Right-clicks The Current Cell In The listView.
Left-click header Ctrl+Shift+Alt+NumPad / Ctrl+Shift+Alt+8 Ctrl+Shift+Alt+I Shift+NumPad / Left-clicks The Column Header Above The Current Cell In The listView.
Right-click header Ctrl+Shift+Alt+NumPad * Ctrl+Shift+Alt+9 Ctrl+Shift+Alt+O Shift+NumPad * Right-clicks The Column Header Above The Current Cell In The listView.

Note: Though standard JAWS Table Layer commands do not exit the Table Layer, the above Table Layer commands will do so. This is because clicking cells and headers usually causes new or reorganized screens to appear, whereas the standard JAWS Table Layer commands simply navigate among cells. As a side effect, it will be necessary to use commands outside of the Table Layer in order to double-click cells.

Browserless Web Page Review

The key sequence [ Shift+D brings up a JAWS virtual view of the current tweet from its Detail area. In this view, links from the Detail area become links in the virtual view. Pressing Enter on one of these links will attempt to display the associated web page in a new JAWS virtual view. This provides a sometimes much faster way to examine a linked page by avoiding the need to open a browser. It may also improve security, since absolutely no Javascript or other active client-side code from a website will be run on your computer in this case.

There is also a way to bring up a webpage directly from its URL: Type [ G. A dialog will appear requesting a URL. Type or paste the URL of interest and press Enter. The requested page will appear in the same virtual view just described.

There are a few caveats to keep in mind:

In general, this author finds the following approach extremely helpful and efficient for reading many reports, blogs, news articles, etc. that are advertised via Twitter:

  1. Type [ Shift+D to virtualize the advertising tweet's Detail area.
  2. Locate the link being advertised, and press Enter on it.
  3. When the new virtual view of the linked page opens, use Ctrl+Down repeatedly to jump past any prefatory material not removed by the JAWS scripts from the view.
  4. Use arrows and/or the JAWS "Say all" command, Insert+Down, to read the page content.
  5. Press Esc when finished, to return to Tween.

This virtualization feature will likely undergo updates from time to time to improve its ability to work with more pages, based on user needs and requests.

Using Tween and OpenTween

This section and its subsections are written based on OpenTween 1.3.2 but have proven valid through at least OpenTween .4.3. Some keystrokes and functionality may not apply identically in other OpenTween versions or in Tween. Any entries containing three question marks (???) need further clarification. The commands and functionality described in these subsections apply regardless of whether JAWS or these scripts are running.

Reading and moving among tweets and tweet lists

Reading and moving among tweets and tweet lists
Keystroke(s) Description
Space in a tweet list Jump to the next unread tweet in the current buffer. If there are none, move to the first unread tweet in the next buffer with unread tweets. If there are none, move to the last tweet in the Recents tab.
Space when typed as the first character in the posting area Focus the currently active tweet list (tab) and perform the same action as for Space typed in that list.
Down or J and Up or K in a tweet list Move to the next or previous tweet in the current list.
Shift+J and Shift+K in a tweet list ???
Ctrl+J and Ctrl+K in a tweet list ???
Ctrl+Shift+J and Ctrl+Shift+K in a tweet list ???
Home and End or Shift+G in a tweet list Move to the first or last tweet in the current list.
[ and ] Move forward and backward through the chain of replies (the thread). This avoids encountering tweets unrelated to a conversation but will often miss relevant tweets, such as when one person sends three replies to one tweet.
Right and N or Left and P Move to the next or previous tweet that might be part of the current thread or conversation. This may encounter tweets unrelated to the conversation but should not miss relevant tweets.
Shift+Right and Shift+N or Shift+Left and Shift+P Move to the next or previous favorited tweet in the current list.
H and L in a tweet list Move to previous or next tweet by the same user as the current one.
Alt+Left and Alt+Right Move to the previous or next tab containing the current tweet and place focus on that tweet in the newly selected tab. These commands do not cycle; use Alt+Left to check tabs left of the current one and Alt+Right to check higher-numbered tabs.
G Put related tweets in a new tab. This includes only related tweets prior to, not after the current one.
Ctrl+E Open URL in Tween. In OpenTween, also lists users mentioned, hash tags, and multiple URLs when present, for selection and also includes the quoted tweet when applicable. Pressing Enter on a line in this list has the following effects depending on the contents of the line:
  • A URL opens in the default browser.
  • A user handle pulls the user's timeline up in a tab.
  • A hash tag opens a search buffer for the hash tag in a tab.
  • A quoted tweet opens a "Related Tweets" tab for the tweet quoted.
Period (period) Move to the anchor???
Shift+H, Shift+M, and Shift+L in a tweet list Move to the top, middle, or bottom tweet in the displayed portion of the list.
Z and Shift+Z Scroll the current tweet to the top or bottom of the display area???
Ctrl+F Open a dialog for finding the next tweet by matching text. Includes support for case-sensitive and case-insensitive searches.
F3 and Shift+F3 Find the next or previous tweet in the current buffer matching the last search entered via Ctrl+F. Opens the Ctrl+F dialog if not yet opened since the application was launched.
Ctrl+I Open in a dialog the tweet to which the current tweet is a reply.
Ctrl+Tab and Ctrl+Shift+Tab Cycle among buffers (tweet lists). Ctrl+N and Ctrl+P do the same thing but appear to be undocumented.
Ctrl+1/2/3/4 Jump to standard tabs: recents (home), replies (mentions), messages (DM), favorites.
Ctrl+5/6/7/8 Jump to user-created tabs where applicable.
Ctrl+9 Jump to the last available tab.
Esc or Ctrl+W Close the current tab if possible. Standard tabs may not be closed, and protected tabs may not be closed without being unprotected first. Use "Protect Tab" in the Tab menu (Alt+T P) to toggle protection of user-defined tabs.

Posting tweets

Posting tweets
Keystroke(s) Description
Enter Reply to the current tweet (by default but can be changed at least in OpenTween).
Ctrl+M Send a direct message (DM) to the current tweet's poster.
Ctrl+R Reply to the current tweet's poster (send a mention). Warning: Sends a mention, not a DM, if used on a DM in at least OpenTween 1.3.2, despite documentation to the contrary.
Ctrl+Shift+R Reply to the current tweet's poster and mention all others mentioned in the tweet. Warning: Sends a mention, not a DM, if used on a DM in at least OpenTween 1.3.2, despite documentation to the contrary.
Alt+R Retweet (RT) without comment (new style).
Alt+Shift+R RT with comment (old style). Ctrl+Q is usually better nowadays.
Ctrl+Q Quote the current tweet. This simply includes an URL pointing to the tweet and leaves you much more space to type a comment.
Ctrl+L in the posting area Shorten the selected URL. Must select the URL first. Warning: Do not simply select the entire input area, particularly if it contains multiple URLs. Attempting this in at least OpenTween 1.3.2 with text including multiple URLs selected can produce an error message in the application.
Ctrl+Up/down in the posting area Scroll up and down among recently posted tweets.
Ctrl+Y Toggle multi-line mode for the posting area.
Ctrl+Shift+P Open a dialog for posting an image along with a tweet.
I from a tweet list Move focus to the posting edit (input) box. Tab accomplishes the same thing.

Copying from a tweet to the Windows clipboard

Copying from a tweet to the Windows clipboard
Keystroke(s) Description
Ctrl+C Copy the full tweet text including the URL pointing to the tweet on twitter.com.
Ctrl+Shift+C Copy only the Twitter URL for the current tweet.
Alt+Shift+C Copy the Twitter user handle for the current tweet.
Opening related screens from a tweet
Keystroke(s) Description
Ctrl+U Open the current tweet poster's timeline as a tab.
Alt+C U Open any user's timeline. There are other useful options in the Command (Alt+C) menu.
Alt+P Open the user profile for the current tweet's poster.
Ctrl+H Open the Twitter page for the user who posted the current tweet.
Ctrl+G Open the favorites page for the user who posted the current tweet. Requires logging into twitter.com.
Ctrl+O Open the page for the current tweet on twitter.com.
Ctrl+Shift+O Open this poster's Favstar Recents page.

Miscellaneous commands

Miscellaneous commands
Keystroke(s) Description
F1 Open a help page. For OpenTween, this opens the OpenTween Wiki front page.
Ctrl+S Favorite the currently selected tweet or tweets.
Ctrl+Shift+S Unfavorite the currently selected tweet or tweets (deletes from the Favorites tab).
Ctrl+Shift+F Edit conditions defining which tweets to place in the current tab. This applies to search tabs.
Ctrl+A Select all tweets in the current buffer.
Ctrl+B Mark the selected tweet or tweets as read. To mark all tweets in the current buffer as read, type Ctrl+A and then Ctrl+B.
Ctrl+Shift+B Mark the selected tweet or tweets as unread.
Ctrl+D Delete a tweet or tweets you have posted. Also deletes from Twitter.
F5 or R Reload/refresh the current tab.
Shift+F5 or Shift+R Pull the next batch of older tweets into the current tab.
Ctrl+T Open the hash tag configuration manager.
Ctrl+Shift+T Switch on/off the automatic addition of a hash tag to outgoing tweets.
F6 Update mentions regardless of which tab is displayed.
F7 Update direct messages regardless of which tab is displayed.
Shift+F6 and Shift+F7 Retrieve the next batch of older mentions and direct messages, respectively, into their respective tabs without regard to which tab is showing.

Tips For JAWS Users

A quick way to check who RT'd a tweet is to use the sequence [ 5, which reads the Username field from the list (assuming the default column setup). An alternative is to use the [ D sequence to read the tweet detail area, because the RT info there comes before rather than after the tweet itself.

Known Issues

Issues shown in this section may be fixed in future script and/or application revisions but are not addressed as of this writing.

Very long DMs can read incompletely in the DM list. Using [ D or the [ R toggle to read the detail area will speak the full DM text in such cases, as will navigating across the line to the "Post" column using JAWS table navigation commands.

The script prefix key, [, conflicts with the OpenTween command for moving to the tweet to which the current tweet is a reply. To use this OpenTween command, type the keystroke twice instead of just once.

The background color of the Detail area in the "Font & Color" Settings page is not announced by JAWS. Neither are the colors in the Backgrounds page.

Dialogs for setting text colors from the "Font & Color" Settings page are not easy to use with JAWS.

The scripts may sometimes stop performing certain tasks until the next restart. Examples include profile screen reorganizations for Insert+B and some field labeling. This is caused by the JAWS GetControlIDString function ceasing to return any values until the next JAWS restart. This should be fixed in JAWS itself and is not possible to fix via scripting without risking a serious performance reduction for some operations.

Revision History

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

Revision 227, February 23, 2022, tested in application version 2.5.0.0

This is a maintenance update to the scripts, upon the revival of OpenTween after two years of down time. Changes:

Revision 213, released January 17, 2020

Revision 196, released August 21, 2019

Revision 186, released July 2, 2019

Revision 182, released June 19, 2019

Revision 178, released June 10, 2019

Revision 163, released June 2, 2019

Revision 141, released August 4, 2018

Revision 134, released July 16, 2018

Revision 116, released September 5, 2017

Revision 107, released October 27, 2016

Revision 98, released September 18, 2016

Revision 66, released August 17, 2016

This is a very major script update and replaces all previous support for Tween with new scripts for Tween and OpenTween. The following change list is far from comprehensive and is only meant to assist those who used the previous (2015) scripts for Tween. For full details on this release, consult the JAWS Scripts For Tween and OpenTween users guide.

Changes affecting users of the original Tween scripts:

Revision 12, released June 11, 2015

Ctrl+Shift+D moves focus to an HTML area containing the tweet. This is useful for the form of retweets in which the original tweet text is not present but is replaced with a link to the original tweet itself. At least in OpenTween, this material can also be viewed natively via the g and Ctrl+E commands.

Ins+Q includes the revision number of the Tween scripts, to ease verification of correct script installation.

Revision 7, released September 9, 2012

This is the first public release of these scripts. Features included: