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. As of August, 2016, focus for these scripts has been 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).
There are no known system requirements for these scripts beyond those for Tween itself. The minimum JAWS version supported is JAWS 14.0. JAWS versions older than 17.0 have not been carefully tested with these scripts. The scripts are most thoroughly tested against OpenTween versions 2.4.x.
To install these scripts on a new system:
The following suggestions are optional but may ease use of Tween/OpenTween with JAWS. These suggestions are based on OpenTween 1.3.3 but have applied equally through at least version 2.4.3.
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 Ins+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.
Most commands in these scripts consist of a prefix key followed by one or more other keys, to be typed separately from the prefix key rather than at the same time. This avoids key conflicts with Tween and particularly OpenTween, which has many native keyboard shortcuts. A sound plays at the end of any key sequence to indicate that subsequent keys will again be sent to the application.
For these scripts, the prefix key for all sequences is the left bracket ([). If you need to type a left bracket while in Tween, such as to include it in a tweet, press it twice in succession. If you need to change the prefix key, type the current one ([) followed by JAWSKey+C.
To find out what commands are available in the Tween scripts, press the prefix key and then Tab through the options. Each available command will be described briefly. To execute a command while tabbing through them, just type its keystroke. Typing Esc aborts the sequence without executing a command.
The scripts provide the following keystrokes in addition to those provided by Tween and OpenTween:
SayAllcommand, JAWSKey+a, to read the tweet text. Press Esc when finished to return to the application.
SayAllcommand, JAWSKey+a, instead. Press Esc when done reading in this way.
In addition to the commands just described, the scripts also provide the following features:
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:
|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.
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:
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.
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.
|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:
|. (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.|
|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.|
|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.|
|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.|
|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.|
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.
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 Ins+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.