NVDA (NonVisual Desktop Access) este un cititor de ecran gratuit și open source pentru Microsoft Windows.Este dezvoltat de NV Access în colaborare cu o comunitate globală de colaboratori.Pentru a afla mai multe despre NVDA sau pentru a descărca o copie, vizitați site-ul principal NV Access.
Vă rugăm să rețineți: proiectul NVDA are un cod de conduită pentru cetățeni și colaboratori. NV Access se așteaptă ca toți contribuitorii și ceilalți membri ai comunității să citească și să respecte regulile stabilite în acest document în timp ce participă sau contribuie la acest proiect.
- Obțineți asistență
- Documentație
- Canale de comunicare
- Alte legături cheie ale proiectului
- Obținerea codului sursă
- Dependențe
- Dependențe instalate
- Git Submodules
- Dependențe Python
- Pregătirea arborelui sursă
- Compilarea NVDAHelper cu opțiuni de depanare
- Rularea codului sursă
- Construirea NVDA
- Construirea programului de instalare
- Crearea documentației dezvoltatorului
- Generare arhivă simboluri de depanare
- Generare șablon de traducere
- Personalizarea compilării
- Rularea testelor automatizate
- Teste unitare
- Verificări ale șirurilor traductibile
- Linting your changes
- Teste unitare
- Teste de sistem
- Contribuirea la NVDA
Obțineți asistență
Dacă sunteți un începător, un utilizator avansat, un dezvoltator nou sau cu vechime, sau dacă sunteți o organizație care dorește să afle mai multe sau să contribuie la NVDA, puteți obține asistență prin intermediul documentației existente, precum și prin intermediul mai multor canale de comunicare dedicate cititorului de ecran NVDA. Iată o prezentare generală a celor mai importante surse de asistență.
Documentație
- Ghidul utilizatorului NVDA
- Ghidul dezvoltatorului NVDA
- Ghidul dezvoltatorului NVDA
- NVDA Add.ons Development Internals
- NVDA ControllerClient manual
- Documentația suplimentară este inclusă în Wiki al acestui depozit și în Community Wiki
Canale de comunicare
- NVDA Users Mailing List
- NVDA Developers Mailing List
- NVDA Add-ons Mailing List
- Canal de mesagerie instantanee pentru asistență NVDA
- Alte surse, inclusiv grupuri și profiluri pe canalele de socializare, site-uri web și liste de discuții specifice fiecărei limbi etc.
De asemenea, puteți obține asistență directă de la NV Access. Consultați site-ul web NV Access pentru mai multe detalii.
Alte legături cheie ale proiectului
- NVDA pe GitHub
- Probleme NVDA pe GitHub: Rapoarte de erori, cereri de caracteristici, etc.
- Instantanee de dezvoltare NVDA: Construcții generate automat ale proiectului în starea sa actuală de dezvoltare
- NVDA add-ons: Obțineți add-ons pentru a îmbunătăți NVDA
- Centrul de coordonare și suport pentru add-ons NVDA: Totul despre mediul de add-ons NVDA
- NVDA Add-ons Template: Un depozit pentru generarea șablonului Add-ons
- Translating NVDA: Informații despre cum să traduceți NVDA într-o altă limbă
- NVDA Controller Client (2010-02-19): API NVDA pentru aplicații externe pentru a vorbi direct sau a transmite mesaje în braille, etc.
- Contribuirea la NVDA: Linii directoare pentru a contribui la codul sursă NVDA
- Lista de e-mail NVDA commits: Notificări pentru toate modificările aduse la depozitul Git
- Arhivele vechi de e-mail: conțin discuții despre dezvoltarea NVDA
Obținerea codului sursă
Proiectul NVDA folosește sistemul de control al versiunilor Git pentru codul sursă și documentație.
Depozitul NVDA Git este localizat la https://github.com/nvaccess/nvda.git. Îl puteți clona cu următoarea comandă, care va plasa fișierele într-un director numit nvda
:
git clone --recursive https://github.com/nvaccess/nvda.git
Opțiunea --recursive
este necesară pentru a prelua diferite submodule Git pe care le folosim.
Dependențe
Sursa NVDA depinde de mai multe alte pachete pentru a funcționa corect.
Dependențe instalate
Următoarele dependențe trebuie să fie instalate pe sistemul dumneavoastră:
- Python, versiunea 3.8, 32 bit
- Utilizați ultima versiune minoră dacă este posibil.
- Microsoft Visual Studio 2019 Community, versiunea 16.3 sau o versiune ulterioară:
- Download from https://visualstudio.microsoft.com/vs/
- Când instalați Visual Studio, trebuie să activați următoarele:
- În fila Workloads
- din grupul Windows:
- Desktop development with C++
- Apoi, în secțiunea Installation details, sub Desktop for C++, Optional grouping, asigurați-vă că sunt selectate următoarele:
- 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
- din grupul Windows:
- În fila Componente individuale, asigurați-vă că sunt selectate următoarele elemente:
- În fila Workloads
- În fila Componente individuale, asigurați-vă că sunt selectate următoarele elemente:
- MSVC v142 – VS 2019 C++ ARM64 build tools
- C++ ATL for v142 build tools (ARM64)
Git Submodules
Câteva dintre dependențe sunt conținute în submodulele Git.Dacă nu ați trecut opțiunea --recursive
la git clone, va trebui să rulați git submodule update --init
.Ori de câte ori se modifică comiterea unui submodul necesar (de exemplu, după git pull), va trebui să rulați git submodule update
.Dacă nu sunteți sigur, rulați git submodule update
după fiecare git pull, merge sau checkout.
Pentru referință, următoarele dependențe de timp de execuție sunt incluse în submodulele Git:
- eSpeak NG, versiunea 1.51-dev commit 53915bf0a
- Sonic, commit 4f8c1d11
- IAccessible2, commit cbc1f29631780
- liblouis, versiunea 3.17.0
- Unicode Common Locale Data Repository (CLDR), versiunea 38.1
- NVDA images and sounds
- Adobe Acrobat accessibility interface, versiunea XI
- MinHook, tagged version 1.2.2
- brlapi Python bindings, versiunea 0.8 sau mai recentă, distribuită cu BRLTTY pentru Windows, versiunea 6.1
- lilli.dll, versiunea 2.1.0.0
- Interfață Python pentru driverul/cipul FTDI
- Java Access Bridge 32 biți, din Zulu Community OpenJDK build 13.0.1+10Zulu (13.28.11)
În plus, următoarele dependențe de timp de construcție sunt incluse în submodulul git miscDeps:
- txt2tags, versiunea 2.5
- Nulsoft Install System, versiunea 2.51
- NSIS UAC plug-in, versiunea 0.2.4, ansi
- xgettext și msgfmt de la GNU gettext
- Boost Optional (antet independent), de la commit 3922965
Următoarele dependențe nu sunt necesare pentru majoritatea oamenilor și nu sunt incluse în submodulele Git:
-
Pentru a genera documentația dezvoltatorului pentru nvdaHelper: Doxygen Windows installer, versiunea 1.8.15:
-
Când folosiți Visual Studio Code ca mediu de dezvoltare integrat de preferință, puteți utiliza configurația noastră de spațiu de lucru prepopulat pentru Visual Studio Code.Deși acest proiect VSCode nu este inclus ca submodul în depozitul NVDA, puteți verifica cu ușurință configurația spațiului de lucru din depozitul dumneavoastră executând următoarele din rădăcina depozitului.
git clone https://github.com/nvaccess/vscode-nvda.git .vscode
Dependențe Python
NVDA și sistemul său de construire depind, de asemenea, de o listă extinsă de pachete Python. Toate acestea sunt listate cu versiunile lor specifice într-un fișier requirements.txt din rădăcina acestui depozit. Cu toate acestea, sistemul de compilare are grijă să le aducă el însuși atunci când este necesar. aceste pachete vor fi instalate într-un mediu virtual Python izolat în cadrul acestui depozit și nu vor afecta setul de pachete din întregul sistem.
Pregătirea arborelui sursă
Înainte de a putea rula codul sursă NVDA, trebuie să pregătiți arborele sursă. faceți acest lucru deschizând un prompt de comandă, trecând la rădăcina distribuției sursă NVDA și tastând:
scons source
Ar trebui să faceți acest lucru din nou ori de câte ori se schimbă versiunea de comtypes sau sunt adăugate sau modificate fișiere de limbaj.Rețineți că, dacă doriți să accesați documentația utilizatorului din meniul de ajutor în timp ce rulați versiunea sursă, va trebui, de asemenea, să adăugați user_docs
la linia de comandă astfel:
scons source user_docs
În timp ce pur și simplu testați sau confirmați modificări, poate fi mai rapid, de obicei, să faceți doar scons source
, deoarece documentația utilizatorului se va schimba de fiecare dată când se modifică numărul de revizuire.
Compilarea NVDAHelper cu opțiuni de depanare
Printre altele, pregătirea arborelui sursă construiește bibliotecile NVDAHelper. în cazul în care încercați să depanați nvdaHelper, puteți controla diverse opțiuni de depanare prin compilarea cu variabilele de linie de comandă nvdaHelperDebugFlags
și nvdaHelperLogLevel
.
Variabila nvdaHelperLogLevel
specifică nivelul de logare (0-59) pe care doriți să îl vedeți, mai mic este mai verbos. Valoarea implicită este 15.
Variabila nvdaHelperDebugFlags
primește unul sau mai multe dintre următorii indicatori:
- debugCRT: bibliotecile vor fi legate cu timpul de execuție C de depanare și vor fi activate aserțiunile. (În mod implicit, se utilizează CRT normal și aserțiunile sunt dezactivate.)
- RTC: vor fi activate verificările din timpul de execuție (coruperea stivei, variabile neinitializate etc.). (În mod implicit, nu există verificări în timp de execuție.)
- analyze: rulează analiza de cod MSVC pe tot codul nvdaHelper, oprindu-se la orice avertisment. (valoarea implicită este nici o analiză).
Cuvintele cheie speciale none și all pot fi, de asemenea, utilizate în locul stegulețelor individuale.
Urmează un exemplu care activează verificările de depanare CRT și runtype
scons source nvdaHelperDebugFlags=debugCRT,RTC
Filele pdb cu simboluri sunt întotdeauna produse la compilare, indiferent de stegulețele de depanare.Cu toate acestea, ele nu sunt incluse în distribuția NVDA. în schimb, scons symbolsArchive
le va împacheta ca o arhivă separată.
În mod implicit, compilările nu folosesc, de asemenea, nici o optimizare a compilatorului.Vă rugăm să consultați argumentul cu cuvântul cheie release
pentru a afla ce optimizări ale compilatorului va activa.
Rularea codului sursă
Este posibil să rulați NVDA direct din sursă fără a fi nevoie să construiți pachetul binar complet și lansatorul.Pentru a lansa NVDA din sursă, folosind cmd.exe
, executați runnvda.bat
în rădăcina depozitului.
Pentru a vizualiza ajutorul privind argumentele pe care NVDA le va accepta, utilizați opțiunea -h
sau --help
.Aceste argumente sunt, de asemenea, documentate în ghidul utilizatorului.
Construirea NVDA
O construcție binară a NVDA poate fi rulată pe un sistem fără Python și toate celelalte dependențe ale NVDA instalate (așa cum facem pentru instantanee și versiuni).
Arhivele și pachetele binare pot fi create folosind scons din rădăcina distribuției sursă NVDA. Pentru a construi oricare dintre următoarele, deschideți un prompt de comandă și treceți în acest director.
Pentru a face o construcție binară nearhivată (echivalentă cu o arhivă portabilă extrasă), tastați:
scons dist
Construcția va fi creată în directorul dist.
Construirea programului de instalare
Pentru a crea o arhivă de lansare (un singur executabil care să permită instalarea sau generarea dist portabile), tastați:
scons launcher
Arhiva va fi plasată în directorul de ieșire.
Crearea documentației dezvoltatorului
Pentru a genera ghidul dezvoltatorului NVDA, tastați:
scons developerGuide
Ghidul dezvoltatorului va fi plasat în folderul devDocs
din directorul de ieșire.
Pentru a genera documentația codului sursă bazată pe HTML, tastați:
scons devDocs
Documentația va fi plasată în folderul NVDA
din directorul de ieșire.
Pentru a genera documentația dezvoltatorului pentru nvdaHelper (care nu este inclusă în obiectivul devDocs):
scons devDocs_nvdaHelper
Documentația va fi plasată în folderul devDocs\nvdaHelper
din directorul de ieșire.
Generare arhivă simboluri de depanare
Pentru a genera o arhivă de simboluri de depanare pentru diversele binare dll/exe, tastați:
scons symbolsArchive
Arhiva va fi plasată în directorul de ieșire.
Generare șablon de traducere
Pentru a genera un șablon de traducere gettext (pentru traducători), tastați:
scons pot
Personalizarea compilării
Opțional, compilarea poate fi personalizată prin furnizarea de variabile în linia de comandă:
- version: Versiunea acestei compilări.
- release: Dacă aceasta este o versiune de lansare.
- Acest lucru permite diverse optimizări ale compilatorului C++, cum ar fi /O2 și optimizarea întregului program.
- De asemenea, instruiește Python să genereze cod de octeți optimizat.
- publisher: Editorul acestei compilări.
- certFile: Fișierul de certificat cu care se semnează executabilele. Certificatul trebuie să fie în format pfx și să conțină cheia privată.
- certPassword: Parola pentru cheia privată din certificatul de semnare. Dacă este omisă, nu se va presupune nicio parolă.
- certTimestampServer: URL-ul serverului de timestamping care urmează să fie utilizat pentru a cronometra semnăturile authenticode. Dacă este omisă, semnăturile nu vor fi cronometrate.
- outputDir: Directorul în care vor fi plasate arhivele finale construite și altele asemenea.
- targetArchitectures: Arhitecturile țintă pe care NVDA ar trebui să le suporte. Valorile posibile sunt all, x86 și x86_64. Aceasta ar trebui lăsată, în general, ca valoare implicită.
De exemplu, pentru a construi un lansator cu o anumită versiune, puteți tasta:
scons launcher version=test1
Pentru mai multe consultați fișierul sconstruct
.
Rularea testelor automatizate
Dacă faceți o modificare la codul NVDA, ar trebui să rulați testele automatizate ale NVDA.Aceste teste ajută la asigurarea faptului că modificările de cod nu strică în mod neintenționat funcționalitatea care funcționa anterior.
Pentru a rula testele (teste unitare, verificări ale șirurilor de caractere traductibile), schimbați mai întâi directorul în rădăcina distribuției sursă NVDA, așa cum s-a menționat mai sus. apoi, rulați:
scons tests
Teste unitare
Pentru a rula numai teste unitare specifice, specificați-le folosind variabila unitTests
pe linia de comandă. testele trebuie furnizate ca o listă separată prin virgulă. fiecare test trebuie specificat ca un modul, clasă sau metodă Python în raport cu directorul tests\unit
.De exemplu, pentru a rula numai metodele din clasele TestMove
și TestSelection
din fișierul tests\unit\test_cursorManager.py
, rulați această comandă:
scons tests unitTests=test_cursorManager.TestMove,test_cursorManager.TestSelection
Verificări ale șirurilor traductibile
Pentru a rula numai verificările șirurilor traductibile (care verifică dacă toate șirurile traductibile au comentarii de traducător), rulați:
scons checkPot
Linting your changes
Pentru a vă asigura că modificările dvs. sunt conforme cu stilul de codare NVDA, puteți rula local linterul Flake8.Unii dezvoltatori au considerat că anumite mesaje de eroare de linting induc în eroare, acestea sunt clarificate în tests/lint/readme.md
.runlint.bat va folosi Flake8 pentru a inspecta doar diferențele dintre directorul dvs. de lucru și ramura base
specificată.Dacă creați o cerere de tip Pull Request, ramura base
pe care o folosiți aici ar trebui să fie aceeași cu cea pe care ați folosi-o pentru o cerere de tip Pull Request. În cele mai multe cazuri, aceasta va fi origin/master
.
runlint origin/master
Pentru a fi avertizat mai repede în legătură cu erorile de linting, este posibil să doriți să integrați Flake8 alte instrumente de dezvoltare pe care le utilizați. pentru mai multe detalii, consultați tests/lint/readme.md
Teste unitare
Testele unitare pot fi rulate cu scriptul rununittests.bat
. intern, acest script utilizează cadrul de testare Nose Python pentru a executa testele. orice argumente date la rununittests.bat sunt transmise către Nose.Vă rugăm să consultați documentația proprie a Nose cu privire la modul de filtrare a testelor etc.
Teste de sistem
Testele de sistem pot fi rulate cu scriptul runsystemtests.bat
.În mod intern, acest script utilizează cadrul de testare Robot pentru a executa testele.Toate argumentele date la runystemtests.bat sunt transmise către Robot.Pentru mai multe detalii (inclusiv filtrarea și excluderea testelor), consultați tests/system/readme.md
.
Contribuirea la NVDA
Dacă doriți să contribuiți cu cod sau documentație la NVDA, puteți citi mai multe informații în ghidul nostru de contribuție.
.