Fonctionnement de l'accessibilité dans GNOME
La boîte à outils d'accessibilité (ATK) décrit un jeu d'interfaces qui doivent être implémentées dans les composants de l'interface graphique pour les rendre accessibles. Les interfaces sont indépendantes de la boîte à outils - les implémentations peuvent être écrites pour n'importe quel jeu de d'éléments graphiques, tel que GTK, Motif ou Qt.
L'implémentation pour les éléments graphiques GTK est un module appelé GAIL pour « GNOME Accessibility Implementation Library » (bibliothèque d'implémentation d'accessibilité GNOME), qui est chargé dynamiquement au démarrage d'une application GTK. Une fois chargé, les parties de votre application qui utilisent des éléments graphiques GTK standards disposeront d'un niveau d'accessibilité de base, sans avoir à modifier votre application. Si GAIL n'est pas chargé, les éléments graphiques GTK auront une implémentation d'accessibilité qui ne renvoie aucune information, même si c'est nominalement en conformité avec l'API ATK. Les applications qui utilisent des contrôles Bonobo, particulièrement ceux hors processus, chargent aussi la prise en charge d'accessibilité depuis le module libgail-gnome. Le chargement automatique des bibliothèques de prise en charge de l'accessibilité par les applications dans le bureau GNOME dépend de la valeur de la clé gconf « /desktop/gnome/interface/accessibility ». Une valeur booléenne « true » (vrai) active la prise en charge des technologies d'assistance et les applications qui appellent gnome_program_init chargeront automatiquement les bibliothèques appropriées à l'exécution. Les « applications GTK+ pures », par ex. celles qui utilisent GTK+ mais qui ne sont pas liées à libgnome, dépendent de la valeur de la variable d'environnement GTK_MODULES, qui doit être définie à « gail:atk-bridge » pour que la prise en charge des technologies d'assistance soit activée.
La plupart des technologies d'assistance utilisées par d'autres bureaux ont historiquement nécessité de maintenir des modèles hors écran complexes des applications du bureau, basés sur la capture d'évènements du système d'exploitation (SE), l'utilisation de fonctionnalités et d'API non prises en charge par le SE et les applications, ainsi que d'autres techniques non transférables. Cela rend la prise en charge des technologies d'assistance quelque peu « fragile » et très spécifique au SE et aux applications. Par contraste, pour le bureau GNOME, toutes les informations nécessaires aux technologies d'assistance sont fournies par les applications en fonctionnement, via la boîte à outils d'accessibilité de GNOME, vers l'interface de fournisseur de services (Service Provider Interface : SPI) de la boîte à outils indépendante. L'interface SPI fournit les moyens aux technologies d'assistance basées sur UNIX, telles que les lecteurs d'écran et les loupes, d'obtenir les informations d'accessibilités depuis les applications en fonctionnement via une API stable et homogène, et peut éliminer le besoin d'un modèle hors écran dans de nombreux cas. La prise en charge des applications est « intégrée » dans les boîtes à outils via les API appropriées (par exemple, ATK pour la plupart des applications natives en C et l'API Java Accessibility pour les applications Java) et exportée vers l'interface « AT-SPI » commune via le « pont » correspondant (voir le diagramme ci-dessous).
La prise en charge intégrée des technologies d'assistance par GNOME signifie que les applications créées en utilisant les éléments graphiques du magasin GNOME bénéficient de la prise en charge de ces technologies « gratuitement », à condition que l'utilisation des éléments graphiques ne soit pas en conflit avec la prise en charge intégrée.
Un élément graphique gtk+/GNOME est accessible si son utilisation suit les directives générales d'accessibilité décrites dans ce document, et que les interfaces ATK appropriées à son role sont implémentées dans l'interface utilisateur. Les implémentations ATK sont fournies pour les éléments graphiques de la boîte à outils du « magasin » de GNOME (par ex. les éléments graphiques non abandonnés de gtk+ et GNOME) et dans de nombreux cas, les nouveaux éléments graphiques qui sont de simples dérivés d'éléments graphiques GTK+ ou GNOME, héritent également d'une prise en charge d'accessibilité convenable.
Bien que l'accessibilité intégrée de GNOME fournisse des fonctionnalités significatives sans qu'il soit nécessaire de modifier le code de l'application avec du code spécifique à l'accessibilité, les applications peuvent souvent, pour certains éléments graphiques, être améliorées au niveau des descriptions des éléments graphiques fournies par défaut et être personnalisées pour la fonction spécifique de l'élément graphique dans l'application, à l'aide de simples appels aux méthodes ATK dans l'application. Par exemple, dans la plupart des cas, les applications devraient ajouter ou modifier le texte descriptif pour ces éléments graphiques, par un appel à la fonction ATK appropriée, pour que les technologies d'assistance puissent en décrire le but ou l'état à l'utilisateur. Pour plus d'informations, consultez les directives de codage pour la prise en charge de l'accessibilité.
Si votre application utilise des éléments graphiques personnalisés, vous allez sûrement devoir faire un peu de travail pour fournir les propriétés de ces éléments graphiques aux technologies d'assistance. Pour plus d'informations, consultez la section rendre les composants personnalisés accessibles et les exemples d'utilisation de l'API d'accessibilité.
Pour des informations supplémentaires plus détaillées sur GTK/GTK+, consultez le manuel de référence de GTK+, la section GTK du guide de ATK, le tutoriel GTK+ 2.0 hébergé par GNOME et la FAQ GTK+ officielle.