Hur tillgänglighet fungerar i GNOME

Tillgänglighetsverktygslådan ATK (Accessibility Toolkit) beskriver en uppsättning gränssnitt som måste implementeras av grafiska användargränssnittskomponenter för att göra dem tillgängliga. Gränssnitten är oberoende av verktygslåda - implementationer kan skrivas för valfri komponentuppsättning, så som GTK, Motif eller Qt.

Implementationen för GTK-komponenterna är i en modul som kallas GAIL (GNOME Accessibility Implementation Library), vilken är dynamiskt inläsbar vid körtid av ett GTK-program. Då den är inläst kommer de delar av ditt program som använder GTK-standardkomponenter att ha en grundläggande tillgänglighetsnivå, utan att du behöver modifiera ditt program över huvud taget. Om GAIL inte är inläst kommer GTK-komponenter att ha en standardimplementation för tillgänglighet som i praktiken inte returnerar någon information, även om den formellt sett följer ATK-API:t. Program som använder Bonobo-kontroller, speciellt utanför processen, läser även in stödkod för tillgänglighet från modulen libgail-gnome. Huruvida program i GNOME-skrivbordet läser in dessa stödbibliotek för tillgänglighet eller inte beror på värdet av en gconf-nyckel, ”/desktop/gnome/interface/accessibility”; det booleska värdet ”true” (sant) aktiverar stöd för hjälpmedelsteknologier och program som anropar gnome_program_init kommer automatiskt att läsa in lämpliga tillgänglighetsbibliotek vid körtid. ”Rena GTK+-program”, exempelvis de som använder gtk+ men inte länkar till libgnome, förlitar sig på värdet av GTK_MODULES-miljövariabeln, vilken måste sättas till ”gail:atk-bridge” för att aktivera stöd för hjälpmedelsteknologier.

De flesta hjälpmedelsteknologier som körs på andra skrivbord har historiskt funnit det nödvändigt att bibehålla en komplex modell vid sidan om skärmen av skrivbordsprogrammen, baserat på tjuvlyssnande på händelser i operativsystemet, användning av funktioner och API:er som inte har stöd i operativsystem och program, och andra tekniker som är ytterst oporterbara. Detta har gjort stöd för hjälpmedelsteknologier något ”sköra” samt högst beroende på operativsystem och program, till och med beroende på programversion. I kontrast till detta tillhandahålls på GNOME-skrivbordet all information som hjälpmedelsteknologier behöver av de körande programmen, via GNOME:s tillgänglighetsramverk, till ett verktygslådeoberoende tjänsteleverantörsgränssnitt (Service Provider Interface, SPI). SPI tillhandahåller ett sätt för UNIX-baserade hjälpmedelsteknologier, så som skärmläsare och skärmförstorare, att erhålla tillgänglighetsinformation från körande program via ett konsekvent, stabilt API, och kan eliminera behovet av en modell vid sidan om skärmen i många fall. Tillgänglighetsstöd för program är ”inbyggt” för programverktygslådor via verktygslådelämpliga API:er (till exempel, ATK för de flesta inhemska C-program och Java-tillgänglighets-API:t för Java-program), och exporteras till det allmänna ”AT-SPI”-gränssnittet via den relevanta ”bryggan” (se diagram nedan).

Figur 1-1GNOME:s tillgänglighetsarkitektur

GNOME:s inbyggda tillgänglighetsstöd innebär att program som skapats med GNOME:s standardkomponenter får stöd för hjälpmedelsteknologier ”gratis”, under förutsättning att komponenterna inte används på ovanliga sätt som strider mot detta inbyggda stöd.

En gtk+/GNOME-komponent är tillgänglig om dess användning följer de allmänna tillgänglighetsriktlinjerna i resten av detta dokument, och implementerar de ATK-gränssnitt som är lämpliga för dess roll i användargränssnittet. ATK-implementationer tillhandahålls för ”standard”-komponenterna i GNOME-verktygslådan (d.v.s. gtk+- och GNOME-komponenter som inte är föråldrade), och i många fall kommer även nya komponenter som härletts trivialt från befintliga GTK+- eller GNOME-komponenter att ärva lämpligt tillgänglighetsstöd.

Även om GNOME:s inbyggda stöd för tillgänglighet tillhandahåller betydande funktionalitet utan några tillgänglighetsspecifika kodändringar från programmets sida, så kan program ofta förbättra standardbeskrivningarna som tillhandahålls för vissa av komponenterna, och skräddarsy dem efter komponentens specifika syfte i ditt program, via enkla anrop till ATK-metoder i programmet. Till exempel bör program för det mesta lägga till eller ändra textbeskrivningarna för dessa komponenter med lämpligt ATK-funktionsanrop, så att en hjälpmedelsteknologi kan beskriva deras syfte eller tillstånd för användaren. Se Kodriktlinjer för att stödja tillgänglighet för mer information.

Om ditt program använder anpassade komponenter kan du behöva utföra lite arbete för att exponera dessa komponenters egenskaper för hjälpmedelsteknologier. Se Göra anpassade komponenter tillgängliga och Exempel som använder tillgänglighets-API:t för mer information.

För ytterligare, djupgående information om GTK/GTK+, se referenshandboken för GTK+, GTK-avsnittet i ATK-Guiden, GTK+ 2.0-guiden på GNOME:s webbplats och den officiella frågor och svar-sidan för GTK+.