This document explains how to use Skype 5.0 with the JAWS Scripts For Skype. This document applies to the Skype 5.0 release of October, 2010 (Skype version 22.214.171.124) and later versions. These versions contain more accessibility features than available in previous Skype versions. The document is laid out such that major sections are level 2 headings and subsections are level 3 or higher headings. JAWS users can thus navigate quickly among sections with the h command and by typing heading level numbers.
Table of Contents
- Configuring Skype 5.0 For Use With JAWS
- JAWS Script Features
- How To Do Various Things In Skype 5 With the Scripts Running
- New Since 3.x
- Obsolete Script Commands
- Translating the Scripts Into Another Language
The following steps should be taken before Skype 5 can work effectively with JAWS and these scripts:
- Enable accessibility features: Skype 5 provides two options to improve accessibility. To turn these on:
- Type Alt+T for the Tools menu, then A for the Accessibility menu.
- You will most likely land on "Extended Keyboard Navigation." If this option or the "Screen Reader Mode" option below it is not checked, press Enter on it to check it. This will also close the menus.
- Repeat the previous two steps until both items are checked, then Esc out of the menus when this is done.
- Enable Compact view: Seasoned Skype 3 users may want to turn on the Compact view, which puts conversations into separate windows so they can be reached via Alt+Tab. Note that this is an optional step. The Default view is also accessible in Skype 5. To enable Compact view should you desire to do so:
- Type Alt+V for the View menu, then UpArrow to find the "Compact View" line. If you instead find "Default View," you are already using Compact view.
- If you find "Compact view," press Enter to turn the view on. This will probably open a conversation window immediately. If so, you can use Esc to close it and return to the main Skype window.
The JAWS scripts provide the following features over what Skype itself provides:
- JAWSKey+T for identifying where you are in Skype. This includes announcement of which main-pane list is active if one is, and also the name and type of the current conversation if focus is in one. Call duration is also included for voice calls as of script version 4.2a.
- Ctrl+Shift+O for listing online contacts, and various Command O sequences for listing subsets of these.
- Ctrl+Shift+E for reading the Account panel. Former Skype 3 users note: This panel no longer contains missed events. Missed events appear in each conversation to which they belong.
- Ctrl+numbers to jump to various parts of the Skype window, though they are not really "tabs" as they were in Skype 3. The Command Tnumbers work also. The assignments are as follows:
- 1 for the contact list.
- 2 for the conversation list, or Inbox.
- 3 for the live conversation list (this is where active calls go).
- 4 for the input box in the current conversation if there is one.
- 5 for the message list for the current conversation if there is one.
- 6 for the current conversation's profile area if it is visible. This currently just reads the area without switching focus to it. Type the command twice to focus the area.
- 8 for the Skype Home area.
- Alt+numbers to read conversation messages when focus is in a conversation pane. Double Alt+numbers work to virtualize conversation messages also.
- Alt+left and right arrows, Alt+Home, and Alt+End, to move through messages in a conversation sequentially. This is particularly useful in rapid conversations, where the messages read by Alt+numbers change quickly.
- Indication of which messages are new, not delivered, and edited.
- F2 to toggle on/off the announcement of timestamps with messages in a conversation, assuming timestamps are enabled in Skype itself.
- Ctrl+Tab from a conversation window for cycling among conversation windows. This should work in both Compact and Default views.
- Typing announcements and sounds and the corresponding commands to control them.
- JAWSKey+F8 for toolbar items and other clickable items in the current window. Some Skype 5 versions may include controls without names, which will show up in this list looking like "Item 1 push button - Unnamed." A later Skype version may provide more appropriate names for these.
- Enter for "Save" in Options (this has been a scripted feature, not a native Skype feature, for a long time).
- Ctrl+Shift+C for recompiling the Skype scripts from within Skype.
- Ctrl+Shift+W for going to the Skype scripts home page.
- JAWSKey+F1 twice quickly to go to this manual.
Here are some quick tips on how to do specific things in Skype 5 when the scripts are running: These instructions are based on Skype 5.0 as released in October of 2010 unless otherwise indicated, but they should also apply to later Skype 5.0 versions. JAWS users can jump from item to item using the letter i.
- Open a new conversation (like a chat in Skype 3)
- Press the Applications key on a contact entry in the Contact list, then choose Send IM. If you have configured Skype to open a conversation on Enter, rather than starting a call, Enter should work just as well here. Ctrl+1 will focus the contact list.
- Return to a conversation that's already open
- Use Ctrl+Tab from another Skype window to find it if you use Compact view. You can also press Ctrl+2 for the Conversation list, find the conversation you want, press the Applications key, and choose Send IM. Again, Enter can be configured to do this as well. If you are using Default view, where conversations appear in the main Skype window, you can press Space on a conversation list entry to display the conversation without leaving the conversation list. This makes Alt+numbers and Alt+arrows work without changing focus.
- Check the time at a contact's location
- Open or find the conversation as above, then use Ctrl+6 to read the profile area. The time is included there. Note that the time is not shown in the Contact list, even visually, as it was in Skype 3.x.
- Call someone in your contact list
- From the Contact or Conversation list, arrow to the contact of interest, pop up the Context menu by pressing the Applications key, and select Call. Enter can be configured to start a call or start a text conversation, so depending on your personal preference, Enter may work here as well.. Note that starting a call will put the conversation in the Live Conversations list rather than the Conversation list. By the way, when a call is active, that person's entry in your contact list will be gone; it literally moves from Contacts to the Live Conversations list. It will move back when the call ends.
- Call the person you're typing with in a conversation
- Tab to the Call button and press Space.
- Call a phone number that is not in your contact list
- Choose "Call Phones" from the View menu. When the Call Phones page opens, type the number and press Enter.
- Dial digits while in a call, such as to control an answering machine or voicemail service
- Just press the desired digits. Skype 5 focuses the Dial Pad whenever you start a call with a telephone number. If this does not work, type Ctrl+Shift+D to focus the Dial Pad first.
- Hang up a call
- Use Ctrl+3 to move focus to the Live Conversations list, select the call, and use the Context menu to select End Call. The person's entry will migrate back to the Contacts list after a few seconds. If you have configured hot keys, a hot key such as Alt+PgDn can also be used to end a call.
- Play a voicemail
- Find the voicemail's entry in the conversation message list for that person, then Tab to the Play button and press Space.
- Stop a playing voicemail
- Same as above, but the button will be called "Stop" when the voicemail is already playing.
- Accept or refuse an incoming file transfer
- Find the file transfer's entry in the conversation message list for that person, then Tab to the Save or Cancel button and press Space.
- Find the currently active call's conversation.
- Use Ctrl+3 to move to Live Conversations, then arrow up and down to find the call, if there are calls on hold as well.
- Add an incoming call to the current call to create a conference
- Move to the incoming call's entry in Conversations, press the Applications key, and choose Invite to Conference.
- Re-add a conference participant who dropped out or lost connection
- Move to the conversation as described earlier, then press Ctrl+6 twice quickly to move to the conversation's Profile area. Then Tab through the various buttons and past any other participants, to the participant you want. The Call button should follow in Tab order from there. (This set of instructions needs to ve verified and likely updated.)
- Change your mood text
- Activate the Skype Home area, such as with Ctrl+8. Then find the Edit box for mood text, update it, and press the Update link below it. This is an HTML environment, so the normal JAWS commands for handling web pages apply here.
This is a summary of things that will be new to seasoned Skype 3.x users. This is far from a complete list.
- JAWSKey+Q correctly says these scripts are for Skype 4, not Skype 3.
- Access to Call Phones, Directory, and Shop panes. Use the View menu to open them.
- The Command system now has a help facility: At any command level, Tab and Shift+Tab will cycle through the command keys available at that level, and JAWSKey+Tab will repeat the last choice.
- The Command key system now includes most commands so they can easily be found.
- SkypeCommandEnter.wav is no longer included as it was never used, and SkypeCommandExit.wav is renamed to mkcsExit.wav.
- Visible contacts are now called Connected contacts.
- Command O V for listing visible contacts is now Command O C.
The following features of the JAWS scripts for Skype 3 will not work in Skype 4 and may never be revived, at least in the same form, due either to being obsolete or to there being insufficient means to implement them again. Typing most of these commands will now pass the keystrokes to Skype, as these keystrokes are no longer assigned to JAWS scripts.
- Ctrl+E to check the end time of a call in History.
- Alt+Accent for clicking for previous chat messages. The "Click for previous chat messages" line does not exist in Skype 4.
- Ctrl+Accent for getting information about the active Skype tab. There are no longer Skype tabs per se.
- Ctrl+Shift+I for technical call info. This command was barely working already, but it probably won't work at all now.
- Ctrl+Shift+L for picking a contact and action. Much of this command's functionality was based on irregular use of Skype command-line features that do not work identically or at all in Skype 4. Use the Context menu for a contact or conversation list entry instead.
- Ctrl+M for changing mood text. This probably will not come back as it is provided by Skype itself on the main Skype window.
Translating the scripts should only involve editing the jsm and jsd files, not the code (jss) files.
Script translation will involve two kinds of translation, described in the following two subsections. Keeping up with script updates is covered in the final subsection.
This is translation of what JAWS will say to the user. This requires
- Translating the "msg" constants in all jsm files into appropriate text for the new language, and
- Translating the descriptive text for scripts in jsd files similarly, if you want Keyboard Help to be translated.
Translating "msg" constants should be fairly self-explanatory. Where necessary, the jsm file should include comments above a constant explaining how and/or where it is used, to provide necessary context for the translation.
Translating a jsd file involves careful translation of only those parts of the file that are descriptive text that can be spoken to the user. Relevant descriptive text appears on ":Synopsis" and ":Description" lines that are right below a ":Script" line. For various reasons, I do not recommend translation of the following parts of a jsd file:
- :Synopsis or :Description lines for functions.
- :Param or :Returns lines.
After the jsm and jsd files are translated, whatever script code functions properly in the target language should speak in that language. However, another type of translation is often required to achieve correct script functionality in another language.
This is translation of text that is contained in Skype and that the scripts need to check for. Translating this text is not merely a translation into appropriate text in the target language. Rather, the new text must precisely match what Skype itself will show or provide for the string being translated. Strings of this type will appear in jsm files as constants or messages and will usually begin with "sc."
As an example of why this type of translation is necessary, consider a hypothetical screen containing many fields, one of which is a "Home Phone" field. The "Home Phone" field contains a button which, when pressed, brings up a list of area codes and their countries. This button is not natively accessible though, so a hypothetical script is written to make F4 pop up the area code and country list, but only if pressed on the "Home Phone" field. In another language of the application, "Home Phone" will be written in that language. In order for the F4 script to work, it must know exactly what the application will use for the name of the "Home Phone" field in the target language. Translating "Home Phone" arbitrarily will not work, because the script code will look for the actual screen text shown by the application.
Some literal text sought in Skype by the scripts appears visibly on screen, but some text is drawn from MSAA properties that are not shown visibly. For this reason, it is not always possible to determine what text to use just by looking at screens.
Suggested steps for finding the text to use for this type of translation:
- Pick a string to translate and find it in Skype itself, while running with Skype in English. If the text does not appear on screen, note the area it should apply in, such as Conversation list items.
- Save a copy of Skype's English language file, then also a copy of Skype's language file for the target language. These can be saved from Tools > Change Skype Language > Edit Skype Language File. Use the "Save as" button to save a copy of the files.
- Open the two language files in Notepad, Wordpad, or a similar text editor, so you can search through their contents. It may be easier to open the files if you first rename them to have a txt extension.
- Find the string you are translating by searching for it (or part of it) in the English language file. There may be more than one match; use the string names at the left of each line, which tend to denote where the string is used or relevant, to figure out which string you want.
- Using the string's name from the English file, find the translation of that string in the target language's file.
- Replace the jsm English text as appropriate with the text you found in Skype's target language file.
If a particular string proves hard to understand or translate, describe the problem on the SkypeEnglish mailing list so someone there (possibly me) can help.
As the Skype scripts change to keep up with Skype updates, add features, etc., conforming changes in translated scripts will sometimes be required. The general approach to this type of maintenance is
- Keep copies of the English and localized versions of the last set of scripts you translated.
- When a new script version comes out, download it and compare the files requiring translation in the English version you saved with the same files in the new scripts.
- Where there are changes between two versions of a file, make conforming changes in the localized version of the same file.
- Save the updated localized scripts for the comparison when the next script update comes out.
A common way to simplify step 2 above is to use a "diff" utility; that is, a program whose purpose is to list changes between two versions of a file or set of files. A number of diff utilities are available, including WinDiff and the diff that comes as part of the Cygwin package. It is beyond the scope of this document (or this author) to provide support or training in the use of any particular diff utility, but the following general principals should apply to most or all of them:
- You provide the diff utility with either two file names or two folder names. In both cases, the first should indicate the older scripts and the second should indicate the newer scripts. Example:
diff old/skype.jsm new/skype.jsm
- For command-line-based differs at least, it is possible to redirect output into a file with the greater-than (>) symbol:
diff old new > diff.txt(That example provides two folder names, which in most differs will result in a list of changes in all files in both folders.)
- For each file compared, diff utilities usually indicate changes by producing one or more blocks of information, indicating first the line numbers of the old and new files that are described by the block, then the actual material on both old and new versions of those lines.
- A diff utility produces any of several output formats. Two examples:
- Old-style diff
- Lines beginning with a less-than sign (<) are lines from the old file, and lines beginning with a greater-than sign (>) are lines from the new file. These appear separated by a line of dashes (---). This format does not provide context, meaning that the only lines you see are the ones that have been changed or that appear in a block of changes.
- New or "unified" diff
- Lines beginning with a minus sign or dash (-) are lines from the old file, and lines beginning with a plus sign (+) are lines from the new file. Lines beginning with a space are identical in both files. This format shows a ffew lines of context above and below the lines that changed.