Development of Accessible E-documents and Programs for the

Development of Accessible Edocuments and Programs for the
Visually Impaired
Accessibility in other platforms
1. Today topics
• Linux console accessibility
• Accessibility in gnome
• Mac os accessibility
2. Linux console
•
•
•
•
relatively simple text only environment
easily readable by screen readers
Colors are used to "highlight" the text
Applications are controlled mainly from
keyboard
3. Linux console (2)
• screen reader can track color-based
cursors (it is possible to define cursor color
patterns,...)
• It is good idea to use system cursor if
possible
• There is ncurses library for creating text
based windows
• ncurses windows are accessible
4. Linux console (3)
• There are many different screen readers
for linux console:
• yasr (yet another screen reader):
http://yasr.sourceforge.net
• SpeakUp: http://www.speakup-project.org
• BRLTTY (braille
terminal):http://mielke.cc/brltty
• ...
5. Linux graphical user interface
• Mostly used environments:
• Gnome
• KDE (K Desktop Environment)
6. Gnome accessibility
• Gnome accessibility architecture (GAA)
provides standardized interface between
assistive technologies (on the one side)
and applications and the user's desktop
(on the other side)
• We will concentrate on application-part of
the architecture
7. Definitions
• GTK (GIMP Toolkit): cross-platform widget
toolkit for creating graphical user interfaces
• CORBA (Common Object Request Broker
Architecture): standard defined by the Object
Management Group (OMG) that enables
software components written in multiple
computer languages and running on multiple
computers to work together
• AT-SPI (Assistive Technology Service Provider
Interface): was developed for interoperability
between different toolkits,
8. Architecture
9. Architecture (2)
•
•
•
•
Three elements
AT-SPI aware applications (servers)
Assistive technologies (clients)
One accessibility broker
10. AT-SPI Applications
• Applications that offer information about
their user interface via the AT-SPI protocol:
• Gnome applications: Based on GTK toolkit
which optionally loads GAIL (Gnome
Accessibility Implementation Library) a
bridge between Gnome widgets and ATK
11. AT-SPI Applications (2)
• Second library: bridge between ATK and
AT-SPI used for example by Mozilla which
does not use GTK but implements the ATK
api within the application
• JAF (Java Accessibility framework ): a
bridge to AT-SPI
12. Assistive technologies
• Applications interested in requesting
information about the user interfaces of
AT-SPI aware applications (screen
readers)
• or in triggering actions in these
applications (like an on-screen keyboard
which needs to send keystrokes)
13. Accessibility broker
• A daemon that coordinates the
communication between AT-SPI aware
applications and assistive technologies
• Applications registers with the broker to
offer its information
• A.T. may add event listeners to the broker
and be informed about changes in
registered application
14. Interface overview
• Basic idea of ATK and AT-SPI: to provide
an accessibility object for each user-visible
UI component
• Basic class: contains methods for
information common for all widgets (state,
relations to other widgets,...)
• Specialized interfaces: for particular ui
components
15. Core classes
• names: Accessible / AtkObject
• Base classes for all accessibility handling
related to a given widget
• Contains methods for enquiring and
changing important properties (name,
description, relation to other objects, role,
state)
16. Core classes(2)
• Methods for handling notifications when
properties of the widget change
• Methods for determining the parent and
the children of the widget
17. Event listeners management
• names: AtkUtil (class) / Application
(interface)
• Methods for adding and removing event
listeners
• Methods for enquiring the name and
version of toolkit
18. Specialized accessibility
interfaces
• Action / AtkAction:
• Should be implemented if the user can
directly interact with the corresponding
widget, as for example with buttons or
scroll bars.
• Contains methods for enquiring the names
and descriptions, for actions and for
triggering these actions
19. Specialized accessibility
interfaces (2)
• Component / AtkComponent:
• Should be implemented for all widgets that
have a screen representation
• Contains methods for enquiring the screen
position
• adding and removing a focus handler
• grabbing the focus
20. Specialized accessibility
interfaces (3)
• Selection / AtkSelection:
• should be implemented for all widgets
whose child widgets can be selected
• contains methods for selecting and
deselecting children
• For enquiring the selection status of a
given child
• for enquiring the references to the
selected children
21. Specialized accessibility
interfaces (4)
• AtkDocument:
• should be implemented for widgets that
are associated with the Document Object
Model (DOM)
• It is ignored within the current bridge to ATSPI as there is no standard way to provide
access to an application's DOM tree
22
. Specialized accessibility
interfaces (5)
• Image / AtkImage:
• should be implemented for widgets that
contain image or pixmap graphics
• contains methods for enquiring the screen
position of the image
• For enquiring or setting a textual
description of the image
23. Specialized accessibility
interfaces (6)
• Table / AtkTable:
• should be implemented for widgets that
order their children like cells within a table
• contains methods for enquiring row- and
column headers
• For enquiring a description of the contents
of the table
• For translating between cell positions and
child numbers
24. Specialized accessibility
interfaces (7)
• Text / AtkText:
• Should be implemented for widgets that
contain textual contents
• Contains methods for handling the cursor
25. Specialized accessibility
interfaces (7)
• Enquiring and setting a selection
• Enquiring single characters as well as the
part of the text that is before or after a
given offset.
• does not contain methods for changing the
text
26. Specialized accessibility
interfaces (8)
• EditableText / AtkEditableText:
• should be implemented for widgets that
contain editable textual contents.
• The Text interface is also implemented
27. Specialized accessibility
interfaces (9)
• Contains methods for setting the complete
text
• For inserting a given text at a given offset
• For deleting some part of the text
• For the standard cut, copy and paste
functions
28. Resources
• Orca (screen reader for Gnome environment):
http://live.gnome.org/Orca
• If you want to try: part of Ubuntu linux (after boot
from CD): http://www.ubuntulinux.org
• Gnome accessibility developers guide:
http://library.gnome.org/devel/accessibility-develguide/nightly/
• Gnome accessibility architecture:
http://accessibility.kde.org/developer/atk.php
29. Mac OS accessibility
• Two frameworks for creating user
interfaces (cocoa, carbon)
• In Mac OS X 10.2 Apple introduced the
accessibility framework
• Accessibility protocol: implemented in both
frameworks, allows applications
themselves to a.t.
• APIs: used by assistive technologies to
drive the user interface of an application
30. Mac OS accessibility model
• Each UI component is represented by
accessibility object(AO)
• AOs are organized in hierarchy defined by
parent-child relationship
• E.G. app window may contain buttons, ao of app
window manages a list of children (AOs of
buttons) and each button knows its parent
• AOs of menu bar and windows in application are
children of application AO
• Application AO is a child of system-wide AO
31. Mac OS accessibility model (2)
32. Accessibility object
• Similar to IAccessible interface
• Provides attributes (name, description,
role, role description, ...)
• and methods (actions): Press, increment
and decrement, confirm, cancel,...
• Each action has a description property
• Particular getters and setters of attributes
and actions are implemented if required
33. Communication
• Similar to technologies which we know
from other platforms
• Messages from AT to get an information
about an AO and to request the
performance of actions
• Notifications triggered by AOs that at's can
listen for
34. Example of interaction
• The user says, “Open Preferences
window.”
• The screen reader sends a message to
the application accessibility object, asking
for its menu bar attribute, which is a
reference to the menu bar accessibility
object.
35. Example of interaction (2)
• It then queries the menu bar for a list of its
children, and queries each child for its title
attribute until it finds the one whose title is
the application’s name (that is, the
application menu).
36. Example of interaction (3)
• A second iteration lets it find the
Preferences menu item within the
application menu.
• Finally, the screen reader tells the
Preferences menu item to perform the
press action.
37. Example of interaction (4)
• The application opens the Preferences window
and then the window sends a notification
broadcasting that a new window is now visible
and active.
• The screen reader, assuming that it registered to
be notified when a new window opens, queries
the window for a list of its attributes. Assuming
that the window accessibility object contains a
children attribute, it then queries the accessibility
object for the value of its children attribute.
38. Example of interaction (5)
• To each child of the window accessibility
object, the screen reader sends a query
asking for a list of its attributes.
• It then queries the child for the values of
its role, role description, and (if it exists)
children attributes.
39. Example of interaction (6)
• Among the responses, the screen reader
learns that the pane contains several
children (for example, three checkboxes).
• The screen reader queries each checkbox,
asking for the values of role, role
description, value and children
40. Example of interaction (7)
• The screen reader, having learned what
objects (controls in this case) are
accessible in the window, reports this
information to the user using speech
synthesis.
• The user might then ask for more
information about one of the checkboxes.
41. Example of interaction (8)
• The screen reader queries the specified
checkbox, asking for the value of its help
attribute (assuming it exists). It reports this
string to the user using speech synthesis.
• The user then tells the screen reader to
check the checkbox.
42. Example of interaction (9)
• The screen reader sends a message
requesting that the checkbox’s value
attribute be set to 1.
• The checkbox accessibility object
broadcasts that the value of its value
attribute has changed.
43. Resources
• Accessibility overview:
http://developer.apple.com/DOCUMENTAT
ION/Accessibility/Conceptual/Accessibility
MacOSX/OSXAXIntro/chapter_1_section_
1.html