Az NVDA (NonVisual Desktop Access) egy ingyenes, nyílt forráskódú képernyőolvasó Microsoft Windowshoz, amelyet az NV Access fejleszt a közreműködők globális közösségével együttműködve.Ha többet szeretne megtudni az NVDA-ról vagy letölteni egy példányt, látogasson el az NV Access fő weboldalára.
Figyelem: az NVDA projektnek van egy Polgári és közreműködői magatartási kódexe. Az NV Access elvárja, hogy minden közreműködő és más közösségi tag elolvassa és betartsa az ebben a dokumentumban meghatározott szabályokat, miközben részt vesz vagy hozzájárul a projekthez.
- Kérjen támogatást
- Dokumentáció
- Kommunikációs csatornák
- Egyéb fontos projektlinkek
- A forráskód megszerzése
- Függőségek
- Telepített függőségek
- Git submodules
- Python függőségek
- A forrásfa előkészítése
- Az NVDAHelper fordítása hibakeresési opciókkal
- A forráskód futtatása
- NVDA építése
- A telepítő építése
- Fejlesztői dokumentáció készítése
- Hibakereső szimbólumok archívumának létrehozása
- Fordítási sablon generálása
- A build testreszabása
- Automatizált tesztek futtatása
- Unit tests
- Fordítható karakterláncok ellenőrzése
- Linting your changes
- Unit tesztek
- Rendszertesztek
- Hozzájárulás az NVDA-hoz
Kérjen támogatást
Ha Ön kezdő, haladó felhasználó, új vagy régóta fejlesztő, vagy ha Ön egy szervezet, amely többet szeretne tudni vagy hozzájárulni az NVDA-hoz, támogatást kaphat a rendelkezésre álló dokumentáción keresztül, valamint számos, az NVDA képernyőolvasónak szánt kommunikációs csatornán keresztül. Az alábbiakban áttekintjük a legfontosabb támogatási forrásokat.
Dokumentáció
- NVDA felhasználói kézikönyv
- NVDA fejlesztői kézikönyv
- NVDA Add-ons Development Internals
- NVDA ControllerClient kézikönyv
- Minden további dokumentáció megtalálható ennek az adattárnak a wikiben és a közösségi wikiben
Kommunikációs csatornák
- NVDA Users Mailing List
- NVDA Developers Mailing List
- NVDA Add-ons Mailing List
- Instant Messaging channel for NVDA Support
- Más források, beleértve a csoportokat és profilokat a közösségi média csatornákon, nyelvspecifikus weboldalak és levelezőlisták stb.
Az NV Access-től közvetlenül is kaphat támogatást. További részletekért lásd az NV Access weboldalát.
Egyéb fontos projektlinkek
- NVDA a GitHubon
- NVDA problémák a GitHubon: Hibajelentések, funkcióigénylések, stb.
- NVDA fejlesztési pillanatképek: Automatikusan generált buildek a projekt aktuális fejlesztési állapotáról
- NVDA add-ons: Add-onok beszerzése az NVDA fejlesztéséhez
- NVDA Add-ons koordinációs és támogatási központ: Minden az NVDA addons környezetéről
- NVDA Add-ons Template: Az Add-ons sablon generálására szolgáló adattár
- Az NVDA fordítása: Információk az NVDA más nyelvre történő fordításáról
- NVDA Controller Client (2010-02-19): NVDA API külső alkalmazások számára az üzenetek közvetlen megszólaltatásához vagy Braille-íráshoz stb.
- Hozzájárulás az NVDA-hoz: Útmutató az NVDA forráskódjához való hozzájáruláshoz
- NVDA commits email lista: Értesítések a Git-tárba történő minden commitról
- Régi e-mail archívumok: Az NVDA fejlesztésével kapcsolatos megbeszéléseket tartalmazzák
A forráskód megszerzése
Az NVDA projekt a Git verziókezelő rendszert használja a forráskód és a dokumentáció számára.
Az NVDA Git-tár a https://github.com/nvaccess/nvda.git címen található. A következő paranccsal klónozhatjuk, amely a nvda
nevű könyvtárba helyezi a fájlokat:
git clone --recursive https://github.com/nvaccess/nvda.git
A --recursive
opcióra az általunk használt különböző Git almodulok lekérdezéséhez van szükség.
Függőségek
Az NVDA forrása több más csomagtól is függ a helyes működéshez.
Telepített függőségek
A következő függőségeket kell telepíteni a rendszerre:
- Python, 3.8-as verzió, 32 bit
- Használja a legújabb minor verziót, ha lehetséges.
- Microsoft Visual Studio 2019 Community, 16-os verzió.3 vagy újabb:
- Letöltés https://visualstudio.microsoft.com/vs/
- A Visual Studio telepítésekor a következőket kell engedélyeznie:
- A Munkaterhelések lapon
- a Windows csoportban:
- Asztali fejlesztés C++-al
- Ezután a Telepítés részletei szakaszban, a Desktop for C++, Választható csoportosítás alatt győződjön meg arról, hogy a következők vannak kiválasztva:
- MSVC v142 – VS 2019 C++ x64/x86 build tools
- Windows 10 SDK (10.0.19041.0)
- C++ ATL for v142 build tools (x86 & x64)
- C++ Clang tools for Windows
- a Windows csoportban:
- Az Individual components lapon győződjön meg róla, hogy a következő elemek vannak kiválasztva:
- MSVC v142 – VS 2019 C++ ARM64 build tools
- C++ ATL for v142 build tools (ARM64)
- A Munkaterhelések lapon
Git submodules
A függőségek egy részét Git submodules tartalmazza.Ha nem adta át a --recursive
opciót a git clone-nak, akkor a git submodule update --init
futtatására lesz szükség.Amikor egy szükséges almodul commit változik (pl. git pull után), akkor a git submodule update
futtatására lesz szükség.Ha nem vagy biztos benne, futtasd a git submodule update
minden git pull, merge vagy checkout után.
Hivatkozásképpen a következő futásidejű függőségeket tartalmazzák a Git almodulok:
- eSpeak NG, 1.51-dev verzió commit 53915bf0a
- Sonic, commit 4f8c1d11
- IAccessible2, commit cbc1f29631780
- liblouis, version 3.17.0
- Unicode Common Locale Data Repository (CLDR), 38.1 verzió
- NVDA képek és hangok
- Adobe Acrobat akadálymentesítési felület, XI verzió
- MinHook, 1.2.2 verziójú címkével
- brlapi Python kötés, 0.8 vagy újabb verzió, a BRLTTY for Windows 6. verziójával együtt terjesztve.1
- lilli.dll, 2.1.0.0 verzió
- Python interfész az FTDI meghajtóhoz/chiphez
- Java Access Bridge 32 bit, a Zulu Community OpenJDK build 13.0.1+10Zulu (13.28.11)
A miscDeps git almodulban a következő build time függőségek szerepelnek:
- txt2tags, version 2.5
- Nulsoft Install System, version 2.51
- NSIS UAC plug-in, 0.2 verzió.4, ansi
- xgettext és msgfmt a GNU gettextből
- Boost Optional (önálló fejléc), a 3922965-ös commitból
A következő függőségekre a legtöbb embernek nincs szüksége, és nem szerepelnek a Git almodulokban:
-
Az nvdaHelper fejlesztői dokumentációjának létrehozásához: Doxygen Windows telepítő, 1.8.15 verzió:
-
Ha a Visual Studio Code-t használja az Ön által preferált integrált fejlesztőkörnyezetként, akkor használhatja a Visual Studio Code számára előre elkészített munkaterület-konfigurációnkat.Bár ez a VSCode projekt nem szerepel almodulként az NVDA tárolójában, könnyen ellenőrizheti a munkaterület-konfigurációt a tárolójában, ha a következőt hajtja végre a tároló gyökeréből.
git clone https://github.com/nvaccess/vscode-nvda.git .vscode
Python függőségek
A NVDA és annak építési rendszere a Python csomagok széles listájától is függ. Ezek mind fel vannak sorolva a konkrét verziójukkal együtt egy requirements.txt fájlban, amely a tároló gyökerében található. A build rendszer azonban szükség esetén maga gondoskodik ezek lekéréséről. ezek a csomagok egy izolált Python virtuális környezetbe lesznek telepítve ebben az adattárban, és nem befolyásolják a rendszerszintű csomagkészletet.
A forrásfa előkészítése
Az NVDA forráskód futtatása előtt elő kell készítenie a forrásfát. ezt úgy teheti meg, hogy megnyit egy parancssort, az NVDA forráselosztás gyökerére vált, és beírja:
scons source
Ezt újra meg kell tennie, amikor a comtypes verziója változik, vagy nyelvi fájlokat ad hozzá vagy módosít.Vegye figyelembe, hogy ha a felhasználói dokumentációt a súgó menüből szeretné elérni a forrásváltozat futtatása közben, akkor a parancssorhoz hozzá kell adnia a user_docs
-t is, így:
scons source user_docs
Az egyszerű tesztelés vagy a változtatások átadása közben általában gyorsabb lehet, ha csak a scons source
-t csinálja, mivel a felhasználói dokumentáció minden alkalommal változik, amikor a revíziószám változik.
Az NVDAHelper fordítása hibakeresési opciókkal
A forrásfa elkészítése többek között az NVDAHelper könyvtárakat is felépíti.Ha az nvdaHelper hibakeresését próbáljuk elvégezni, a nvdaHelperDebugFlags
és nvdaHelperLogLevel
parancssori változók segítségével különböző hibakeresési opciókat vezérelhetünk az építéssel.
A nvdaHelperLogLevel
változó megadja, hogy milyen szintű naplózást (0-59) szeretnénk látni, az alacsonyabb a bővebb. Az alapértelmezett érték 15.
A nvdaHelperDebugFlags
változó a következő flagek közül egyet vagy többet vesz fel:
- debugCRT: a könyvtárak a debug C futásidővel szemben lesznek linkelve és a bizonyítások engedélyezve lesznek. (Alapértelmezés szerint a normál CRT-t használjuk, és az assertionok ki vannak kapcsolva.)
- RTC: a futásidejű ellenőrzések (veremrongálás, inicializálatlan változók stb.) engedélyezve lesznek. (Alapértelmezés szerint nincsenek futásidejű ellenőrzések.)
- analyze: MSVC kódelemzést futtat az összes nvdaHelper kódon, minden figyelmeztetés esetén megáll. (Az alapértelmezés szerint nincs elemzés).
A speciális kulcsszavak none és all is használhatók az egyes flagek helyett.
Egy példa következik, amely engedélyezi a debug CRT és a futástípus ellenőrzéseket
scons source nvdaHelperDebugFlags=debugCRT,RTC
A debug flagektől függetlenül mindig pdb fájlokat készít az építés során.Ezek azonban nem kerülnek bele az NVDA disztribúcióba.Ehelyett a scons symbolsArchive
külön archívumként csomagolja őket.
A buildek alapértelmezés szerint nem használnak semmilyen fordítóoptimalizálást sem.lásd a release
kulcsszó argumentumot, hogy milyen fordítóoptimalizálásokat engedélyez.
A forráskód futtatása
Az NVDA közvetlenül a forrásból is futtatható, anélkül, hogy a teljes bináris csomagot és az indítóprogramot össze kellene állítani.Az NVDA forrásból történő indításához a cmd.exe
használatával futtassa a runnvda.bat
parancsot a tároló gyökerében.
Az NVDA által elfogadott argumentumokról szóló súgó megtekintéséhez használja a -h
vagy --help
opciót.Ezek az argumentumok a felhasználói kézikönyvben is dokumentálva vannak.
NVDA építése
Az NVDA bináris buildje futtatható olyan rendszeren, ahol nincs telepítve a Python és az NVDA összes többi függősége (ahogyan a pillanatképek és kiadások esetében tesszük).
A bináris archívumok és csomagok létrehozhatók a scons segítségével az NVDA forráselosztás gyökeréből. Az alábbiak bármelyikének elkészítéséhez nyissunk egy parancssort, és váltsunk ebbe a könyvtárba.
A nem archivált bináris build elkészítéséhez (ami megfelel egy kibontott hordozható archívumnak) írjuk be:
scons dist
A build a dist könyvtárban jön létre.
A telepítő építése
Elindító archívum (egy futtatható, amely lehetővé teszi a telepítést vagy a hordozható dist generálását) létrehozásához írja be:
scons launcher
Az archívum a kimeneti könyvtárba kerül.
Fejlesztői dokumentáció készítése
Az NVDA fejlesztői útmutató létrehozásához írja be:
scons developerGuide
A fejlesztői útmutató a kimeneti könyvtár devDocs
mappájába kerül.
A HTML-alapú forráskód dokumentáció létrehozásához írja be:
scons devDocs
A dokumentáció a kimeneti könyvtár NVDA
mappájába kerül.
Az nvdaHelper fejlesztői dokumentációjának generálásához (nem szerepel a devDocs célprogramban):
scons devDocs_nvdaHelper
A dokumentáció a kimeneti könyvtár devDocs\nvdaHelper
mappájába kerül.
Hibakereső szimbólumok archívumának létrehozása
A különböző dll/exe binárisok hibakereső szimbólumainak archívumának létrehozásához írja be:
scons symbolsArchive
Az archívum a kimeneti könyvtárba kerül.
Fordítási sablon generálása
A gettext fordítási sablon generálásához (fordítók számára) írja be:
scons pot
A build testreszabása
A build opcionálisan testreszabható a parancssorban megadott változókkal:
- version:
- release: Hogy ez egy release verzió-e.
- Ez lehetővé teszi a különböző C++ fordítóoptimalizálásokat, mint például a /O2 és a teljes program optimalizálását.
- A Pythont is utasítja, hogy optimalizált bájtkódot generáljon.
- publisher: A build kiadója.
- certFile: A tanúsítványfájl, amellyel a futtatható fájlokat aláírja. A tanúsítványnak pfx formátumúnak kell lennie, és tartalmaznia kell a magánkulcsot.
- certPassword: Az aláíró tanúsítványban lévő magánkulcs jelszava. Ha elhagyja, a rendszer nem feltételez jelszót.
- certTimestampServer: Az autentikus aláírások időbélyegzéséhez használandó időbélyegző kiszolgáló URL-címe. Ha elhagyja, az aláírások nem lesznek időbélyegezve.
- outputDir: A könyvtár, ahová a véglegesen elkészített archívumok és hasonlók kerülnek.
- targetArchitectures: A célarchitektúrák, amelyeket az NVDA-nak támogatnia kell. A lehetséges értékek: all, x86 és x86_64. Ezt általában érdemes alapértelmezettként hagyni.
Egy adott verziójú indítóprogram építéséhez például beírhatja:
scons launcher version=test1
Bővebben lásd a sconstruct
fájlban.
Automatizált tesztek futtatása
Ha változtat az NVDA kódján, érdemes lefuttatni az NVDA automatizált tesztjeit.Ezek a tesztek segítenek biztosítani, hogy a kódváltozások nem törik meg véletlenül a korábban működő funkciókat.
A tesztek futtatásához (egységtesztek, lefordítható karakterláncok ellenőrzése) először a fentiek szerint váltson könyvtárat az NVDA forrás disztribúció gyökerére.Ezután futtassa:
scons tests
Unit tests
Hogy csak bizonyos egységteszteket futtasson, adja meg őket a parancssorban a unitTests
változóval.A teszteket vesszővel elválasztott listaként kell megadni.Minden tesztet a tests\unit
könyvtárhoz viszonyított Python modulként, osztályként vagy metódusként kell megadni.Például, ha csak a TestMove
és TestSelection
osztályok metódusait akarjuk futtatni a tests\unit\test_cursorManager.py
fájlban, futtassuk ezt a parancsot:
scons tests unitTests=test_cursorManager.TestMove,test_cursorManager.TestSelection
Fordítható karakterláncok ellenőrzése
Hogy csak a fordítható karakterláncok ellenőrzését futtassuk (amely ellenőrzi, hogy minden fordítható karakterlánc rendelkezik-e fordítói megjegyzésekkel), futtassuk:
scons checkPot
Linting your changes
Az NVDA kódolási stílusának megfelelő változtatások biztosítása érdekében helyben futtathatja a Flake8 lintert.Néhány fejlesztő félrevezetőnek talált bizonyos linting hibaüzeneteket, ezeket a tests/lint/readme.md
pontosítja.A runlint.bat a Flake8 segítségével csak a munkakönyvtárad és a megadott base
ág közötti különbségeket vizsgálja.Ha Pull Requestet készítesz, az itt használt base
ágnak meg kell egyeznie a Pull Request céljával. A legtöbb esetben ez a origin/master
lesz.
runlint origin/master
Azért, hogy gyorsabban figyelmeztessen a linting hibákra, érdemes lehet a Flake8 más, Ön által használt fejlesztőeszközöket integrálni.További részletekért lásd: tests/lint/readme.md
Unit tesztek
A Unit tesztek a rununittests.bat
szkript segítségével futtathatók.Belsőleg ez a szkript a Nose Python teszt keretrendszert használja a tesztek végrehajtásához.A rununittests-nek megadott bármely argumentum.bat-nak megadott argumentumokat továbbítja a Nose-nak.Kérjük, olvassa el a Nose saját dokumentációját a tesztek szűréséről stb.
Rendszertesztek
A rendszertesztek a runsystemtests.bat
szkript segítségével futtathatók.Ez a szkript belsőleg a Robot teszt keretrendszert használja a tesztek futtatására.A runsystemtests.bat-nek megadott argumentumokat továbbítja a Robotnak.További részletekért (beleértve a tesztek szűrését és kizárását) lásd tests/system/readme.md
.
Hozzájárulás az NVDA-hoz
Ha szeretne kóddal vagy dokumentációval hozzájárulni az NVDA-hoz, további információkat olvashat a hozzájárulási útmutatóban.