nvaccess / nvda

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

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
      • 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)

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.