[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-XBoard] Fwd: Accessibilty request.

From: Joshua Pettus
Subject: [Bug-XBoard] Fwd: Accessibilty request.
Date: Tue, 20 Jan 2015 10:06:49 -0500

Begin forwarded message:

Subject: Re: [Bug-XBoard] Accessibilty request.
From: Joshua Pettus <address@hidden>
Date: January 20, 2015 at 10:05:41 AM EST
To: "H.G. Muller" <address@hidden>

What about using Orca, Gnome’s screen reader, as the screen reader for GTK stuff and OSX’s VoiceOver for the OSX menubar.  
To be honest I have no idea if Orca can be compiled for OSX.  It is likely beyond my ability, but should be a decent solution for linux, and I’m told is included with Ubuntu.


On Jan 20, 2015, at 9:44 AM, H.G. Muller <address@hidden> wrote:

I looked a bit at XBoard, and it seems the accessibility is awful. I recal that someone
was doing a GSOC project on this, but I never heard about it again.

For use by blind people it is essential that everything can be controlled from the keyboard.
But XBoard does not even have a way to pen the main menus through keystrokes. This
is easily repaired by using "gtk_menu_item_new_with_mnemonic" in stead of ...with_label,
and putting underscores in the menu names before the shortcut letter. This will allow
people to use <Alt> + letter to open the corrsponding menu. For selecting an item from
the menu he is then dependent on the up/down arrow keys, as the individual menu items
also have no mnemonics defined for them.

One of the WinBoard for JAWS features which was pretty essential was the ability to
navigate through all windows using the Tab key. Within a GTK dialog the Tab key navigates
through all controls, and allows the user to type something there, toggle a checkbox, etc.
This is perfect for transient dialogs, as they are supposed to grab all mouse and key events,
and allow return to other windows only after you close them. But in the non-modal 'auxiliary
windows' Engine Output, Move History, Edit Tags/Comment etc. there are large (multi-line)
text edits, where Tab is considered valid input, and is just added to the text edit that has focus.

In WB for JAWS operating the Tab key in those windows navigates between them, through a
'grand loop' chess board -> main window button bar -> Engine Output upper pane -> Engine
Output lower pane -> Move History -> ICS output -> ICS input -> chess board...

Windows that are not open are skipped. As usual Shift + Tab navigates in the opposite
direction. Most of the items in the gand loop are read-only, but it is important for a blind
person to give them focus, because that triggers the screen reader reading their contents.
The rationale behind the orderis that (in ICS mode) starting to type to the board automatically
transfers focus to the ICS Input, so that there is no disadvantage to having ICS input late in
the cycle. When the board has focus, the arrow keys control a 'board cursor', highlighting a
'current square' and speaking its contents.

To implement this in XBoard we would need to define handlers for keyboard events on
the various text memos, to intercept Tab and transfer focus to the next item in the loop.

Normally a screen reader should start reading out loud the item that receives focus.
Blind persons will surely have a screen reader, or they could not use the computer at all.
If the screen reader would not operate on GTK dialigs because they do not use native
OS X API, there would be a problem, and we would have to provide an 'acquired focus'
event handler for every coltrol element, sending the name of the element to a voice
synthesizer to emulate a screen reader.

The number of cases where WinBoard for JAWS sends text to the voice synthesizer itself
is quite small: moving the board curser, and when a new move appears above the board
(as in WinBoard there is no independent message widget, and the move+PV text is
is part of the board graphics there). And then there is an extra menu with explicitly
requests voice output for various purposes: reading out the entire position, telling
the moves from or to the current squares, repeating the last move, etc.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]