Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

[MCAD.16] Implementare le caratteristiche di Accesso Facilitato

Traduzione letterale per "Implement accessibility features", tratto direttamente dalla Study Guide di Lorenzo. Cosa significa? Beh, fate una prova: prendete un'applicazione che avete scritto voi, trovate l'icona del file EXE e selezionatela. No, non fate doppio-click, selezionatela e basta! Adesso bendatevi gli occhi, per bene, cercate il tasto Invio/Enter sulla tastiera e premetelo: se la vostra applicazione funziona correttamente, l'avete appena aperta. Fin qua è facile, no?

Ora, provate ad usarla senza vedere un accidenti. Molte persone, compreso (una volta) il buon vecchio nonno Costantino, vivono quotidianamente così. Come ve la cavate voi??? Maluccio, non è vero? Possiamo migliorare le cose? Beh, un pochino (ma molto poco), io ho fatto qualche esperimento e ve lo riporto.

Siccome mi stanno a cuore i problemi dei non-vedenti, vediamo di migliorare la fruibilità e la user-friendilabilità (come mi piace l'italiano  ), del nostro software a questa categoria di persone. Di quali strumenti abbiamo bisogno? Cosa dobbiamo fare? Beh, innanzitutto, sappiate che Windows contiene un tool che è in grado di leggere (questa è una parola grossa) tutto il testo che gli arriva sotto il naso: pagine web, per esempio. Oppure, pronuncia le lettere man mano che le digitate, e così via.

Questo tool, che io non avevo mai visto e l'ho scoperto oggi, si chiama Narrator, e lo potete trovare in:
Start --> Programs --> Accessories --> Accessibility --> Narrator
Come? Avete ancora la benda sugli occhi??? Beh, fate così, allora:
CTRL+ESC --> R --> scrivete "narrator" --> premete Invio

Ho provato ad usare Windows con il Narrator aperto. Francamente, sono stato un po' disorientato: sarà l'inglese letto della voce sintetizzata, sarà qualcos'altro, ma non ho afferrato la logica. Provate ad aprire Word mantenendo aperto il Narrator: sembra che prima legga la barra del titolo, poi legga tutti i menù (File, Edit, View, etc.), poi dice "Toolbar" una decina di volte e così via. Il testo non lo legge mai, si ferma prima.....Provate poi ad aprire Notepad, scrivete lentamente: il Narrator legge ogni singolo tasto che premete.

Come si traduce sotto questo in .NET?
Possiamo fare in modo che il Narrator legga ad alta voce qualcosa, per facilitare l'utilizzo a chi non sta vedendo nulla? Vediamo un po'. La classe Control di .NET espone alcune property proprio a questo scopo. Tutte le classi che ereditano da Control, ovviamente, espongono tali proprietà. Ok, benissimo, cosa fanno? A cosa servono?

Per capirlo, vediamo di usare la nostra applicazione tenendo aperto il Narrator, giusto per capire come si comporta. Si può fare sia dall'IDE, che direttamente dall'eseguibile, dipende da voi. Usiamo il TAB per spostarci da un controllo all'altro sulla nostra WF: quando raggiungiamo il button btnCalculate, cosa succede? Il Narrator parla e dice:

"Calcola. Push Button to press. Use Space Bar."

Ovviamente la stringa Calcola è letta all'inglese, ma non fa nulla. Quello che ci interessa è la logica. Narrator leggere la property Text del Button , poi ci aggiunge del suo, capendo che è un pulsante e via dicendo. E' così, secondo voi?  FALSO!!!! NET espone la prima property interessante, AccessibleRole, che indica il tipo di oggetto su cui ci troviamo, e che Narrator userà per spiegare all'utente come interagire: con il Button ci dice di usare la Space Bar, per esempio. Provate ad aprire il sorgente, e date un'occhiata alla property AccessibleRole: è possibile impostare il tipo di oggetto da un vasto elenco: CheckButton, ComboBox, List, MenuBar, Dialog, etc. etc. Provate a cambiare valore, ricompilare e ad eseguire l'applicazione come prima. Questa volta il Narrator dirà una cosa diversa, in base al tipo di AccessibleRole impostato. In questo modo, l'utente non-vedente sa come comportarsi quando il focus è su un oggetto ben specifico: tipo di oggetto quale tasto usare, e così via.

Questo nel caso in cui la property Text del Control sia valorizzata. Cosa succede nel caso in cui la Text sia string.Empty? Il Narrator leggere la stringa impostata nella seconda property interessante, ovvero AccessibleName. Provate ad aggiungere un nuovo Button sulla WF, lasciate la property Text vuota e scrivete qualcosa, tipo "This is a empty button on this form!" in AccessibleRole. Ricompilate, eseguite, usate il TAB fino a raggiungere il nuovo Button che avete appena aggiunto. Questa volta il Narrator dirà:

"This is a empty button on this form! Push Button to press. Use Space Bar."

Adesso il Narrator ha usato AccessibleName invece di Text. Sintatticamente, quindi, possiamo indicare questo funzionamento in questo modo:

{ Control.AccessibleName | Control.Text } + Control.AccessibleRole + Narrator.Other

In realtà, come si vede, il controllo su quello che Narrator dice l'abbiamo solo in parte: Narrator.Other è un "qualcosa" che aggiunge lui (in attesa di essere smentito, ovviamente). Esiste anche la property AccessibleDescription, ma la sto ancora sperimentando...

powered by IMHO 1.2

Print | posted on giovedì 21 luglio 2005 19:15 | Filed Under [ MCAD ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET