Transkripce Braillova písma
Autor:
Martin Vavrečka
Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace
Čs. exilu 669, Ostrava-Poruba, 708 00
Konzultant:
Mgr. Rostislav Fojtík, PhD.
Anotace
Tato práce je zaměřena na shrnutí informací o existujícím hardwaru a softwaru pro zrakově
postižené osoby, který umožňuje a zjednodušuje práci s počítačem. Následné porovnání
softwaru a vývoj nového, na základě specifikace požadavků ředitele Tyflocentra Ostrava, je
také součástí.
Klíčová slova
Hardware, software, tiskárna, C#, Braillovo písmo, Tyflocentrum Ostrava, NVDA
2
Obsah
1.
2.
3.
4.
Úvod ................................................................................................................................... 4
1.1.
Cíl ............................................................................................................................... 4
1.2.
Analýza problému ...................................................................................................... 4
1.3.
Komu je software určen ............................................................................................. 4
1.4.
Braillovo písmo .......................................................................................................... 4
1.5.
Existující hardware..................................................................................................... 5
1.6.
Existující software – simulátory................................................................................. 5
Analýza a specifikace požadavků....................................................................................... 7
2.1.
Grafické uživatelské rozhraní..................................................................................... 7
2.2.
Funkce ........................................................................................................................ 7
2.3.
Použité technologie, postupy a jazyky ....................................................................... 8
Návrh aplikace.................................................................................................................... 9
3.1.
Grafické uživatelské rozhraní..................................................................................... 9
3.2.
Třídy ......................................................................................................................... 10
Implementace ................................................................................................................... 12
4.1.
Třídy ......................................................................................................................... 12
5.
Testování, úpravy, nasazení ............................................................................................. 15
6.
Zhodnocení, interakce s uživateli..................................................................................... 17
7.
Závěr................................................................................................................................. 18
8.
Zdroje, citace .................................................................................................................... 19
3
1. Úvod
1.1. Cíl
Cílem této práce je především prozkoumat existující možnosti a technologie, které umožňují
přepis Braillova písma do počítače a následný tisk vytvořeného textu. Snaží se také porovnat
existující software, který simuluje Braillskou klávesnici na klasické, a zjistit jejich přednosti a
nedostatky. Na základě těchto poznatků je pak cílem vyvinout novou aplikaci, umožňující
taktéž přepis Braillova písma.
1.2. Analýza problému
Přepis Braillova písmo do digitální formy je důležitý v mnoha aspektech. Používá se jak pro
vytváření nových dokumentů, tak pro přepis existujících dokumentů do digitální formy a
jejich následný tisk. Toto je tedy jediná cesta jak udělat více kopií jednoho dokumentu.
Samozřejmě zde existuje možnost psát na Pichtově psacím stroji, který vyrazí body přímo do
papíru, tímto tedy odpadá počítač jako prostředník. Avšak přepis, například knihy, touto
formou by byl značně zdlouhavý. [1]
Zrakově postižený člověk používá pro práci s počítačem především klávesnici, hlasový
výstup a braillský řádek. Hlasový výstup a braillský řádek umožňuje zvukový i hmatový
výstup toho, co se na počítači děje.
1.3. Komu je software určen
Tato aplikace je určena především pro slabozraké a nevidomé osoby, které potřebují přepsat
jakýkoli text do počítače a následně jej vytisknout ve formě Braillova písma. Aplikaci však
mohou používat i uživatelé, kteří potřebují zpracovat či upravit dokument v Braillově písmu.
Celá aplikace vznikla na popud pana ředitele Tyflocentra v Ostravě, který se v souvislosti
s mou předešlou prací zmínil, že software takovéhoto typu by se jim hodil a že neexistuje
alternativa, která by jim vyhovovala. Tuto aplikaci by ocenili především nevidomí muzikanti,
kteří hledají způsob jak zapsat notový zápis v Braillově písmu. [2]
1.4. Braillovo písmo
Braillovo písmo je typ písma používaný nevidomými. Je specifické a univerzální po celém
světě. Způsob zápisu je ve formě vyražených bodů (polokoulí) do tvrdého papíru v maticích
o dvou sloupcích a třech řádcích. Tato tabulka umožňuje zápis až 64 znaků (26), což pokrývá
celou abecedu i s diakritikou, čísly a prefixy. [3]
Prefixy jsou speciální kombinace, které jsou vždy před souborem znaků a udávají, o jaký typ
znaků se jedná. Existují prefixy pro velké písmeno, řecké písmeno nebo číslo. Tyto speciální
znaky jsou zavedeny pro úsporu kombinací a snadnou zapamatovatelnost. Například matice
symbolizující písmeno A také znamená číslici 1.
Existují dvě formy písma: osmibodové a šestibodové. Osmibodové znaky se používají
především pro počítače. Braillské řádky většinou podporují osmibodové matice, kdežto
veškeré texty, knihy a nápisy jsou v základní šestibodové matici.
4
Každý jazyk má však své speciální znaky, a proto existují převodní tabulky, které obsahují
veškeré potřebné znaky a k nim příslušné matice. Například české tabulky se liší od těch
slovenských již v 7 základních znacích. [4]
1.5. Existující hardware
Klávesnice
Obrázek 1.5 a) Pichtův psací stroj [1]
Jak jsem již zmínil, Pichtův psací stroj umožňuje zápis
přímo na papír pomocí vyrážení znaků do papíru stiskem
klapek. Avšak zápis Braillova písma do počítače je
ošemetnější. Některé Braillské řádky sice umí zápis
přímo braillských znaků, většinou se však zápis děje
pomocí klasické klávesnice a speciálního programu. [1]
Braillské řádky jsou obdobou klávesnice, ale fungují
především jako výstupní zařízení. Zobrazují se na nich
napsané znaky nebo potřebné hlášky. Cena těchto
zařízení je značná. Nejlevnější druh lze koupit zhruba za
80 000 Kč. Braillské řádky se liší v počtu zobrazovaných
znaků. Nejmenší počet je 20 znaků, nejčastější jsou však
se 40 znaky. [5]
Obrázek 1.5 b) Braillský řádek [5]
Tiskárny
Tiskárny Braillova písma se značně liší od tiskáren
klasických. Jsou velmi hlučné a velmi prostorné. Většina
tiskáren umí tisknout pouze šestibodové matice, ty
nejnovější modely umí i osmibodové. [6]
1.6. Existující software – simulátory
Zápis znaků se tedy děje pomocí klasické klávesnice a speciálního softwaru, který přímo
nahrazuje editor, nebo pouze konvertuje existující text do Braillova písma.
Existují dva způsoby, jak lze znak zadat. Při prvním způsobu se mačkají klávesy jako
v normálním editoru, zápis se nijak neliší od standardního psaní. Po stisku znaku se však znak
převede do braillu a zapíše se v této formě. Na obrazovce tedy můžeme vidět přímo danou
matici, která je přiřazena stisknutému znaku. Druhá možnost je zápis jednotlivých matic.
Rozpoložení prstů na klávesnici znázorňuje toto schéma:
5
Obrázek 1.6 a)
Rozložení prstů na
klávesnici [17]
Takto je pokryto 8 znaků, což je dostačující jak pro zápis šestibodových, tak osmibodových
matic. Prsty potom odpovídají bodům v matici dle následujícího schématu:
Obrázek 1.6 b) Body
odpovídající prstům
[17]
Jednotlivé body jsou i očíslovány. Z důvodu častějšího používání šestibodové matice se číslují
poslední dva dodatečné body jinak. [2]
Samotné zadávání znaků se provádí současným stisknutím příslušných kláves. Tento způsob
zápisu má dle mého názoru vysokou chybovost, obzvláště pro začínající uživatele. Jelikož se
musí stisknout všechny klávesy ve stejnou chvíli, může uživatel některou nestisknout úplně,
nebo pustit nějakou dříve. Prozkoumal jsem tedy, jaké existují Braill editory a jaký způsob
zápisu umožňují.
6
2. Analýza a specifikace požadavků
Abych vůbec zjistil, jaká má aplikace být, jaké funkce by měla obsahovat, navštívil jsem
Tyflocentrum v Ostravě. Program jako takový by měl primárně sloužit nevidomým
uživatelům pro zápis Braillova písma a jeho následný tisk. Toto je jeden z hlavních důvodů,
proč byla tato aplikace vyvíjena.
2.1. Grafické uživatelské rozhraní
Jelikož budou aplikaci využívat převážně nevidomí uživatelé, samotné grafické rozhraní
programu nehraje až tak velkou roli. Rozhodl jsem se však pokrýt co nejširší spektrum
uživatelů, a proto by aplikace tohoto stylu měly být na celou obrazovku s výrazně
rozlišitelnými ovládacími prvky a měly by podporovat hlasový výstup. Z tohoto důvodu jsem
se rozhodl vynechat z aplikace stavovou lištu s tlačítky zavřít, minimalizovat a obnovit. Tato
tlačítka nejsou potřeba, jelikož většina nevidomých uzavírá aplikace klávesovou zkratkou
Alt+F4. Tlačítka jako minimalizovat a obnovit nejsou potřeba z důvodu běhu aplikace ve
fullscreen modu.
Jako výchozí barvy by měly být nastaveny barvy systému, tím pádem není ovlivněno
speciální nastavení, které je použito na celý systém Windows. Typickým příkladem je
barevný kontrast celého systému. Přesto jsem se rozhodl implementovat několik barevných
schémat, takže si uživatel může nastavit barvy, které mu nejlépe vyhovují. Měl by být
zachován co největší kontrast pro jasnou čitelnost a zřetelnost. Zde jsem se poradil
s Tyflocentrem a Tyfloservisem, které barvy je vhodné použít. Byly mi doporučeny tyto:
černá, bílá, modrá a žlutá. Jedné z nejvíce kontrastních barev, červené, bych se měl vyvarovat,
jelikož působí na sítnici oka velmi agresivně a oko není schopno na této barvě udržet
pozornost. Mezi časté zrakové choroby patří Daltonismus (barvoslepost) a obvykle dochází ke
splývání červené a zelené barvy – člověk potom vnímá obě barvy jako šedou. [2][8]
Vzhledem k možnosti používání i zdravě vidícími lidmi je potřeba udělat grafické uživatelské
rozhraní co možná nejobecnější a nejuniverzálnější. Důležitým prvkem každé aplikace je
kurzor. Rozhodl jsem se použít kurzor z mé předešlé aplikace pro zrakově postižené.
Z důvodu modré barvy kurzoru jsem musel vytvořit druhý kurzor, jelikož při použití modrého
schématu se kurzor doslova ztratil na modrém pozadí.
Obrázek 2.1 a) Modrý kurzor
Obrázek 2.1 b) Bílo-žlutý kurzor
2.2. Funkce
Aplikace by měla být schopna zapisovat veškeré kombinace Braillova písma a následně jej
tisknout. Celý program by se tedy měl chovat jako klasický textový editor s tím rozdílem, že
znaky se zadávají odlišným způsobem.
Při první schůzce s panem ředitelem jsme rozebírali základní funkcionalitu aplikace. Hlavním
bodem bylo zadávání znaků a samotný zápis. Po diskuzi s mým lektorem jsem navrhl jako
7
řešení postupné zadávání bodů matice a následné potvrzení celé matice mezerníkem. V praxi
to tedy vypadalo tak, že uživatel mohl buď naráz, nebo postupně mačkat klávesy příslušící
daným bodům. Jakmile dokončil danou matici, potvrdil ji mezerníkem a uložila se. Takto
jsem eliminoval jakoukoli chybovost, protože uživatel si je jist, které klávesy zmáčkl, a
nemusí se soustředit na to, aby stiskl všechny ve stejnou dobu.
Dalším důležitým bodem byl zvukový a hmatový výstup. Aplikace musí podporovat hlasový
výstup a Braillský řádek. Jinak by se nevidomý vůbec nedozvěděl, co zrovna zapsal.
Mezi poslední hlavní funkcionality patří samotný tisk dokumentu. Bez možnosti tisku by
aplikace neměla smysl. Sám však tiskárnu nevlastním, proto jsem veškeré funkce týkající se
tisku testoval v Tyflocentru, kde byla k dispozici.
2.3. Použité technologie, postupy a jazyky
Po zpracování požadavků jsem se musel rozhodnout, jakou technologii použiji k vývoji
samotného softwaru. Rozhodl jsem se pro programovací jazyk C# z platformy .NET. Jako
vývojové prostředí jsem použil Microsoft Visual Studio 2010 a Microsoft Expression
Blend 2. Blend jsem použil především pro grafický návrh aplikace, jelikož integrovaný
návrhář ve Visual Studiu je nešikovný při práci s více vrstvami na sobě.
Celá aplikace je vytvářena pomocí WPF technologie. Windows Presentation Foundation
používá značkovací jazyk XAML pro tvorbu grafického uživatelského rozhraní. Odděluje tak
grafický návrh od samotné funkčnosti aplikace. WPF je součástí platformy .NET Frameworku
již od verze 3.0. [9]
Pro návrh UML diagramů jsem využil integrovaného nástroje ve Visual Studiu a pro tvorbu
ikony jsem sáhl po klasickém Malování a IrfanView.
Při programování samotných tříd a algoritmů jsem využil také návrhové vzory, které značně
ulehčují práci programátora při řešení specifických problémů. O použitých vzorech se zmíním
při rozboru jednotlivých tříd.
8
3. Návrh aplikace
Celý průběh vývoje mé aplikace by se dal přirovnat k jedné z agilních metodik, a to
spirálovému modelu. Tato metodika je založena na velmi časté komunikaci s koncovým
uživatelem či zadavatelem. Tento postup se dá perfektně využít v této situaci, jelikož vyvíjím
aplikaci pro specifickou skupinu uživatelů a já jako programátor se nemohu úplně vcítit do
role uživatele, abych našel všechny potřeby a nedostatky aplikace. Proto jsem se rozhodl
vyvinout jistou část aplikace, zkonzultovat ji a otestovat, upravit dle požadavků a pokračovat
vývojem další části programu. Takto vznikala spousta verzí programu a zpětně lze zjistit, jak
se aplikace zlepšovala a upravovala. [10]
3.1. Grafické uživatelské rozhraní
Když jsem se zamýšlel nad grafickým rozložením ovládacích prvků na formuláři, váhal jsem
mezi menu v horní liště nebo v postranní liště. Vzhledem k úspoře místa a celkovému vzhledu
jsem se rozhodl umístit menu doleva ve formě klasických tlačítek. V pravé části se potom
nacházely dvě tabulky pro poslední dva stisknuté znaky a pole pro všechny předešlé stisknuté
znaky. Schéma aplikace tedy vypadalo zhruba takto:
Obrázek 3.1 a) První grafický návrh
Ostatní části aplikace, např. okno uložení, nastavení a jiné, se zobrazovaly jako nové
„záložky“ (gridy) vedle menu. Menu tedy bylo vždy vidět, pouze pravá část se měnila dle
potřeby.
V aplikaci chybí stavová lišta, musel jsem tedy přidat vlastní tlačítko pro zavření aplikace. To
však v horním pravém rohu značně zabíralo místo, proto jsem jej zařadil do menu. Je tedy na
uživateli, jak aplikaci uzavře.
Vzhledem k relativně malé oblasti pro zobrazování napsaných znaků jsem musel vymyslet
způsob, jakým by bylo možno vidět celý dokument. Rozhodl jsem se pro další „kartu“
s názvem Náhled, která by se měla chovat identicky jako základní formulář, s tím rozdílem,
že zde nebudou dva velké gridy pro zobrazení posledních dvou znaků. Uživatel však bude mít
pořád možnost dokument editovat a vytvářet nové znaky. Jedná se tedy o jakýsi komfortnější
mód pro rozsáhlejší dokumenty, jelikož základní formulář dokáže zobrazit maximálně 3 řádky
dokumentu, aniž by znaky ztratily svou čitelnost.
9
3.2. Třídy
Po návrhu grafiky nadešel čas pro návrh hierarchie tříd a jejich vztahů. Pro ujasnění všech
funkčností jsem si nejprve vytvořil usecase diagram, který znázorňuje všechny role v aplikaci
a co která role umí. V tomto případě se jedná pouze o jednu roli, uživatele, protože aplikace
nepodporuje tvorbu profilů uživatelů. Dalo by se uvažovat o roli jakéhosi administrátora,
který by aplikaci nastavil a předal uživateli připravenou k editaci, ale pro zjednodušení jsem
spojil tyto dvě role do jedné, a to do role uživatele. [11]
Obrázek 3.2 a) Use
Case diagram
Funkčnost aplikace by se tedy dala rozdělit do 6 vrstev: vstup, grafický výstup, zvukový
výstup, braillský výstup, tiskový výstup a nastavení aplikace. Veškeré vztahy mezi
knihovnami znázorňuje následující classdiagram. Pro větší přehlednost jsem vynechal některé
funkce a vlastnosti tříd.
10
Obrázek 3.2 b) Class diagram
4. Implementace
Prvotní návrh grafického uživatelského rozhraní jsem již zmínil v předešlé kapitole. Veškerou
grafiku jsem tvořil v Blendu 2 a poté zkopíroval XAML kód do projektu ve Visual Studiu.
4.1. Třídy
Veškerá hierarchie tříd znázorněná na classdiagramu se vyvíjela postupně od třídy
MainWindow, kde je přístup k prvkům z formuláře.
Vstup, VystupGraficky
Tyto dvě knihovny jsou klíčové, jelikož zajišťují většinu funkcionalit aplikace, a to zápis
znaků a jejich grafické zobrazení. Ve třídě Vstup je definován ArrayList, do kterého se
ukládají veškeré matice. Obsah ArrayListu se automaticky ukládá do pomocného textového
souboru a na žádost uživatele se uloží všechny matice do textového souboru s koncovkou
*.brs (Braille Script).
Z diagramu si lze všimnout, že se Vstup odkazuje na VystupGraficky a naopak. Obě z těchto
knihoven potřebují referenci na tu druhou a to byl problém. Jelikož se objekty alokovaly
postupně, nebylo možno si uchovat v každém objektu referenci na objekt druhý. Pro vyřešení
toho problému jsem použil techniku takzvané přepravky. Vytvořil jsem si samostatný objekt,
kterému jsem deklaroval veřejnou referenci na konkrétní objekt. Celou knihovnu jsem
definoval jako generickou, takže se dá využít univerzálně pro jakákoli data. Touto přepravkou
jsem docílil toho, že mám vždy globálně přístupnou referenci na objekt Vstup i
VystupGraficky. Tedy hned po alokování těchto objektů se reference na ně uloží do přepravky
a jsou všude přístupné. [12]
Ukázka kódu z generické třídy Prepravka:
// ziskani instance
public static Prepravka<Typ1> Instance
{
get
{// vytvoreni s nejakou novou instanci daneho typu pokud neexistuje
if (instance == null)
instance = new Prepravka<Typ1>(PrepravkaCreator.instanceT1);
return instance;
}
}
Třída VystupGraficky je potomkem interfacu Vystup, který jasně předepisuje, jaké metody by
měl objekt umět. Jedná se o základní navigaci v jakémkoli jiném editoru, tedy o pohyb
navigačních šipek, Page Down/Up, Home, End, ale také klávesové zkratky jako Ctrl+Home či
Ctrl+šipka. Tyto všechny metody pro navigaci v editoru jsem musel doprogramovat, jelikož
se znaky nevykreslují do textového pole, nýbrž na mřížky jako matice.
S touto knihovnou je spjata třída Grafika, která zajišťuje obecné metody pro vykreslování
matic či zobrazování a schovávání gridů. Veškeré metody jsou deklarované jako statické a
veřejné, není tedy nutno vytvářet samotný objekt při nutnosti použití některých z metod.
12
Soubor, Nastaveni
Třída Soubor má opět všechny metody veřejné a statické. Obsahuje funkce pro práci se
soubory a případné ošetření chyby. Volí se z ní například ukládání a nahrávání dokumentu
nebo souboru s nastavením.
Veškeré nastavení je externě uloženo v XML souboru a při spuštění programu se načítá a
aplikuje na ovládací prvky. Uživatel může sám měnit nastavení přímo v programu, není nutno
zasahovat do souboru ručně. Zvolil jsem automatické ukládání nastavení při jakékoli změně
hodnot. Takto se uživatel nemusí starat o stisk dalšího tlačítka Uložit. Při klikání na tlačítko
„Změň barvy“ se vyvolá událost a ihned se mění barvy ovládacích prvků. Na stejném
principu pracuje tlačítko „Zapnout/Vypnout zvuky“. Na formuláři si tedy může uživatel
nastavit barvy, zvuky, typ zvukového výstupu, počet znaků na řádku a mód zadávání znaků.
Jelikož je nastavení univerzální pro celou aplikaci, není potřeba, aby vznikalo více instancí
této třídy, proto jsem aplikoval návrhový vzor Singleton (Jedináček). [13]
Pismo
Tato knihovna zajišťuje veškerý překlad znaků na matice a naopak. Jsou zde dvě hlavní
metody, které vrací buď význam dané matici, nebo matici danému významu. Při tvorbě této
knihovny jsem narazil na zásadní problém. V jakém pořadí ukládat významy matic? Zapátral
jsem na internetu a našel oficiální standard a přesně určené pořadí celé Braillovy abecedy.
Standard obsahuje prvních 64 znaků matice pouze s šesti body a zbytek jsou osmibodové
matice. Tento standard jsem využil k jasnému určení, který význam patří které matici.
Vytvořil jsem si tedy textový soubor „czech.txt“, ve kterém jsou definovány právě významy
daných matic. S přístupem ke standardu si tedy může sám uživatel definovat vlastní významy
v textovém souboru. Jelikož některé matice mají více významů, jako například tabulka pro
„a“, musel jsem významy od sebe oddělit. V úvahu připadaly tři možnosti. Oddělit je čárkou
jsem ihned zavrhl, jelikož význam může být právě čárka. Ze stejného důvodu jsem nepoužil
uvozovky kolem každého významu. Zbývala tedy poslední možnost, a to speciální kombinace
znaků, která bude stěží znamenat význam. Rozhodl jsem se pro dvojici znaků $ a &. [14]
Dále třída obsahuje pomocné metody pro porovnání dvou matic, převod šestibodové na
osmibodovou a naopak, funkce pro určení, zda je předaná matice celá vyplněna, či zcela
prázdná.
Stejně jako třída Nastaveni, je tato knihovna univerzální pro celý projekt, proto jsem opět
využil vzoru Singleton. [13]
Zvuk, NVDA Client
Třída Zvuk obsahuje dvě jednoduché metody pro převod matice na význam a předání
významu dále NVDA Clientovi. Jedna metoda zpracovává matici, pokud má přidělený
význam, a druhá, pokud jej nemá. Pokud jej nemá, přečte se, jaké body byly stisknuty. Pokud
tedy uživatel zadá kombinaci „DKL“ a příslušná matice nemá v souboru czech.txt přidělený
význam, přečte se text: „Body 2 5 6“. Tento způsob je nutný, jelikož některé matice nemají
přiřazený význam, nebo jej není NVDA schopen přečíst. Zpracovaný text k přečtení se předá
dále NVDA Clientovi.
S knihovnou Zvuk přišel zásadní problém. Jak nechávat přečíst veškeré zprávy a zvukové
výstupy? Z předešlé zkušenosti jsem nahrávání vlastního hlasu ihned zamítnul, a proto mi
zbyla možnost hlasového syntetizátoru. Jako hlasového klienta jsem využil freeware program
NVDA, který je hojně používaný a je open-source. K tomuto programu je také vydána DLL
knihovna, která funguje jako prostředník mezi programátorem a samotným programem.
13
Obsahuje metody pro čtení daného textu, zastavení čtení, výstup na Braillský řádek a zjištění,
zda je NVDA zapnut. [15]
Vytvořil jsem si tedy pomocnou třídu se statickými metodami:
[DllImport(„nvdaControllerClient32.dll“)]
public static extern void nvdaController_speakText(byte[] text);
Každé metodě, které se předává textový řetězec, je nutno místo toho předat pole bytů, které
reprezentuje daný řetězec v unicode. Každému znaku náleží dva byty.
Vytvořil jsem si tedy jakéhosi klienta, který si sám zpracuje textový řetězec, co chci přečíst, a
pošle ho NVDA k přečtení. Z nepochopitelného důvodu vrací metoda pro zjištění, zda NVDA
běží, nebo ne, vždy opačnou hodnotu, než je předpokládána. Když se tedy zeptám klienta, zda
NVDA běží, i když neběží, odpoví, že ano. Pravděpodobně se jedná o chybu v DLL
knihovně.
Tohoto klienta využívám také pro posílání informací na Braillský řádek. Jelikož se předává
text, tedy význam matice, a ten není vždy k dispozici, musel jsem tuto cestu obejít. Nechávám
tedy posílat přímo znaky reprezentující danou matici v unicode. Proto potřebuji externí
textový soubor, ve kterém jsou nadefinovány hodnoty, jaké mají příslušné matice. Pořadí opět
souhlasí se standardem.
Tisk
Tato knihovna obsahuje algoritmy pro převod dokumentu do srozumitelné formy pro tiskárnu.
Spustí výchozí dialog pro výběr tiskárny a následně pošle data k tisku. Text se převádí
stejným způsobem jako při posílání na Braillský řádek.
14
5. Testování, úpravy, nasazení
Po vytvoření první verze jsem se vydal do Tyflocentra, abych aplikaci otestoval a zeptal se na
další problémy, které se vyskytly během vývoje.
Grafický návrh aplikace byl ve své podstatě zamítnut. Menu ve formě tlačítek bylo zmatené a
v celku neobvyklé pro uživatele. Jejich poloha taktéž. Proto mi byla dána rada, abych celé
menu udělal klasickým způsobem na horní část aplikace a zamezil vstupu do něj pomocí
tabulátoru. Tento krok znamenal, že uživatel se dostal do menu pouze pomocí myši nebo
stisku tlačítka Alt a následně se v menu mohl pohybovat šipkami nebo tabulátorem. [16]
Úpravou grafického návrhu a přesunu menu do horní části aplikace vznikla spousta místa pod
menu. To mělo za následek rozšíření počtu vykreslovaných znaků. Všechny stisknuté znaky
se stále zobrazovaly jako gridy pouze ve třech řádcích a pod tímto polem se nacházejí
4 posledně stisknuté znaky. Zvolil jsem efekt jakýchsi kolejí. Tedy právě napsaný znak je
největší a nejvíce zvýrazněn, předešlé se postupně zmenšují.
Vstup znaků byl vcelku pomalý a matoucí. Uživatel měl sice čas na stisk znaku, ale musel jej
vždy potvrzovat mezerníkem. Tento způsob mi původně přišel jako velmi dobrý nápad,
jelikož jsem se tím vyhnul nejasnému vstupu a stresu uživatele. Šlo vidět, že pan ředitel již
někdy pracoval s podobným softwarem a díky velmi dobré znalosti Braillova písma jej tento
způsob vstupu značně zpomaloval. Proto jsem se rozhodl zanést do programu jakési dva
módy vstupu. Můj původní – potvrzování mezerníkem – a nový způsob, který byl použit ve
všech testovaných softwarech, a to stisknutí kláves naráz, nebo jejich postupné přimačkávání.
Tímto si uživatel může vybrat, jakým stylem bude programu zadávat znaky. Pokud tedy již
někdy pracoval s obdobným programem, nemusí se učit novému způsobu. Druhý způsob
pomocí mezerníku mohou však využít nezkušení uživatelé, kteří si ještě nejsou jisti svou
znalostí Braillova písma, nebo se teprve učí s touto aplikací. [2]
Zvukový výstup mě zaskočil, jelikož jsem svou aplikaci testoval na svém notebooku
s Windows 7 a pan ředitel měl Windows XP. Zarazila mě odlišnost hlasových výstupů při
stejné verzi programu. Například čtení hlášek či samotných znaků. Některé interpunkční
znaménka vůbec program nečetl, vznikaly tedy „hluché znaky“, při nichž se nečetlo vůbec nic
a uživatel nevěděl, že tam vůbec něco je. Rozhodl jsem se tedy vymazat z textového souboru
czech.txt ty významy, které dělaly problémy při čtení. Zachoval jsem pouze základní znaky a
čísla. Zbytek matic se tedy čte způsobem čtení stisknutých bodů, který jsem rozebral
v rozboru tříd.
Při mazání znaků pomocí Backspace by se měl číst právě smazaný znaky a při mazání
Deletem znak, který následuje po smazaném. Takto se chová klasický textový editor, proto
bylo nutno zanést tuto funkcionalitu i do mého editoru.
Další funkčnost týkající se hlasového výstupu byla přerušení čtení. Protože po stisku
klávesové zkratky Ctrl+Home by se měl začít číst celý dokument, což může být poněkud
zdlouhavé, je potřeba hlasový výstup nějak přerušit. Výchozím tlačítkem pro NVDA je Ctrl,
jak levý, tak pravý, proto stačilo vytvořit událost na stisk Ctrl a v ní poslat zprávu NVDA
Clientovi, ať přeruší čtení.
Při ukládání a nahrávání souboru jsem váhal, zda použít svůj vlastní dialog, či využít výchozí
dialogy. Hlavní negativum u použití výchozích dialogů je malá velikost dialogového okna. Na
druhou stranu je zde zakomponován hlasový výstup, čímž by si uživatel nemusel zvykat na
nový druh okna. Pan ředitel mi doporučil využít pouze výchozích dialogů, já jsem se však
rozhodnul pro obě varianty. Na formuláři pro uložení je tedy textové pole pro název souboru,
15
ale i tlačítko pro vyvolání výchozího dialogu, takže si uživatel může uložit svůj soubor,
kdekoliv potřebuje. Stejné řešení jsem aplikoval na nahrávání souboru.
Dále pan ředitel zjistil, že zhruba po 5 sekundách zmizí všechen text zobrazený na braillském
řádku. Pravděpodobně je to chyba NVDA, protože v mé aplikaci není nastaven žádný
časovač, jenž by prováděl něco automaticky. [2]
Se všemi těmito připomínkami a problémy jsem aplikaci postupně upravoval dle požadavků a
zkušeností.
16
6. Zhodnocení, interakce s uživateli
Dle mého názoru se mi podařilo vyvinout kvalitní aplikaci pro editaci a tvorbu braill
dokumentů. Celá aplikace byla postavena zejména na požadavcích a zkušenostech uživatelů,
takže si ji vytvářeli sami pro sebe. Aplikaci hodlám rozeslat mezi širší spektrum uživatelů a
po určité době se pokusit udělat jakýsi průzkum, jak se s aplikací pracuje, jaké má chyby a
zda je potřeba něco upravit či doladit. K tomuto malému průzkumu jsem si vytvořil dotazník,
který zjišťuje zkušenosti uživatele a hodnotí specifické části programu. Dotazník je součástí
přílohy.
K lepšímu vývoji mi pomohla i má předešlá práce, ve které jsem se také zabýval vývojem
aplikace pro zrakově postižené osoby.
Do budoucna chci aplikaci rozšířit mezi uživatele a pokusit se ji udržovat a měnit dle
požadavků uživatelů. Mezi budoucí úpravy také patří zlepšit grafické rozhraní aplikace a
přidat práci s bloky dokumentu. Bude tedy možné kopírovat, vkládat a mazat celé bloky
znaků. Uvažuji také o vývoji dodatečné aplikace, která umožní uživatelům definovat si vlastní
významy matic. Jedná se tedy o změnu souboru czech.txt, který je možno upravovat pouze
přímým zásahem, a definování významů pomocí standardu. Postupné uvolňování znaků v
ArrayListu bude také potřeba vyřešit, aby nedocházelo k zahlcení paměti příliš dlouhým
dokumentem.
17
7. Závěr
Úspěšně jsem prozkoumal a seznámil se s existujícími pomůckami, které zjednodušují
nevidomým práci s počítačem. Na základě existujícího softwaru a požadavků Tyflocentra
v Ostravě jsem vyvinul novou aplikaci, která slouží jako Braille editor. Snažil jsem se
vyhnout všem nedostatkům z existujících programů a vyjít vstříc co nejvíce uživatelům, kteří
by tuto aplikaci mohli využít.
Tato práce mi přinesla nejen další zkušenosti v oblasti programování, ale také nové poznatky
ze života zrakově postižených.
18
8. Zdroje, citace
1)
Kompenzační
pomůcky.
[online].
[cit.
2012-03-15].
<http://www.lorm.cz/download/HMN/obsahCD/kompenzacnipomucky.html#pichtuv-psaci-stroj>.
2)
KURLAND, Karel. Osobní sdělení
3)
Braillovo písmo. [online]. Poslední revize: 14. 12. 2005 [cit. 2012-03-18].
Dostupné z: <http://www.shaman.cz/sifrovani/braillovo-pismo.htm>.
4)
Braillovo písmo. [online]. Poslední revize: 28. 2. 2012 [cit. 2012-01-24].
Dostupné z: <http://cs.wikipedia.org/wiki/Braillovo_písmo>.
5)
R.KABELKA, J. FENZ, J. POKORNÝ, M. JELÍNEK. Srovnání braillských řádků.
[online]. Poslední revize: 27. 12. 2009 [cit. 2012-02-24]. Dostupné z:
<http://www.blindfriendly.cz/at/srovnani-braillskych-radku/>.
6)
Centrum TEREZA. Braillské tiskárny. [online]. [cit. 2012-03-18]. Dostupné z:
<http://www.pristupnost.cz/braillske-tiskarny/>.
7)
odt2braile. [online]. [cit. 2012-03-18]. Dostupné z:
<http://odt2braille.sourceforge.net/>.
8)
Tyfloservis. Osobní sdělení
9)
Windows Presentation Foundation. [online]. Poslední revize: 20. 12. 2011 [cit.
2012-01-24]. Dostupné z: <http://cs.wikipedia.org/wiki/WPF>.
10)
KADLEC, Václav. Agilní programování. Brno: Computer Press, 2004. ISBN 80251-0342-0
11)
KUČEROVÁ, Helena. Use Case model. [online]. Poslední revize: 3. 11 2011 [cit.
2012-03-18]. Dostupné z: <http://web.sks.cz/users/ku/pri/usecase.htm>.
12)
BISHOPOVÁ, Judith. C# – návrhové vzory. Brno: Zoner Press, 2010. ISBN 97880-7413-076-2
13)
PECINOVSKÝ, Rudolf. Návrhové vzory. Brno: Computer Press, 2007. ISBN 97880-251-1582-4
14)
Braille Patterns. [online]. [cit. 2012-01-29]. Dostupné z:
<http://jrgraphix.net/r/Unicode/2800-28FF>.
15)
NVDA - Development. [online]. Poslední revize: 19. 2. 2010 [cit. 2012-02-11].
Dostupné z: <http://www.nvda-project.org/wiki/Development>.
16)
Entering menu only via Alt key. [online]. Poslední revize: 19. 2. 2012 [cit. 2012-0318]. Dostupné z: <http://stackoverflow.com/questions/9352675/entering-menuonly-via-alt-key>.
17)
Psaní všemi deseti. [online]. Originál dostupný z:
<http://nd04.jxs.cz/645/877/5cdaac669c_73102810_o2.jpg>.
19
Dostupné
z:
Download

Synopse příspěvku - Wichterlovo gymnázium, Ostrava