nvaccess / nvda

NVDA (NonVisual Desktop Access) is een vrije, open source schermlezer voor Microsoft Windows.Het wordt ontwikkeld door NV Access in samenwerking met een wereldwijde gemeenschap van bijdragers.Om meer te weten te komen over NVDA of een exemplaar te downloaden, bezoek de hoofdwebsite van NV Access.

Let op: het NVDA-project heeft een gedragscode voor burgers en bijdragers. NV Access verwacht dat alle bijdragers en andere leden van de gemeenschap de regels in dit document lezen en naleven terwijl ze deelnemen of bijdragen aan dit project.

Ondersteuning krijgen

Of u nu een beginner bent, een gevorderde gebruiker, een nieuwe ontwikkelaar of een ontwikkelaar die al lang meedraait, of als u een organisatie bent die meer wil weten of wil bijdragen aan NVDA, u kunt ondersteuning krijgen via de aanwezige documentatie en via verschillende communicatiekanalen die speciaal voor de NVDA schermlezer zijn opgezet. Hier is een overzicht van de belangrijkste ondersteuningsbronnen.

Documentatie

  • NVDA Gebruikersgids
  • NVDA Ontwikkelaarsgids
  • NVDA Add-ons Development Internals
  • NVDA ControllerClient handleiding
  • Verder documentatie is opgenomen in de Wiki van deze repository en in de Community Wiki

Communicatiekanalen

  • NVDA Gebruikers Mailing Lijst
  • NVDA Ontwikkelaars Mailing Lijst
  • NVDA Add-ons Mailing List
  • Instant Messaging kanaal voor NVDA Support
  • Andere bronnen waaronder groepen en profielen op sociale media kanalen, taalspecifieke websites en mailinglijsten, enz.

U kunt ook rechtstreeks ondersteuning krijgen van NV Access. Zie de NV Access website voor meer details.

Andere belangrijke project links

  • NVDA op GitHub
  • NVDA issues op GitHub: Bug reports, feature requests, etc.
  • NVDA development snapshots: Automatisch gegenereerde builds van het project in zijn huidige staat van ontwikkeling
  • NVDA add-ons: Verkrijg add-ons om NVDA te verbeteren
  • NVDA Add-ons coördinatie en support centrum: alles over NVDA’s addons omgeving
  • NVDA Add-ons Sjabloon: Een repository voor het genereren van het Add-ons sjabloon
  • NVDA vertalen: Informatie over hoe NVDA in een andere taal vertaald kan worden
  • NVDA Controller Client (2010-02-19): NVDA API voor externe applicaties om berichten direct in te spreken of te brailleren, etc.
  • Bijdragen aan NVDA: Richtlijnen voor het bijdragen aan de NVDA broncode
  • NVDA commits email lijst: Notificaties voor alle commits aan de Git repository
  • Oude e-mail archieven: bevatten discussies over NVDA ontwikkeling

De broncode verkrijgen

Het NVDA project gebruikt het Git versie controle systeem voor zijn broncode en documentatie.

De NVDA Git repository is te vinden op https://github.com/nvaccess/nvda.git. U kunt het klonen met het volgende commando, dat bestanden zal plaatsen in een directory met de naam nvda:

git clone --recursive https://github.com/nvaccess/nvda.git

De --recursive optie is nodig om verschillende Git submodules op te halen die we gebruiken.

Afhankelijkheden

De NVDA broncode is afhankelijk van verschillende andere pakketten om correct te draaien.

Geïnstalleerde afhankelijkheden

De volgende afhankelijkheden moeten op uw systeem zijn geïnstalleerd:

  • Python, versie 3.8, 32 bit
    • Gebruik de laatste minor versie indien mogelijk.
  • Microsoft Visual Studio 2019 Community, versie 16.3 of later:
    • Download van https://visualstudio.microsoft.com/vs/
    • Wanneer u Visual Studio installeert, moet u het volgende inschakelen:
      • Op het tabblad Werklasten
        • in de Windows-groep:
          • Desktopontwikkeling met C++
        • Dan in de sectie Installatiedetails, onder Desktop voor C++, Optionele groepering, zorg ervoor dat het volgende is geselecteerd:
          • MSVC v142 – VS 2019 C++ x64/x86 build tools
          • Windows 10 SDK (10.0.19041.0)
          • C++ ATL voor v142 build tools (x86 & x64)
          • C++ Clang tools voor Windows
      • Op het tabblad Individuele componenten moet u ervoor zorgen dat de volgende items zijn geselecteerd:
        • MSVC v142 – VS 2019 C++ ARM64 build tools
        • C++ ATL voor v142 build tools (ARM64)

Git Submodules

Enkele afhankelijkheden bevinden zich in Git submodules.Als je de --recursive optie niet aan git clone hebt doorgegeven, zul je git submodule update --init moeten uitvoeren.Als een vereiste submodule commit verandert (bijvoorbeeld na een git pull), zul je git submodule update moeten draaien. Als je het niet zeker weet, draai git submodule update dan na iedere git pull, merge of checkout.

Ter referentie, de volgende runtime afhankelijkheden zijn opgenomen in Git submodules:

  • eSpeak NG, versie 1.51-dev commit 53915bf0a
  • Sonic, commit 4f8c1d11
  • IAccessible2, commit cbc1f29631780
  • liblouis, versie 3.17.0
  • Unicode Common Locale Data Repository (CLDR), versie 38.1
  • NVDA afbeeldingen en geluiden
  • Adobe Acrobat toegankelijkheids interface, versie XI
  • MinHook, tagged versie 1.2.2
  • brlapi Python bindings, versie 0.8 of later, gedistribueerd met BRLTTY voor Windows, versie 6.1
  • lilli.dll, versie 2.1.0.0
  • Python interface naar FTDI driver/chip
  • Java Access Bridge 32 bit, van Zulu Community OpenJDK build 13.0.1+10Zulu (13.28.11)

Daarnaast zijn de volgende afhankelijkheden voor de bouwtijd opgenomen in de miscDeps git submodule:

  • txt2tags, versie 2.5
  • Nulsoft Install System, versie 2.51
  • NSIS UAC plug-in, versie 0.2.4, ansi
  • xgettext en msgfmt van GNU gettext
  • Boost Optioneel (stand-alone header), van commit 3922965

De volgende afhankelijkheden zijn niet nodig voor de meeste mensen, en zijn niet opgenomen in Git submodules:

  • Om ontwikkelaarsdocumentatie voor nvdaHelper te genereren: Doxygen Windows installer, versie 1.8.15:

  • Wanneer je Visual Studio Code gebruikt als je geïntegreerde ontwikkelomgeving van voorkeur, kun je gebruik maken van onze vooraf ingevulde werkruimteconfiguratie voor Visual Studio Code.Hoewel dit VSCode project niet als submodule in de NVDA repository is opgenomen, kunt u eenvoudig de werkruimte configuratie in uw repository bekijken door het volgende uit te voeren vanuit de root van de repository.

    git clone https://github.com/nvaccess/vscode-nvda.git .vscode

Python afhankelijkheden

NVDA en zijn bouwsysteem zijn ook afhankelijk van een uitgebreide lijst van Python pakketten. Ze zijn allemaal opgesomd met hun specifieke versies in een requirements.txt bestand in de root van dit archief. Deze pakketten zullen worden geïnstalleerd in een geïsoleerde Python virtuele omgeving binnen dit archief, en zullen geen invloed hebben op uw systeembrede set van pakketten.

De broncode voorbereiden

Voordat u de NVDA broncode kunt draaien, moet u de broncode voorbereiden.U doet dit door een commando prompt te openen, naar de root van de NVDA broncode distributie te gaan en te typen:

scons source

U moet dit opnieuw doen telkens als de versie van comtypes verandert of als er taalbestanden worden toegevoegd of gewijzigd.Merk op dat als u de gebruikersdocumentatie vanuit het help menu wilt openen terwijl u de broncode versie draait, u ook user_docs aan de opdrachtregel moet toevoegen zoals dit:

scons source user_docs

Tijdens het simpelweg testen of vastleggen van wijzigingen, kan het sneller zijn om gewoon scons source te doen, omdat de gebruikersdocumentatie zal veranderen elke keer als het revisienummer verandert.

NVDAHelper compileren met Debug-opties

Onder andere dingen, het voorbereiden van de source tree bouwt de NVDAHelper bibliotheken.Als u probeert nvdaHelper te debuggen, kunt u verschillende debug-opties regelen door te bouwen met de nvdaHelperDebugFlags en nvdaHelperLogLevel command line variabelen.

De nvdaHelperLogLevel variabele specificeert het niveau van logging (0-59) dat u wenst te zien, lager is meer verbose. De standaardwaarde is 15.

De nvdaHelperDebugFlags variabele heeft een of meer van de volgende vlaggen:

  • debugCRT: de bibliotheken worden gelinkt tegen de debug C runtime en asserties worden ingeschakeld. (Standaard wordt de normale CRT gebruikt en zijn assertions uitgeschakeld.)
  • RTC: runtime checks (stack corruption, uninitialized variables, etc.) worden ingeschakeld. (De standaardwaarde is geen runtime-controles.)
  • analyze: voert MSVC-code-analyse uit op alle nvdaHelper-code, en stopt bij elke waarschuwing. (standaard is geen analyse).

De speciale trefwoorden none en all kunnen ook worden gebruikt in plaats van de individuele vlaggen.

Er volgt een voorbeeld dat debug CRT- en runtype-controles inschakelt

scons source nvdaHelperDebugFlags=debugCRT,RTC

Symbool pdb-bestanden worden altijd geproduceerd bij het bouwen, ongeacht de debug-vlaggen.Ze worden echter niet in de NVDA distributie opgenomen. In plaats daarvan zal scons symbolsArchive ze als een apart archief verpakken.

De standaard builds maken ook geen gebruik van compiler optimalisaties. Zie het release sleutelwoord argument voor welke compiler optimalisaties het zal inschakelen.

De broncode uitvoeren

Het is mogelijk om NVDA direct vanaf de broncode te draaien zonder het volledige binaire pakket en de launcher te hoeven bouwen.Om NVDA vanaf de broncode te starten, met cmd.exe, voert u runnvda.bat uit in de root van het archief.

Om hulp te krijgen over de argumenten die NVDA zal accepteren, gebruikt u de -h of --help optie.Deze argumenten zijn ook gedocumenteerd in de gebruikershandleiding.

NVDA bouwen

Een binaire build van NVDA kan worden uitgevoerd op een systeem zonder dat Python en alle andere afhankelijkheden van NVDA zijn geïnstalleerd (zoals we doen voor snapshots en releases).

Binaire archieven en bundels kunnen worden gemaakt met scons vanuit de root van de NVDA brondistributie. Om een van de volgende dingen te bouwen, open een commando prompt en ga naar deze directory.

Om een niet-gearchiveerde binaire build te maken (gelijk aan een uitgepakt portable archief), type:

scons dist

De build zal worden gemaakt in de dist directory.

Bouwen van de installer

Om een launcher archief te maken (een executable om te installeren of een portable dist te genereren), type:

scons launcher

Het archief zal in de output directory geplaatst worden.

Bouwen van de documentatie voor ontwikkelaars

Om de NVDA ontwikkelaars gids te genereren, type:

scons developerGuide

De ontwikkelaars gids zal worden geplaatst in de devDocs map in de output directory.

Om de HTML-gebaseerde broncode documentatie te genereren, type:

scons devDocs

De documentatie zal worden geplaatst in de NVDA map in de output directory.

Om ontwikkelaarsdocumentatie voor nvdaHelper te genereren (niet opgenomen in het devDocs-doel):

scons devDocs_nvdaHelper

De documentatie wordt geplaatst in de devDocs\nvdaHelper-map in de uitvoermap.

Genereer debug symbolen archief

Om een archief van debug symbolen voor de verschillende dll/exe binaries te genereren, type:

scons symbolsArchive

Het archief zal in de uitvoer directory geplaatst worden.

Genereer vertaalsjabloon

Om een gettext vertaalsjabloon te genereren (voor vertalers), typt u:

scons pot

De build aanpassen

Optioneel kan de build worden aangepast door variabelen op de opdrachtregel op te geven:

  • version: De versie van deze build.
  • release: Of dit een release versie is.
    • Dit maakt verschillende C++ compiler optimalisaties mogelijk, zoals /O2 en whole-program optimalisatie.
    • Het instrueert Python ook om geoptimaliseerde byte code te genereren.
  • publisher: De uitgever van deze build.
  • certFile: Het certificaatbestand waarmee uitvoerbare bestanden moeten worden ondertekend. Het certificaat moet in pfx formaat zijn en de private sleutel bevatten.
  • certPassword: Het wachtwoord voor de private sleutel in het ondertekeningscertificaat. Indien weggelaten, wordt geen wachtwoord verondersteld.
  • certTimestampServer: De URL van de tijdstempelserver die moet worden gebruikt om authenticode handtekeningen te timestampen. Indien weggelaten, worden de handtekeningen niet getimestamp.
  • outputDir: De directory waar de uiteindelijk gebouwde archieven en dergelijke worden geplaatst.
  • targetArchitectures: De doelarchitecturen die NVDA moet ondersteunen. Mogelijke waarden zijn all, x86 en x86_64. Dit zou over het algemeen de standaard waarde moeten zijn.

Om bijvoorbeeld een launcher met een specifieke versie te bouwen, zou u kunnen typen:

scons launcher version=test1

Voor meer zie het sconstruct bestand.

Het uitvoeren van geautomatiseerde tests

Als u een wijziging aanbrengt in de NVDA code, zou u NVDA’s geautomatiseerde tests moeten uitvoeren. Deze tests helpen om er zeker van te zijn dat veranderingen in de code niet onbedoeld functionaliteit afbreken die eerder wel werkte.

Om de tests uit te voeren (unit tests, translatable string checks), verander eerst de directory naar de root van de NVDA source distributie zoals hierboven.Dan, voer uit:

scons tests

Unit tests

Om alleen specifieke unit tests uit te voeren, specificeer ze met behulp van de unitTests variabele op de command line.De tests moeten worden opgegeven als een door komma’s gescheiden lijst.Elke test moet worden opgegeven als een Python module, klasse of methode relatief aan de tests\unit directory.Om bijvoorbeeld alleen methoden in de klassen TestMove en TestSelection in het bestand tests\unit\test_cursorManager.py uit te voeren, voert u dit commando uit:

scons tests unitTests=test_cursorManager.TestMove,test_cursorManager.TestSelection

Translatable string checks

Om alleen de translatable string checks uit te voeren (die controleren of alle translatable strings vertalercommentaar hebben), voert u uit:

scons checkPot

Uw wijzigingen linten

Om er zeker van te zijn dat uw wijzigingen voldoen aan NVDA’s coderingsstijl, kunt u de Flake8 linter lokaal uitvoeren.Sommige ontwikkelaars hebben bepaalde linting foutmeldingen misleidend gevonden, deze worden verduidelijkt in tests/lint/readme.md.runlint.bat zal Flake8 gebruiken om alleen de verschillen te inspecteren tussen uw werkdirectory en de gespecificeerde base branch.Als u een Pull Request aanmaakt, zou de base branch die u hier gebruikt hetzelfde moeten zijn als het doel dat u zou gebruiken voor een Pull Request. In de meeste gevallen zal dit origin/master zijn.

runlint origin/master

Om sneller gewaarschuwd te worden voor linting fouten, wilt u misschien Flake8 integreren met andere ontwikkel tools die u gebruikt.Voor meer details, zie tests/lint/readme.md

Unit Tests

Unit tests kunnen worden uitgevoerd met het rununittests.bat script.Intern gebruikt dit script het Nose Python test framework om de tests uit te voeren.Alle argumenten die worden gegeven aan rununittests.Nose’s eigen documentatie over het filteren van tests etc.

Systeemtests

Systeemtests kunnen worden uitgevoerd met het runsystemtests.bat script. Intern gebruikt dit script het Robot test framework om de tests uit te voeren. Alle argumenten gegeven aan runsystemtests.bat worden doorgestuurd naar Robot. Voor meer details (inclusief filteren en uitsluiten van tests) zie tests/system/readme.md.

Bijdragen aan NVDA

Als u code of documentatie aan NVDA wilt bijdragen, kunt u meer informatie lezen in onze gids voor bijdragen.