nvaccess / nvda

NVDA (NonVisual Desktop Access) er en gratis open source skærmlæser til Microsoft Windows.Den er udviklet af NV Access i samarbejde med et globalt fællesskab af bidragydere.Hvis du vil vide mere om NVDA eller downloade et eksemplar, kan du besøge NV Access’s hovedwebsted.

Bemærk venligst: NVDA-projektet har en adfærdskodeks for borgere og bidragydere. NV Access forventer, at alle bidragydere og andre medlemmer af fællesskabet læser og overholder reglerne i dette dokument, når de deltager eller bidrager til dette projekt.

Få support

Hvis du er nybegynder, avanceret bruger, ny eller gammel udvikler, eller hvis du er en organisation, der ønsker at vide mere eller bidrage til NVDA, kan du få support gennem den eksisterende dokumentation samt flere kommunikationskanaler, der er dedikeret til NVDA-skærmlæseren. Her er en oversigt over de vigtigste supportkilder.

Dokumentation

  • NVDA-brugervejledning
  • NVDA-udviklervejledning
  • NVDA Add-ons Development Internals
  • NVDA ControllerClient manual
  • Der findes yderligere dokumentation i Wiki’en for dette arkiv og i Community Wiki

Kommunikationskanaler

  • NVDA Users Mailing List
  • NVDA Developers Mailing List
  • NVDA Add-ons Mailing List
  • Instant Messaging-kanal for NVDA Support
  • Andre kilder, herunder grupper og profiler på sociale mediekanaler, sprogspecifikke websteder og mailinglister osv.

Du kan også få direkte support fra NV Access. Se NV Access-webstedet for flere oplysninger.

Andre vigtige projektlinks

  • NVDA på GitHub
  • NVDA-emner på GitHub: Fejlrapporter, anmodninger om funktioner osv.
  • NVDA-udviklings-snapshots: Automatisk genererede builds af projektet i dets aktuelle udviklingstilstand
  • NVDA-tilføjelser: NVDA-tilføjelser: Få add-ons til at forbedre NVDA
  • NVDA Add-ons koordinations- og supportcenter: Alt om NVDA’s addons-miljø
  • NVDA Add-ons Template: Et arkiv til generering af skabelonen for tilføjelser
  • Oversættelse af NVDA: Oplysninger om, hvordan man oversætter NVDA til et andet sprog
  • NVDA Controller Client (2010-02-19): NVDA Controller Client (2010-02-19): NVDA API for eksterne programmer til direkte at tale eller braille beskeder osv.
  • Bidrag til NVDA: Guidelines for contributing to the NVDA source code
  • NVDA commits email list: Notifikationer om alle kommits til Git-repositoriet
  • Gamle e-mail-arkiver: Indeholder diskussioner om NVDA-udvikling

Få fat i kildekoden

NVDA-projektet bruger Git-versionskontrolsystemet til kildekode og dokumentation.

NVDA Git-repositoriet er placeret på https://github.com/nvaccess/nvda.git. Du kan klone det med følgende kommando, som placerer filer i en mappe med navnet nvda:

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

Optionen --recursive er nødvendig for at hente forskellige Git-submoduler, som vi bruger.

Afhængigheder

NVDA-kilden er afhængig af flere andre pakker for at køre korrekt.

Installerede afhængigheder

De følgende afhængigheder skal være installeret på dit system:

  • Python, version 3.8, 32 bit
    • Brug om muligt den seneste mindre version.
  • Microsoft Visual Studio 2019 Community, version 16.3 eller nyere:
    • Download fra https://visualstudio.microsoft.com/vs/
    • Når du installerer Visual Studio, skal du aktivere følgende:
      • På fanen Arbejdsbelastninger
        • i gruppen Windows:
          • Desktopudvikling med C++
        • Så skal du i afsnittet Installationsdetaljer under Desktop for C++, valgfri gruppering, sikre dig, at følgende er valgt:
          • MSVC v142 – VS 2019 C++ x64/x86 build tools
          • Windows 10 SDK (10.0.19041.0)
          • C++ ATL for v142 build-værktøjer (x86 & x64)
          • C++ Clang-værktøjer til Windows
    • Under fanen Individuelle komponenter skal du sikre, at følgende elementer er valgt:
      • MSVC v142 – VS 2019 C++ ARM64 build tools
      • C++ ATL for v142 build tools (ARM64)

Git Submodules

Nogle af afhængighederne er indeholdt i Git-submoduler.Hvis du ikke har overgivet indstillingen --recursive til git clone, skal du køre git submodule update --init.Når et påkrævet undermodul commit ændres (f.eks. efter git pull), skal du køre git submodule update Hvis du ikke er sikker, skal du køre git submodule update efter hvert git pull, merge eller checkout.

Til reference er følgende køretidsafhængigheder inkluderet i Git-submoduler:

  • eSpeak NG, version 1.51-dev commit 53915bf0a
  • Sonic, commit 4f8c1d11
  • IAccessible2, commit cbc1f29631780
  • liblouis, version 3.17.0
  • Unicode Common Locale Data Repository (CLDR), version 38.1
  • NVDA-billeder og -lyde
  • Adobe Acrobat-tilgængelighedsgrænseflade, version XI
  • MinHook, tagget version 1.2.2
  • brlapi Python-bindinger, version 0.8 eller nyere, distribueret med BRLTTY til Windows, version 6.1
  • lilli.dll, version 2.1.0.0.0
  • Python-interface til FTDI-driver/chip
  • Java Access Bridge 32 bit, fra Zulu Community OpenJDK build 13.0.1.1+10Zulu (13.28.11)

Dertil kommer følgende afhængigheder på byggetidspunktet i miscDeps git-submodulet:

  • txt2tags, version 2.5
  • Nulsoft Install System, version 2.51
  • NSIS UAC plug-in, version 0.2.4, ansi
  • xgettext og msgfmt fra GNU gettext
  • Boost Optional (stand-alone header), fra commit 3922965

De følgende afhængigheder er ikke nødvendige for de fleste mennesker og er ikke inkluderet i Git-submoduler:

  • For at generere udviklerdokumentation til nvdaHelper: Doxygen Windows-installationsprogram, version 1.8.15:

  • Når du bruger Visual Studio Code som dit foretrukne integrerede udviklingsmiljø, kan du gøre brug af vores forudfyldte arbejdsrumskonfiguration for Visual Studio Code.Selv om dette VSCode-projekt ikke er inkluderet som et undermodul i NVDA-repositoriet, kan du nemt tjekke arbejdsplads-konfigurationen i dit repositorium ved at udføre følgende fra roden af repositoriet.

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

Python-afhængigheder

NVDA og dets buildsystem er også afhængige af en omfattende liste af Python-pakker. De er alle anført med deres specifikke versioner i en requirements.txt-fil i roden af dette arkiv. Byggesystemet sørger dog selv for at hente disse, når der er behov for det. disse pakker vil blive installeret i et isoleret virtuelt Python-miljø i dette arkiv og vil ikke påvirke dit systemdækkende sæt af pakker.

Forberedelse af kildetræet

Hvor du kan køre NVDA-kildekoden, skal du forberede kildetræet. det gør du ved at åbne en kommandoprompt, skifte til roden af NVDA-kildedistributionen og skrive:

scons source

Du skal gøre dette igen, hver gang versionen af comtypes ændres eller sprogfiler tilføjes eller ændres.Bemærk, at hvis du vil have adgang til brugerdokumentation fra hjælpemenuen, mens du kører kildekodeversionen, skal du også tilføje user_docs til kommandolinjen på følgende måde:

scons source user_docs

Mens du blot tester eller overfører ændringer, kan det normalt være hurtigere blot at gøre scons source, da brugerdokumentation ændres hver gang revisionsnummeret ændres.

Kompilering af NVDAHelper med fejlfindingsindstillinger

I forbindelse med forberedelse af kildetræet bygges NVDAHelper-bibliotekerne. hvis du forsøger at fejlfinde nvdaHelper, kan du styre forskellige fejlfindingsindstillinger ved at bygge med kommandolinjevariablene nvdaHelperDebugFlags og nvdaHelperLogLevel.

Variablen nvdaHelperLogLevel angiver det niveau af logning (0-59), du ønsker at se, lavere er mere udførlig. Standardværdien er 15.

Variablen nvdaHelperDebugFlags tager et eller flere af følgende flag:

  • debugCRT: bibliotekerne vil blive linket mod debug C runtime, og assertions vil blive aktiveret. (Som standard anvendes den normale CRT, og assertions er deaktiveret.)
  • RTC: Køretidskontroller (stakkorruption, uinitialiserede variabler osv.) vil blive aktiveret. (Standard er ingen runtime checks.)
  • analyze: kører MSVC-kodeanalyse på al nvdaHelper-kode og holder på enhver advarsel. (standard er ingen analyse).

De specielle nøgleord none og all kan også bruges i stedet for de enkelte flag.

Der følger et eksempel, der aktiverer debug CRT- og runtype-kontroller

scons source nvdaHelperDebugFlags=debugCRT,RTC

Symbol-pdb-filer produceres altid ved opbygning, uanset debug-flagene.De er dog ikke inkluderet i NVDA-distributionen.I stedet vil scons symbolsArchive pakke dem som et separat arkiv.

Som standard bruger builds heller ikke nogen compileroptimeringer.Se venligst release nøgleordargumentet for hvilke compileroptimeringer det vil aktivere.

Kørsel af kildekoden

Det er muligt at køre NVDA direkte fra kildekoden uden at skulle bygge den fulde binære pakke og launcher.Hvis du vil starte NVDA fra kildekoden ved hjælp af cmd.exe, skal du udføre runnvda.bat i roden af arkivet.

For at få vist hjælp til de argumenter, som NVDA accepterer, skal du bruge -h eller --help-indstillingen.Disse argumenter er også dokumenteret i brugervejledningen.

Opbygning af NVDA

Et binært build af NVDA kan køres på et system uden Python og alle NVDA’s andre afhængigheder installeret (som vi gør for snapshots og udgivelser).

Binære arkiver og bundles kan oprettes ved hjælp af scons fra roden af NVDA-kildedistributionen. Hvis du vil bygge noget af følgende, skal du åbne en kommandoprompt og skifte til denne mappe.

For at lave et ikke-arkiveret binært build (svarende til et udpakket bærbart arkiv) skal du skrive:

scons dist

Builden oprettes i mappen dist.

Opbygning af installationsprogrammet

For at oprette et launcher-arkiv (en eksekverbar fil, der giver mulighed for installation eller generering af bærbar dist), skal du skrive:

scons launcher

Arkivet placeres i outputmappen.

Opbygning af udviklerdokumentation

For at generere NVDA-udviklervejledningen skal du skrive:

scons developerGuide

Udviklervejledningen placeres i mappen devDocs i outputmappen.

For at generere den HTML-baserede kildekodedokumentation skal du skrive:

scons devDocs

Dokumentationen placeres i mappen NVDA i outputmappen.

For at generere udviklerdokumentation for nvdaHelper (ikke inkluderet i devDocs-målet):

scons devDocs_nvdaHelper

Dokumentationen placeres i mappen devDocs\nvdaHelper i outputmappen.

Generer arkiv med fejlsøgningssymboler

For at generere et arkiv med fejlsøgningssymboler for de forskellige dll/exe-binarier skal du skrive:

scons symbolsArchive

Arkivet vil blive placeret i outputmappen.

Generer oversættelsesskabelon

For at generere en gettext-oversættelsesskabelon (til oversættere), skriv:

scons pot

Tilpasning af build

Optionelt kan buildet tilpasses ved at angive variabler på kommandolinjen:

  • version:
  • release: Den version af dette build.
  • release: Om dette er en udgivelsesversion.
    • Dette aktiverer forskellige C++ compileroptimeringer såsom /O2 og optimering af hele programmer.
    • Det instruerer også Python om at generere optimeret bytekode.
  • publisher: Udgiveren af dette build.
  • certFile: Den certifikatfil, hvormed eksekverbare filer skal signeres. Certifikatet skal være i pfx-format og indeholde den private nøgle.
  • certPassword: Adgangskoden til den private nøgle i signeringscertifikatet. Hvis udeladt, antages der ingen adgangskode.
  • certTimestampServer: URL-adressen for den tidsstemplingsserver, der skal bruges til at tidsstemple autenticodesignaturer. Hvis udeladt, vil signaturerne ikke blive tidsstemplet.
  • outputDir: Den mappe, hvor de endelige byggede arkiver og lignende vil blive placeret.
  • targetArchitectures: De målarkitekturer, som NVDA skal understøtte. Mulige værdier er all, x86 og x86_64. Dette bør generelt efterlades som standard.

For eksempel kan du for at bygge en launcher med en bestemt version skrive:

scons launcher version=test1

For mere se sconstruct-filen.

Kørsel af automatiserede tests

Hvis du foretager en ændring i NVDA-koden, bør du køre NVDA’s automatiserede tests.Disse tests er med til at sikre, at kodeændringer ikke utilsigtet ødelægger funktionalitet, der tidligere fungerede.

For at køre testene (enhedstest, kontrol af oversættelige strenge) skal du først skifte mappe til roden af NVDA-kildedistributionen som ovenfor. kør derefter:

scons tests

Enhedstest

For kun at køre specifikke enhedstest skal du angive dem ved hjælp af variablen unitTests på kommandolinjen. testene skal angives som en kommasepareret liste. hver test skal angives som et Python-modul, en klasse eller en metode relativt til mappen tests\unit.Hvis du f.eks. kun vil køre metoder i klasserne TestMove og TestSelection i filen tests\unit\test_cursorManager.py, skal du køre denne kommando:

scons tests unitTests=test_cursorManager.TestMove,test_cursorManager.TestSelection

Kontroller af oversættelige strenge

Hvis du kun vil køre kontrollerne af oversættelige strenge (som kontrollerer, at alle oversættelige strenge har oversætterkommentarer), skal du køre:

scons tests unitTests=test_cursorManager.TestMove,test_cursorManager.TestSelection

Kontroller af oversættelige strenge

:

scons checkPot

Linting af dine ændringer

For at sikre, at dine ændringer er i overensstemmelse med NVDA’s kodningsstil, kan du køre Flake8-linteren lokalt.Nogle udviklere har fundet visse lintingfejlmeddelelser misvisende, disse er præciseret i tests/lint/readme.md. runlint.bat vil bruge Flake8 til kun at inspicere forskellene mellem din arbejdskatalog og den angivne base-gren. hvis du opretter en Pull Request, skal den base-gren du bruger her være den samme som det mål, du ville bruge til en Pull Request. I de fleste tilfælde vil det være origin/master.

runlint origin/master

For hurtigere at blive advaret om lintingfejl kan du med fordel integrere Flake8 andre udviklingsværktøjer, du bruger. for flere oplysninger, se tests/lint/readme.md

Enhedstests

Enhedstests kan køres med scriptet rununittests.bat. internt bruger dette script Nose Python-testrammen til at udføre testene. alle argumenter, der er givet til rununittests.bat videresendes til Nose.Se Nose’s egen dokumentation om, hvordan man filtrerer test osv..

Systemtests

Systemtests kan køres med scriptet runsystemtests.bat.Internt bruger dette script Robot-testrammen til at udføre testene.Alle argumenter, der gives til runsystemtests.bat, videresendes til Robot.For flere detaljer (herunder filtrering og udelukkelse af test) se tests/system/readme.md.

Bidrag til NVDA

Hvis du gerne vil bidrage med kode eller dokumentation til NVDA, kan du læse mere information i vores vejledning om bidrag.