Accesskey implementations...

Hi folks,

about a decade ago when I was actively involved here I used to waffle on a  
lot about accesskey... In UAAG 1 there ended up some requirement about how  
current interface bindings should be available to the author, and  
configurable, which was a generalisation (probably to the point of  
incomprehensibility) about how accesskeys *should* be handled.

Recently I put this in to practice as an extension to Opera. In order to  
see it working you need the Opera 11 beta, and then you can get it from  
https://addons.labs.opera.com/addons/extensions/details/excesskey/?display=en  
- sorry screenreader folks, the documentation at  
http://my.opera.com/chaals/excesskey is pretty accessible but the Beta  
version of Opera is more or less unusable, especially the extension stuff,  
with a screenreader ;(.

It is a work in progress. But it clarified a bunch of things for me (apart  
 from the fact that I am not a brilliant developer and need to do a whole  
lot more work ;) ).

- accesskeys are really handy, if you know when they are there and  
discover the sites that use them well (*to do: allow users to mark a site  
as 'don't bother' so a different icon shows.)
- It really matters whether you can choose the keys. I made a test page  
that uses ł,आ,س,ф,± as accesskeys - all of which are things I know how to  
generate and are from time to time reasonable keys to use. (I also used ☆  
and ✐ to see what happens ;) ). The common english-language convention of  
using numbers is terrible for french people who use the traditional  
'azerty' layout, but it would make perfect sense for them to use  
&é"'(§è!çà which are the natural defaults for the same physical keys. Yet  
many french people use english sites, and to some extent vice versa.
- it makes perfect sense to allow accesskey='say this please', if you  
shift the responsibility for assigning keys to the User Agent (which you  
need to do in order to allow the user to decide what keys they will use).  
Because I have already begun sketching out an architecture that lets you  
assign non-keyboard interactions, and one obvious one is voice where whole  
words or phrases are *better* than single letters.
- if you can discover what accesskeys are there before you activate them,  
it makes much more sense to have them directly activate a link or control  
than just focus it, where that's a logical thing to do. Of course it's not  
applicable to text input boxes :)
- shift-esc is not a great activation shortcut for the accesskey menu. I  
remap mine to '.' which is more convenient for me (sits between  
search-in-page and search-for-links). YMMV.

The basic idea is this:
1. There is a status indicator to tell you if there are accesskeys defined  
in the page. This is an improvement on Opera's accesskey menu (normally  
activated by shift-esc) which will list the accesskeys defined, or tell  
you there are none. Which in turn is an improvement on guessing what they  
might be or where they might be described.

2. The extension actually cleans up the accesskeys so they can be fired -  
i.e. make sure that each is a single unique character (Opera has a bug  
where accesskey="oops" will break the accesskey menu, and while you can  
navigate the menu with the mouse it doesn't deal nicely with two uses of  
the same key).

3. In the preferences (open extension manager, right click on the funny  
cog wheel next to the 'uninstall button') you can select the keys that you  
want to be used to assign accesskeys. For example, numbers are not very  
helpful for users of french azerty keyboards, since you need to use shift  
to produce them. And cyrillic is more useful for many russian users since  
those are the letters they produce by default. It has been tested with  
cyrillic, arabic, and various other wierd characters.

As the documentation explains, right now it uses Opera's native accesskey  
menu, but for various reasons I am tempted to try and replace that. But  
first I want to make some improvements in the underlying code and  
capabilities - so it won't get any prettiness enhancements for a while.

cheers

Chaals

-- 
Charles McCathieNevile  Opera Software, Standards Group
     je parle français -- hablo español -- jeg lærer norsk
http://my.opera.com/chaals       Try Opera: http://www.opera.com

Received on Wednesday, 1 December 2010 09:29:13 UTC