1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# Assistive Technology Service Provider Interface (AT-SPI)
This repository contains the [DBus][DBus] interface definitions for AT-SPI, the Assistive
Technology Service Provider Interface — the core of an accessibility stack for free
software systems. It also contains the basic daemons of the accessibility stack.
The version control repository and bug tracker are at https://gitlab.gnome.org/GNOME/at-spi2-core/
The code in this repository is not intended for application programmers. To write
accessible applications, look into [ATK][ATK] or your programming language's bindings for
the `xml` DBus interfaces mentioned below.
While this module started within the [GNOME][GNOME] project's umbrella, it is not used
only in GNOME. Other sources of relevant information about AT-SPI and Accessibility
include:
* [GNOME Accessibility wiki][gnome-a11y-wiki]
* [KDE Accessibility wiki][kde-a11y-wiki]
* [Accessibility documentation for GNOME users][docs-users]
## Summary of this repository's contents
* `xml` - DBus interfaces for accessibility, described in DBus's XML introspection format.
Ideally, your programming language's implementation of DBus makes use of these files to
generate callable bindings.
* `bus` - Launcher for the session's accessibility bus; see its [README.md](bus/README.md)
for details.
* `registryd` - Daemon that keeps track of accessible applications in the user's session,
and lets them talk to each other and to assistive technologies (ATs) like screen
readers.
* `atspi` - Hand-written binding for the `xml` DBus interface above, for use from C with
[GObject][GObject]. This is not normally what you would use; use a language-specific
binding instead. This module is for use mainly by [`at-spi2-atk`][at-spi2-atk].
* `dbind` - DBus utilities for use by `atspi` above. `atspi` was written before the more
modern C bindings like [GDBusConnection][GDBus] were available, so there is a lot of
hand-written IPC here.
## Historical note
Versions 1.x of AT-SPI were based on [CORBA][CORBA] for inter-process communication (IPC),
using GNOME's ORBit implementation thereof. During the GNOME 2 and 3 release series,
CORBA was phased out in favor of [DBus][DBus], a more modern IPC mechanism.
The original CORBA interfaces for AT-SPI were based on Java's implementation of
accessibility. Later, these CORBA interfaces were translated to DBus. This is why the
interfaces sometimes have a 1990s feeling to them.
The project was started with a D-Bus performance review, the results of which are available
on the GNOME wiki. Keep in mind that the D-Bus AT-SPI design documents on this page have
not been kept up to date.
https://wiki.gnome.org/Accessibility/Documentation/GNOME2/ATSPI2-Investigation
[CORBA]: https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture
[DBus]: https://www.freedesktop.org/wiki/Software/dbus/
[GObject]: https://docs.gtk.org/gobject/
[at-spi2-atk]: https://gitlab.gnome.org/GNOME/at-spi2-atk
[GDBus]: https://docs.gtk.org/gio/class.DBusConnection.html
[ATK]: https://gitlab.gnome.org/GNOME/atk/
[GNOME]: https://www.gnome.org
[docs-users]: https://help.gnome.org/users/gnome-help/stable/a11y.html
[gnome-a11y-wiki]: https://wiki.gnome.org/Accessibility
[kde-a11y-wiki]: https://community.kde.org/Accessibility
|