BBC iPlayer Radio 9.3.2

A small update to BBC iPlayer Radio. I’ve been having some reports that the program is having problems connecting to the Internet. I can’t replicate the problems here, sadly. But I’ve made the error message provide more information, so hopefully I’ll be able to get to the bottom of it!

A couple of other little bugfixes, including a fix for Windows 7 machines without .Net 4, and removing some Windows Firewall code that I now realise is redundant (and who knows, might be causing the connection problems!)

  • BBC iPlayer Radio 9.3.2 Installer

BBC iPlayer TV 7.5.0

I’ve updated BBC iPlayer TV to 7.5.0. For 7.3 and 7.4 I was using a JavaScript interface, but the new “Have you got a BBC TV Licence?” dialogue and other changes appears to have broken it (again!)

I’ve therefore gone to using the venerable Microsoft Active Accessibility (MSAA) interface to hunt down and press the correct buttons on the iPlayer page. This is a bit slow, and you’ve lost the mechanism for pause or skipping. I could put that in another time, but for now it works, and that’s the main thing. You’ve also sadly lost the switching interface, but I suspect no-one was using it!

Reading View/Mode in your browser

This is a tip for users with some sight.

The Microsoft Edge and Mozilla Firefox browsers come with a built-in Reading View or Reader Mode (for Google Chrome there is an extension, see below).

Reading View takes the webpage you are looking at, with all its adverts and pretty columns, and rips out the actual text you want to read and fills the browser with it. You can even make this text nice and big, and zooming doesn’t lose anything off the side of the page so you don’t have to scroll left and right. This is great for reading larger web pages online.

You have to switch to Reading View for new every page you visit, though. It doesn’t happen automatically.

In both Edge and Firefox you look for an icon of a book that appears on some pages to the right of the webpage address (i.e. the white box at the very top where you see If this icon appears and/or lights up, you can click on it and go into Reading Mode.

Click the book icon in the address bar to turn on reading mode.

For Google Chrome you have to install the free Readability extension from the Chrome Web Store to do roughly the same thing. You get a permanent button at the top right of the window, and you have to click it and select “Read Now” to go into Reading View.

Making your (Windows) computer easier to use with a sight problem

This is a set of suggestions and tips for helping you or someone you know with problems with sight to use their Windows computer. It’s probably most useful for a technically-minded person looking to help someone with sight loss but still some vision. Age-related sight loss, for example. If you are completely blind you will need a screenreader and more specialist training.

The focus is on changing Windows settings and free and low-cost software. It’s basically the things I would do if I was round your house trying to get your PC set up to be useful for you.

I’m assuming you’re on Windows 10, which has better accessibility features than previous versions. Windows 8 is just about as good, and Windows 7 is okay, but earlier than that and you really should upgrade.

I start, though, with a couple of hardware suggestions.

Get a big TV or monitor

If you have an HDMI output from your computer (most computers do nowadays) you can plug it into a big television or a big monitor to give you a bigger brighter display. A relatively inexpensive 22″ TV will work fine. You can try plugging your TV in to see how it works!

Get a high-visibility physical keyboard

You can buy keyboards with bright big yellow-on-black keys. This will help you find all the key combinations you’re going to be using. For example, from the RNIB Shop:

Black-on-yellow keys and big letters and numbers make this keyboard easier to see and use.

Now on to changing your Windows settings.

Change your display scaling and/or screen resolution

This is surprisingly tricky because there are two settings in Windows that interact.

You can change the screen scaling or DPI (dots per inch). This is in “Start”, “Settings”, “System”, “Display”, “Change the size of text, apps and other items”. Drag the slider left to make things smaller and right to make them bigger.

The Settings, Display dialog that lets you change text size. The slider makes text and anything else on the screen bigger and smaller.

You’ll have to sign out and sign in to see the full effects. You might not be able to drag the slider to make things bigger if you have a low-resolution screen: see “Get a big TV or monitor” above or read on.

Changing the screen scaling or DPI used to work very badly: lots of applications would not display correctly, with overlapping text and missing buttons. Nowadays things work much better. Note that older Windows machines (e.g. Windows 7) won’t let you scale much here so you’re better off with Windows 10.

The alternative to changing the screen scaling or DPI is to change the screen resolution. This is a cruder option, but means every application continues to display correctly. It won’t look pretty to people with good vision, but you probably don’t care about that. This is in “Start”, “Settings”, “System”, “Display”, scroll to the bottom and follow the “Advanced display settings” link, and change the value in the “Resolution” box. The smaller the resolution – the lower the numbers – the bigger everything will get. ScreenResolutionSettingsWindows10

Again, sign out and in to check the full effects.

Finally, things get trickier if you have multiple monitors – like a really big screen plugged into your laptop. You may find some resolutions or scaling levels are unavailable. You could try restricting Windows’ output to just the big monitor you want to use by pressing the Windows key and P together to bring up the Project options, then selecting “Second screen only”. There is more complexity over choosing monitors that I won’t go into here, but “Display” is where you’ll find settings if you look.

Whichever way you do it, some things won’t fit on the screen if you make everything really big. Not much you can do about that.

Make the mouse pointer bigger

“Start”, “Control Panel”, “Hardware and Sound”, and under “Devices and Printers” you’ll see a link for “Mouse”. Go to the “Pointers” tab and select the drop-down in the “Schema” section. There you will find several schemes labelled “extra-large” that make the mouse pointer bigger and easier to see.

Combobox "Scheme" lets you select a different mouse cursor size. Choose "Extra-large"

Switch to a High-Contrast Theme

These make Windows use more contrasting colours for things like window edges and title bars so you can see them more clearly. You can also make the colour scheme yellow or white on black, which might be easier on your eyes.

You can find the High-Contrast themes in “Start”, “Control Panel”, “Appearance and Personalisation”, “Personalisation”. Under “Change the visuals and sounds on your computer” you’ll find four themes labelled “High Contrast”. Pick one of those to try it.

Click/select one of the themes and you get the results instantly.

You will find that signing out and signing in again is needed for the full effect of the themes to be observed.

Make some text in Windows bigger and bolder

If you go to “Start”, “Control Panel”, “Hardware and Sound”, “Display”, you will find a “Change the text size only” section. This lets you make various bits of text in Windows bigger: not that many, sadly, but still some.

Use the comboboxes to change text (font) size for items in Windows.

“Icons” does the icons on the Desktop, which is good and bad: bigger text is easier to read, but there isn’t much space for icon text on the Desktop so you will quickly find it gets truncated. Go to the Desktop itself, right-click the mouse to bring up the context menu, select “View” and “Large Icons” to help.

You may find that you have to sign out and sign in to see the changes. You might also have to select a High Contrast theme (see above) to have the changes take effect.

Try using Windows Narrator (Windows 8 and later)

Windows Narrator is the Microsoft free, built-in screenreader. A screenreader is software that reads out the screen. It wasn’t very powerful before Windows 8, but it’s pretty good now, and the voices it uses for reading are better, and it even works in Microsoft Word. You can start Narrator from “Start” like any program, but you can also set it to start when you start the computer.

A particularly useful function for someone who still has some sight is that you can make it speak whatever you point the mouse at. In the Narrator settings, select “Navigation” and check “Read and interact with the screen using the mouse”.

Windows Narrator settings showing how to turn on "read whatever I point at with the mouse"

This will let you point the mouse at text and hear aloud what it says. Turn off the other speech options and that will stop it chattering when other things happen so you are not confused. Press the Control key at any time to stop Narrator speaking immediately.

You can also easily use Narrator to read a Word document out loud to you. Click in the Word document to choose where to start. Then press the Capslock key and the M key together. Narrator will read and scroll through the document. Again, Control key stops reading.

Try using Windows Magnifier (Windows 8 and later)

Magnifiers make part of the screen bigger, which sounds like a totally perfect solution until you try it and realise that you get completely lost on the screen really easily. You may find that this is therefore too hard to use: try changing the screen scaling or resolution instead (see above).

You can press the Windows key and tap the Plus key or Minus key to turn on and adjust the Magnifier any time you want, so you could use it for some quick magnification to check something out then zoom back out to 100% so you don’t get lost.

Magnifier does have one additional feature that might be useful: you can set magnification to 100% (i.e. no magnification) and turn on “Turn on colour inversion” to make your screen yellow-on-black instead of the normal black-on-white. This has the advantage, or disadvantage, of affecting absolutely everything on the screen. Selecting a High Contrast theme does not – things like videos in web pages and icons and some applications will retain their normal colours. You will almost certainly not need both High Contrast and colour inversion.

Try using NVDA

Non-Visual Desktop Access is a fully-featured free screenreader for completely blind people. It has loads of features and is completely free with a strong volunteer community. However, it’s a “proper” program for blind people, so it’s focused on being powerful but will require some work to learn it – notably the shortcut keys you use to get around.

Try using WindowEyes

This is not a free piece of software. However, Microsoft has done a deal with the makers of WindowEyes, Ai Squared, and if you have a copy of Microsoft Office you can get a free copy of WindowEyes.

WindowEyes is a fully-featured professional screenreader and magnifier, so is more powerful and have more features than Narrator or Magnifier:

I hope these suggestions are helpful! Let me know if I’ve missed anything obvious out.

Additional Notes

  • If changing the screen scaling or DPI works for you but you want things a bit bigger than the slider allows, there is a second place to set the screen scaling or DPI. “Start”, “Control Panel”, “Hardware and Sound”, “Display” has a “Change size of items” section. In there is a link to “set a custom scaling level”, which has a drop-down combo box with more scaling options than you get from the Settings option. This is more likely still to break older applications, but do try it out. On my machine, I can go up to 500% here but only 300% on the Settings option.
  • You can also check the box “Enable pointer shadow” in the Mouse settings to give your mouse pointer a tail as you move it, which again makes it easier to find on the screen: just wiggle it and spot its tail.
  • You can also buy stick-on large bright letters and numbers for your existing keyboard if you prefer not to buy a high-visibility one.

MSAA, UIA and WinForms in .Net

Another item for programmers, more on UIA and MSAA and developing accessible user interfaces, following on from using WPF/XAML with MSAA and UIA.

This is a super-quick guide to using WinForms to make UIs that work well with screenreaders like NVDA or Thunder or JAWS.

  • You don’t need to do anything to Button, CheckBox, MenuItem or MenuStrip controls – other than put some text on them! Image-only controls are no good. It’s fine if only the image is shown to the end user and the text is hidden.
  • You can correctly label content controls that don’t have a Text property, like TextBox, ListBox, ListView, ComboBox, ProgressBar and the like, in one of two ways:
    • Put a Label just before the control you want to label in the tab index order. The Text on the Label labels the control. Use the TabIndex property to make sure the order is correct.
    • Set the AccessibleName property on the content control itself. This labels the control for the screenreader.
  • Groupbox controls don’t label their contents, use one of the other techniques here.
  • You almost certainly want to avoid labelling Panel controls, since they are generally for layout, which is communicated to the screenreader user in other ways than labeling.
  • For WebBrowser controls you need to think about the content in terms of web accessibility – use label elements, ARIA, and other HTML accessibility techniques. You might also need to label the actual WebBrowser control on your form with a Label or AccessibleName, just like any other content control.

Unsurprisingly, these techniques are basically the same as writing forms using the Windows C++ API, since WinForms is a wrapper round that.

WebbIE Web Browser 4.5.1

Small but (I hope!) useful updates to WebbIE web browser today, version 4.5.1.

First, I’ve finally fixed a longstanding and annoying bug where Windows Narrator lost focus on the main text display area in WebbIE. You could observe this simply by navigating to when the JavaScript fired to put focus on the text input area, it took focus from WebbIE, and though I would put it back, and a sighted user could see the caret moving quite happily around the text area, as far as the MSAA/UIA screenreader interface was concerned it was still on the web page. Not Much Use.

Happily, though, WebbIE was on of my first significant .Net project three years ago, and I’ve learned much more since then – including how to fix this one! Focus is placed back in the text area correctly and Narrator works just fine.

Second, I’ve made the browser junk failing frames and external resources as it tries to load the page. This will probably break the display of some advertisements, and I’m afraid some page content too, but WebbIE will be much more responsive and useful. The is in line with a general approach I think is right for WebbIE now: it’s about convenience, and speed, and ease of use over trying to get every last HTML tag and JavaScript call to render in some kind of text format for the end user. WebbIE users are using it because they need it to be faster and simpler and better. If they want it to be more techie… they’re on, who knows, ChromeVox or EmacSpeaks!

Updated BBC Live Radio

A simple update to BBC Live Radio today, to version 3.2.0, so three radio stations that haven’t worked for a while now work again:

  • BBC World Service
  • Classic FM
  • National Public Radio (NPR)

Of course, two of these aren’t BBC stations, but never mind! What NPR and Classic FM have in common is that the URLs change relatively frequently, which breaks my code – I’m not using a documented, supported API, I’m just finding the URL by investigating the website and coding it in. It’s a pain to maintain, since I don’t know they are broken until someone tells me, then I have to go and fix them. Still, because people tell me, I know people use it, so there we are.

The BBC World Service one is more interesting. It also exists in the official BBC API, but doesn’t seem to work correctly. So I’ve found the URL by searching and put in that working one. I know the World Service is a bit of a separate part of the BBC, and I know the Internet services provided by the BBC have been stitched together gradually over many years from my conversations with BBC engineers going back fifteen years. So I suppose this simply represents this internal division.


A technical note today for programmers.

Screenreaders (blind users) interact with Windows programs through accessibility APIs. The most modern is UI Automation. But the first, and possibly most important still, is MSAA, Microsoft Active Accessibility. Windows will supply information from one interface to the other system if required, so most of the time you shouldn’t have to worry too much.

I’ve been doing some .Net programs using WPF or XAML (that is, not WinForms) and here’s a quick guide to what I’ve found:

  • Buttons and CheckBoxes work fine just as they are. In fact, don’t set any Automation properties or you’ll get odd-looking controls in MSAA.
  • ListBox, ComboBox, TextBox, ProgressBar work fine for their contents just as they are. But:
  • Labels don’t label Listbox/ComboBox/TextBox/ProgressBar unless you use LabeledBy.

In C++ applications you associate labels (e.g. “Enter username:”) with the control they are labelling (e.g. a textbox for the username) by using tab order. The label with tab index N labels the control with tab index N+1. So label with tab index 0 provides the name to the combobox with tab index 1.

In WPF you have to set this explicitly using AutomationProperties.LabeledBy, like this:

<Label Content="A ListBox Control:" x:Name="lblList"></Label>
<ListBox AutomationProperties.LabeledBy="{Binding ElementName=lblList}">

Note the funky “Binding” code – you can’t just use the x:Name of the label. Notice also that your Label must have an x:Name! You can also use a TextBlock instead of a label. Generally the pattern is:

<TextThing Content=”The label for the other control” x:Name=”textThingLabel” />
<OtherControl AutomationProperties.LabeledBy=”{Binding ElementName=textThingLabel}” />

Anyway, that suffices for the basics of MSAA/UIA support for WPF if you’re writing .Net Windows applications.

PDF Reader 3.2.0

Update to the PDF Reader 3 application. This is a nice simple program that lets you open PDF files and displays them as plain text to make them super-simple to read with your screenreader. It’s essentially a nice GUI front-end on the XPDF pdftotext.exe program from Foo Labs.

Anyway, PDF Reader only supported PDFs coded in Western European languages (e.g. English), but now supports any language (e.g. Polish, Japanese). Good for non-English users. Other minor bugfixes include not hanging while it opens the PDF file, which is nicer, especially for large PDFs.

End of the Thunder Screenreader

I can now announce the end of Thunder, the first free Windows screenreader. Thunder will no longer be actively maintained, supported or developed, but you can still download installers from the WebbIE site.

Thunder was launched in April 2006 and was the first fully-functional free screenreader: Windows Narrator had launched in Windows 2000, but had never been given the features needed to make it a true alternative to the dominant commercial players. Thunder had all of:

  • Worked with Microsoft Word, Excel and Outlook, so you could use standard business applications.
  • An offscreen model, so more applications spoke, even when they didn’t comply with accessibility APIs (MSAA)
  • Scripting, so you could write application-specific support, including hotkeys and spoken messages and access to all the accessibility and offscreen model information provided by the screenreader.
  • A reading toolbar, magnifying the current text to display in large, high-contrast at the top of the screen.
  • Integration with UAC, so you could do admin functions on your machine and log in and out without sighted help.
  • Full support and translations for many languages, including Arabic, Bulgarian, Czech, German, Greek, English, Spanish, Estonian, French, Italian, Polish, Slovak and Turkish.

Technically, Thunder used a combination of the MSAA API (and UIA through the MSAA bridge), an offscreen model that hooked Windows messages, and specific COM APIs. At the time of its launch the accessibility APIs like MSAA and UIA were not as mature so the offscreen model and COM APIs were required. Other screenreaders still take this approach. Thunder also relied on WebbIE for web browsing, though we wrote in support for direct use of Internet Explorer at one point (using the MSHTML DOM).

Thunder was not open-source/free software, though it was zero cost. This allowed closed-source components to be used in Thunder, such as the powerful third-party offscreen model, and some code that could not be publicly distributed and was provided by application and operating system vendors.

Sounds great! So why end it?

Thunder was never a commercial proposition, though versions were sold with additional features or add-on voices. The aim was to make a real screenreader available to end users for nothing, compared to the very expensive commercial alternatives. But there are now three strong free (zero-cost) alternatives:

  • The great NVDA launched in 2007, and provides a free and open-source screenreader for download. It’s written by blind developers (unlike Thunder) and has attracted a loyal following (as it should).
  • Microsoft licensed WindowEyes for free with anyone with Microsoft Office. Which is pretty much anyone. So you can get a fully-fledged commercial solution.
  • Windows 8 finally improved Windows Narrator enormously, and the MSAA/UIA interfaces on which it depends have increased in utility hugely (for example, they are now available in Microsoft Office and Internet Explorer), so you can probably often get away with the onboard assistive technology much more than you could.

In parallel, we’ve seen fewer innovations in Windows GUI toolkits – XAML was nine years ago, for example, and most toolkits provide UIA and/or MSAA interfaces. So there is perhaps less need to update your copy of JAWS regularly than there was ten years ago.

And finally the huge change: blind users may not be on Windows at all any more. The iPhone and iPad with VoiceOver built in, touch interfaces, and rigorously-controlled walled-garden apps have provided a more accessible and productive environment for many blind people than the free-for-all mouse-and-keyboard world of Windows.

So new, free alternatives, and changes in the marketplace, have meant that the need for Thunder has simply reduced over time. All great news for blind users, which is the important thing. Thunder is dead, long live free screenreaders!