440 likes | 551 Views
Development of Accessible E-documents 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
E N D
Development of Accessible E-documents 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,
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 AT-SPI 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-devel-guide/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
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/DOCUMENTATION/Accessibility/Conceptual/AccessibilityMacOSX/OSXAXIntro/chapter_1_section_1.html