SkRead

A Skype Event Reader, written by sean Randall of RandyLaptop.com.

What is it?

SkRead is a small program, created for users of the Skype Internet Telephony software.

Skype has become amazingly popular, and the blind community are no exception.

SkRead will read things that are happening with Skype.

At present, it reads call announcements, most chat messages, and contact status changes, as well as contacts as you navigate them in theSkype window, and (new in 2.3) upcoming birthdays.

It is not, I hasten to point out, a replacement for a screen reader - but it does fill a niche where the screen reader may not instantly be able to read the name of an incoming caller, when you're focused on a separate window, just as an example.

How Does it Work?

By using the Skype API (which is a method of sending and retrieving information directly from Skype, provided by it's creators), this program announces various events, per your settings.

It is a small and simple program, with no interface per se.

You simply need to change the settings, if you wish, run the program, and authorise it to work with Skype.

Changing the Settings

The program itself is the file "Skread.exe", and the settings are in the file "skread.ini".

An INI file is a fairly standard way of storing configuration information, and this is the file you must edit to modify SkRead to your liking.

Ini File Structure

INI files are composed of sections, keys, and values.

Think of keys and values as settings, and their values (like "voice=0") and sections as the category or type of setting.

Later in this documentation is a list of each setting in the file and what possible values it can hold.

When you're done editing the file, simply save it. Any changes will be reflected the next time you run SkRead.

Running the Program

When you've configured the settings to your liking, you simply need run the Skread.exe application.

You can also create a shortcut to the program if you so wish.

Skype Authorisation

For any program wishing to interact with Skype, you must tell Skype that you give your permission.

When you first run SkRead, Skype will pop-up and ask if you want to "allow this program to use Skype."

There are three options you can choose in this dialog:

1.    "Allow This Program to Use Skype": This is the ideal setting, and will permit SkRead to use Skype under your username permanently.

2.    "Allow this program to use Skype, but ask again in the future": If you want to simply test out SkRead and aren't sure of committing yourself, you can use this option. SkRead will work, but you will be asked again the next time you run SkRead.

3.    "Do not allow this program to use Skype": If you select this, of course SkRead will fail to function.

Closing the program

SkRead will exit if for any reason Skype no longer runs.

It will remain active if you go offline, accidentally or on purpose - but only so long as Skype is not closed.

Differentiate between "hidden" (when the Skype window may not be active, but still running) and "closed", when Skype is no longer running at all.

If you wish to close SkRead yourself, you can press the "quit" hotkey. By default, this key is alt+f1 (see the settings section below) but you can change this if you wish.

Birthdays

New in SkRead 2.3 is the ability to hear of birthdays that are coming up.

By default, the hotkey for this is alt+b (b, for birthday)!

You can adjust how near the birthday must be before it is announced, in days - (default is 2 weeks) in the INI file.

Pressing alt+b a second time (or whatever your hotkey is) will stop the reading of the list, but only after the current birthday is done reading.

Call Duration

Sometimes, you want to know how long you've been talking. You can press the duration key - which by default is set to alt+windows+d, to hear this info. New in 2.4.

File Transfers

Also new in 2.4 (and fairly untested), you can press the transfer key, alt+windows+f, to here the status of any transferring files.

Going Deaf?

If you missed what SkRead said, you can press the repeat key (alt+r) to hear it again.

As always, the key is changeable from the INI file.

Hotkeys

Some of the settings in the INI file are hotkeys, such as !b for the birthday Key. The exclamation point means alt.

You can use the following characters for modifier keys:

! (the exclamation mark), alt.

+ (The Plus sign), Shift.

^ (The carrot sign), Control.

# (The hash or pound sign), Windows Key.

Program Settings

Because SkRead has no user interface as such, all the control you have is in the INI file.

People - a fair few of them - have complained to me that INI files are too complicated and confusing.

Of course, this INI file is more confusing and complicated than most, because of the way in which it works. Nonetheless, I refuse to treat the users of my software as idiots. Besides: this is a beta program.

Section: Settings

The settings section of the INI file holds various settings not related to the reading of Skype Events, which come later on.

Voice

This setting controls the voice to use with SkRead.

It can use any SAPI5 voice on your system.

They are indexed numerically.

The first voice (and the default) on your system is 0, so this is 0 in the INI file by default.

On most Windows XP systems, Microsoft Sam fills this spot, unless you get other voices.

If you have more, 1 will be the next voice on your system, alphabetically.

Instead of using a numerical index, you can now also use part of a voice name. TO use Microsoft Sam, for instance, you might set this to "sam".

Voices are listed in control panel, under the speech applet.

Note: this setting overrides the control panel setting.

VoiceRate

This allows you to set the speed of the voice. Ranges are from -10 (which is slowest), to 10 (fastest).

0 is the default and is 50%.

Note: this setting overrides the control panel setting.

VoicePitch

This setting allows for adjustment of the voice's pitch.

Ranges are from -10 (lowest) to 10 (highest). The default is 0, which is the mid-range.

VoiceVolume

This setting allows for the adjustment of the volume.

The range is from 0 (silent) to 100 (full).

The default for this setting is 50 (half).

Note: this setting overrides the control panel setting. Also, the default in previous versions of SkRead was 100.

SpeechIntVar

This setting determines how speech works in SkRead.

If the value is 1 (default), SkRead will read everything in sequence without interrupting itself.

If the value is 3, SkRead will interrupt itself whenever it has something new to say.

Note to programmers: This value is the second parameter to the SpVoices Speak method.

Stopkey

This setting specifies a keystroke to interrupt the speech, should you wish to.

By default, it is set to alt+esc.

The format of this keystroke is specified in the AutoIt3 Help file.

Quitkey

This keystroke uses the same format as the one above, and specifies the key to close SkRead.

By default, it is set to alt+f1.

BirthdayKey

This key allows you to hear upcoming birthdays. By default, it is set to alt+b.

RepeatKey

This key repeats the last thing spoken by SkRead.

By default, it is set to alt+r.

DurationKey

This defines the key to be used when accessing current call durations. By default, it is alt+windows+d.

FileKey

This defines the key that is to be used when accessing status information about file transfers. By Default, it is alt+windows+f

AnnounceStartup

This setting determines whether the startup message - the one spoken when SkRead is initially run - is spoken allowed.

This is a Boolean setting - so 1 for yes, 0 for no.

BirthdayDays

This setting is a number of days to look ahead when listing birthdays.

By default, it is set to 14. So, if you press the Birthday key without adjusting this setting, SkRead will announce contacts that have a birthday within the next two weeks.

The ranges for this are 0 (today) to 364.

Section: Events

The events section of this file determines what events triggered by Skype are read allowed, and each has certain criteria you can specify to limit the range of reading further.

For example, the first event is UserStatusChanged, which is triggered when your online status changes.

The values of the settings determine what is read.

If your UserStatusChanged setting was "Online, away" - then you would only hear it from SkRead if you set your status to Online or Away.

It should be noted that the individual criteria are separated with commas, and the matches are string based. For instance, if userStatusChanged was simply "line", it would match "online" and "offline".

Most of the events follow this pattern - the ones that do not are indicated so.

UserStatusChanged

This event is triggered when your online status us changed, either by you (generally from Skype's file menu) or by inactivity per the Skype settings.

Possible values for this setting are: unknown,offline,online,away,not available,do not disturb,invisible,skype me

OnlineStatusChanged

This is very similar to UserStatus, but refers not to you but to your contacts.

SkRead will announce "person is status", when their status changes.

If you only wanted to hear people who become online, you could limit the value of this setting to "online".

Possible values for this setting are: offline,online,away,not available,do not disturb,skype me.

CallStatusChanged

This event is triggered when something happens on a call. Many things can trigger a call event - an incoming or outgoing call, a call placed on hold, or a call finished.

Possible values for this setting are: Unknown,unplaced,Call is currently being routed,Early media is being played,Call failed,Ringing,Call in progress,hold remotely,hold locally,call is finished,Call was missed,Call was refused,Destination is busy,Call was cancelled, voicemail.

Note that voicemail will encompass things such as "uploading voicemail" and "voicemail sent".

MuteChanged

This event is called when you mute or unmute your microphone while on a Skype call.

Most of the people I call on Skype lack the common courtesy to mute their microphones if they're about to explosively vomit, yell at their parents, etc - but those that do use this feature might want announcement of the fact by SkRead.

Possible values for this setting are: 1, 0.

This is not a Boolean value as 1 will announce "muted" and 0 "unmuted". You can of course only include one or the other, or neither if you wish.

ChatMessage

This event gets triggered when a chat message goes in or out.

Possible values for this setting are: 1, 3.

1 reads incoming chats, 3 outgoing.

Note: there is a bug here where, in certain circumstances, the message will not be read. I'm working on a fix for this but until I know more, it may be hard to fix.

ContactsFocus

This is a Boolean value - 1 or 0, on or off, yes or no.

When set to 1, as you cursor through your Skype contacts, SkRead will announce their names and Status.

If you have a Skype Out contact, it will also read the number.

This is a new feature in beta 2.2, added upon request of a user who doesn't use a screen reader that can handle the Skype contact list.

Credits

The entire concept for this program was born with the JAWS Scripts forSkype, which had a similar feature which was optional and would read extra information.

This was problematic in early versions of the scripts, and so I wrote the initial version of this program to compensate for that.

These days, I hear the scripts do much better, and I give my wholehearted congratulations to the developers.

But it seemed a shame to abandon this program - it was proving so popular (and the torrents of unauthorised distribution showed).

So I rewrote it a couple of weeks ago, and here's the result.

I'd like to thank Matthew Horspool for providing me with some code (all be it dirty code), and Aaron Danvers Jukes, who asked for the reading of focused contacts and tested it - I not requiring such a feature.

Credits for particular feature suggestions are in the change log.

It only remains for me to remind you that this is a beta program, and so there's much opportunity for improvement and updates.

If you have suggestions, questions, comments or any other form of communication you wish to engage in, you can of course Send Me An E-Mail, Call or Chat to me on Skype, or Contact Me in some other way.

Program Change Log

Beta 2.4, June 25, 2006.

Fixed the ability to turn off the startup announcement, never let it be said that an = sign is not important.

Hopefully fixed a start-up error so SkRead can properly run in start-up without clashing with skype. Thanks Steve for the exhaustive testing!

Modified the voice key of the ini so that you can specify a voice rather than an Integer (e.g. "Sam" for Microsoft Sam). Stole the idea from WE.

Fixed the birthday bug whereby someone would be too old if it was their birthday on the day that you checked.

Added a new hotkey, "duration key" - reports call durations of any active calls. Somewhat untested.

Added a new hotkey, "File Key", that reports the status of any active file transfers. Very Buggy!

Noticed that the mute key doesn't work in some Skype Betas.

Beta 2.3, June 18, 2006.

·        Fixed a startup bug which would load Skype all the time I hope (Thanks Steve).

·        Modified the speak function so that a repeater key could be used to hear the last thing spoken (Thanks to Doris and Steve).

·        Added the ability to adjust voice rate,pitch, and volume (Again thanks to Steve who was very nice about asking).

·        Added a function to list upcoming Birthdays (Mainly because Kevin wanted one). Kevin is rarely nice about asking me for anything though, so bla to you, Kevin! :P actually he's great - which just goes to show that a bla is not a bad thing.

Beta 2.2, May 1, 2006.

·        Added reading of focused contacts (Thanks Aaron).

·        Fixed crashing on API errors (Big Thanks to {Philip).

·        Rewrote documentation (Thanks to an absent ICT Teacher, but I didn't say that).

Beta 2.1, April 13, 2006.

·        Initial release, with crappy documentation.