[sok] Simple On-screen Keyboard planning

Henrik Nilsen Omma henrik at ubuntu.com
Tue May 9 16:53:56 BST 2006


Hi everyone,


The application deadline for SoC students is nearing an end (though it 
has been extended by Google by a day or so) and I'm pleased to see a 
good number of applications for 2 of the 3 AT projects (nobody applied 
for the config panel, which can understandably seem boring).

I won't go so far as to post all the applications here ;) but I'll post 
some more detailed thougths and invite discussion on the planned 
features and roadmaps (yes, this is in part me being lazy and not 
wanting to have 12 identical email conversations fleshing out spec 
details -- but I also think that an open process works better). I've 
copied in the SOK applicants on Bcc. Feel free to jump in with comments 
and ideas or just hang back and read the suggestions. To sign up: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-accessibility

The advantage in this open approach is that there are many people 
reading this list who know a great deal about accessibility and others 
who know much about ubuntu and development. The spec ideas still need a 
fair bit of fleshing out and input from experienced people. The sooner 
we start that process the better positioned we will be when it is time 
to start coding. I'll be doing the same with the XGL-magnifier later.


The Simple On-screen Keyboard
--------------------------------------------------

Let's start by dividing this up into milestones:

M0: Select The language and libraries we will use
  * I'm leaning towards python with pyGTK, but I'd like to hear other 
suggestions with reasons (where is python's xlib support, do we need it, 
can we use C for some aspects?).
  * I want to look at rendering the keys directly with Cairo instead of 
using a widget toolkit. That will give us more flexibility in the 
display and make porting to other platforms easier (or?).
  * Make sure these have bindings we need, esp. to AT-SPI
  * Decide on keyboard definition format. Can the existing GOK format be 
used or do we need to extend it with additional features (regarding key 
placement, colour, etc.)?

M1: Proof of concept keyboard
  * Make a 3-letter ABC keyboard that can pass keystrokes to the active 
application
  * Should be able to be always-on-top without being active
  * Keys rendered in Cairo (if we go that way)
  * All settings are hard coded

M2: A full QWERTY keyboard read from a file
  * Read a key layout from an XML file
  * Support for modifier keys such (Shift, Ctrl, Alt), probably without 
using Sticky Keys

M3: General configuration handling
  * Any configurations that that the user might want to make should be 
sepparated out from the code and read from a file
  * The scheme used should be compatible with the Common AT config approach

M4: Plug-in framework
  * The core idea of SOK is to keep it lean and simple, with extra 
features added as plug-ins.
  * Possible plug-ins might include: Word prediction, switch activation 
support, X-10 home automation support, ...

M5: Non-latin and Tablet PC support testing
  * The keyboard should be unicode from the ground up, so this should 
just work, but needs testing

Optional features:

I list these here partly as a braindump area for new ideas, but also to 
draw a clear line. These features will not be part of the initial 
implementation (to keep it simple) and may only ever be implemented as 
plug-ins.

 * Transparency and animation - these are cool and potentially useful 
things, but clearly non-core
 * Scriptability - Orca has shown us the advantage of adapting the AT 
tools to different applications. That may well have benefits for SOK as 
well.
 * Word prediction - very useful but not everyone needs it. Should be 
implemented as a plug-in or separate utility. Some will want prediction 
without an on-screen keyboard.
 * Graphical layout generator - Many will appreciate the ability to make 
their own layouts easily.
 * Configuration GUI - Should be seen in context with other AT apps, 
ideally as part of the common config panel (still just in planning)

-----

Also, while I'm writing this, let me clear up a common misconception 
that came up in the applications:

The main focus of this project is enhanced accessibility for disabled 
users. I mentioned tablet PC and multi-language input because I think it 
is strategically wise to factor in these use cases. If we make a working 
on-screen keyboard that can also be used in other ways we will get more 
testing and development. And if we don't then alternatives will 
eventually appear anyway. When one of the big PC makers decides they 
want to push tablet PCs for Linux they could either use our solution and 
help improve it or build their own non-AT version, which would be a 
small tragedy.


After we get some feedback on this and nail down some ideas we should 
flesh out the spec in the wiki: 
https://wiki.ubuntu.com/Accessibility/Specs/SOK

- Henrik




More information about the Ubuntu-accessibility mailing list