Asistivní technologie a dohledové systémy Dyslexie – čtení pomocí okénka
Michal Náhlík
Software pro podporu výuky čtení pomocí okénka Úvod Software, který nahrazuje fyzickou pomůcku, takzvané okénko, používané při výuce čtení lidmi s dyslexií. Toto okénko se posouvá přes podkladový text a má za úkol zobrazovat pouze určitý úsek a odfiltrovat okolní rušivý text, tak aby se lidé mohli lépe soustředit. Velikost okénka je daná jak úrovní uživatele, tak podkladovým textem, v případě fyzické pomůcky je tedy nutné vlastnit několik verzí této pomůcky. Motivace a funkce aplikace jsou popsány podrobněji v první zprávě.
Podrobnější návrh Z prvotní analýzy vyplynulo několik nutných a několik užitečných funkcí: -
-
-
Jednoduché ovládání – ovládání musí být jednoduché a přehledná aby aplikaci mohli používat uživatelé všech věkových kategorií a nerušila uživatele od čteného textu Možnost nahrát libovolný obsah – pro výuku čtení je nutný obsah, který budou uživatelé chtít číst, na druhou stranu při kontrole úrovně uživatele může být vhodné mít připravené nějaké texty, které odpovídají složitostí úrovni poruchy uživatele Variabilní velikost okénka – velikost okénka musí být nastavitelná podle možností uživatele a přizpůsobovat se čtenému textu Nastavitelná rychlost posunu okénka – posun okénka je nutný přizpůsobit rychlosti čtení daného uživatele Různé úrovně skrývání okolního textu – okolní text nemusí být úplně překryt, různé úrovně viditelnosti okolního textu umožní uživateli snadněji přejít na čtení bez pomoci okénka Další možnosti přizpůsobení o Velikost písma – jelikož aplikaci budou používat lidé různých věkových skupin, s různou závažností poruchy a různou schopností číst, je vhodné mít možnost přizpůsobit velikost písma jejich schopnostem tak aby pro ně čtení bylo příjemné Sběr dat a jejich vyhodnocení – data, která pomohou určit úroveň uživatele a sledovat jeho pokroky o Časový úsek o Celkový počet přečtených znaků o Počet slov/vět přečtený za určitý časový úsek o Čas potřebný k přečtení slova/věty o Průměrná délka slov/vět (vhodné pro určení složitosti čteného textu)
Implementace Hlavní částí programu je textové okno zobrazující čtený text, okénko je vytvářeno tak že se okolnímu textu nastaví barva pozadí, případně její odstín podle zvolené průhlednosti, a v místě okénka je text zobrazen černou barvou. Ovládací tlačítka pak upravují jednotlivé parametry zobrazeného textu (velikost a barva písma) a okénka (velikost a rychlost posunu). Okénkem lze pohybovat pomocí šipek, případně ho lze přesunout na určité místo myší.
Obrázek 1 Aplikace s načteným textem a zobrazeným okénkem
Text je zobrazen v komponentě TextBox, okénko je vytvořeno pomocí třídy TextRange, která umožňuje nastavit určité části textu jeho vlastnosti, začátek a konec okna je definován pomocí TextPointer. Inicializace text boxu probíhá v metodě initTextBox, která nastaví textu základní vlastnosti a načte při inicializaci text z defaultní cesty. Posun okénka je zajištěn metodou textBox_selectionChange, jež obsluhuje událost, která je vyvolaná při pohybu kurzoru v textu. Pohyb pomocí šipek je odchytáván v metodě TextBox_KeyDown. Dialog pro výběr textového souboru je vytvářen metodou loadFile, soubor je poté načten metodou loadText v defaultním kódování nastaveného v proměnné defaultEncoding (aktuálně utf-8). V aplikaci je možné nastavit i defaultní text, nebo cestu ze které má být text nahrán při prvním spuštění úlohy, pomocí proměnných defaultText a defaultPath. Pro inicializaci, zobrazení a pohyb okna slouží metody initWindow, showWindow a moveWindow. V poslední zmiňované metodě dochází k výpočtu pozice nového okénka, ale i textu, který je po jeho posunutí mimo a následnému zobrazení, případně skrytí těchto částí textu. Sběr, vyhodnocení a zobrazení dat je implementováno v metodě printStats, která získá uplynulý čas, začáteční a konečnou pozici kurzoru (zaznamenané při spuštění a ukončení úlohy) a pomocí těchto údajů získá přečtený text a vypočítá některé základní údaje vypsané výše.
Obrázek 2 Zobrazení výsledků
Stisk tlačítek v menu je odchytáván metodou TaskOnUserButton ze které se pak následně volají příslušné metody upravující jednotlivé parametry.
Obrázek 3 Jednotlivé úrovně skrytí okolního textu
Manuál pro obsluhu Obsluha programu je velmi jednoduchá. Pomocí tlačítka Nahrát text lze vybrat soubor, ze kterého má být text načten, po načtení dojde k inicializaci okénka. Poté je možné upravit jednotlivé parametry pomocí ovládacích tlačítek. Následně je možné úlohu spustit a při ukončení zastavit pomocí tlačítka Hotovo, tím se ukončí počítání času a přečtených znaků a zobrazí se výsledky viz Obrázek 2 Zobrazení výsledků. Defaultní chování aplikace lze nastavit pomocí následujících proměnných: defaultText – text zobrazený při spuštění aplikace, nebo při pokusu o načtení neexistujícího souboru defaultPath – cesta ze které se má při spuštění aplikace načíst text defaultEncoding – kódování, které má být použito pro načtení textu ze souboru windowSize – počáteční velikost okna offsetSize – počáteční rychlost posunu okna opacityLevel – počáteční viditelnost textu mimo okénko textBox.FontSize – počáteční velikost písma textBox.SelectionBrush – nastavení zvýraznění (podbarvení) textu v okénku, nyní nastaveno na barvu pozadí
Obrázek 4 Okénko s podbarvením
Možnosti dalšího rozšíření Zde jsou v bodech uvedeny možnosti dalšího rozšíření: -
-
-
-
-
Větší podpora načítaných souborů (různé formáty, kódování) – nyní jsou podporovány pouze textové soubory v kódování UTF-8, kódování lze měnit nyní pouze přímo ve zdrojovém kódu Lepší zvýraznění textu (barevné podbarvení okénka, případně nastavení tučného písma) – mít více možností zvýraznění textu v okénku by mohlo umožnit lépe přizpůsobit aplikaci potřebám konkrétního uživatele Více možností nastavení písma (font, barva písma, barva pozadí, řádkování, …) Automatický pohyb okénka s možností zastavení – zajímavé by mohlo být mít funkci pro automatický pohyb okénka konstantní s možností zastavení Pohyb okénka myší – pohyb šipkami nemusí být pro každého pohodlný, ovládat okénko pomocí myši by proto mohlo být užitečné. V případě využití na tabletu by pak docházelo k posunu okénka podle dotyku Statické okénko – mít možnost statického okénka, to znamená, že okénko by zůstávalo na středu obrazovky a hýbal by se podkladový text. Přeskakování okénka přes řádky může být vcelku složité sledovat. Zvýraznění části slov, na které se klade při čtení důraz – zajímavé by mohlo být zvýraznění části slov (ať už písmene nebo slabiky) na které se při čtení klade důraz, to by mohlo pomoci rozpoznat a třeba i pochopit význam slov rychleji než při běžném čtení. Toto je ale jen takový nápad, jehož účinnost by bylo potřeba nejdříve ověřit. Vytvoření okna pro nastavení – již nyní je v panelu vcelku hodně ovládacích tlačítek, bylo by vhodné je nějak lépe organizovat a například nastavení týkající se textu (velikost písma, případně další), která se tak často nemění, by mohla být v samostatném okně dostupném přes tlačítko Nastavení.