[sugar] OLPC Accessibility

Chris Jones skating.tortoise
Sat Dec 23 17:12:44 EST 2006

I was approached by Ivan Krsti? to look at accessibility on the OLPC.

The two main things we need to accomplish are firstly support for
alternative inputs such as head mice and switch devices using an
on-screen keyboard.  Secondly some basic screen reader support for
visually impaired users.

Written below is the way I think these things could be implemented on
the OLPC.  Though my knowledge of the OLPC is not very broad so I
would like to invite the readers of this list to comment on what is
unworkable and advise where there is a better solution.

--On-Screen Keyboard--

Currently all Linux OSKs work as a window that sets various window
manager hints to keep other windows from covering it and stop it
gaining focus.  Fake key press events are then sent to the xserver.
This would not be possible to do on Sugar however because the window
concept does not exist.

The limited size of the display on the OLPC means that when the
keyboard is in use we probably want it to use all the screen.  With a
widget showing the text being edited.

Instead of creating a separate OSK activity or application it might be
better to make an OSK full-screen widget which an activity invokes
when it is needed.  For example when a text entry widget is selected.

A similar approach could be taken to select widgets in an activity
when in switch mode.  Each activity implements a way to cycle through
widgets in a sensible order using a switch device.

--Screen Reader--
Linux screen readers such as Orca use the accessibility framework and
a per application script to work out what text to speak.

We have the advantage of being able to hardcode speech in to each
activity which should be much more efficient and have a better end

The first step would be to include a speech engine with the OLPC OS.
eSpeak seems like a good choice because of it's low resource usage
compared to festival for example.

-- Accessibility Settings--
There needs to be a way to configure accessibility settings globally
to all activities.  These setting basically consist of
enabling/disabling screenreader and onscreen keyboard.

Other points worth considering are:
* The inclusion of Dasher, another input system.

* Magnification which has only recently become usable on conventional
Linux desktops because of XGL/AIGLX

Chris Jones

jabber - skating.tortoise at gmail.com
msn - skating_tortoise at dsl.pipex.com

More information about the Sugar-devel mailing list