nvaccess / nvda

NVDA (NonVisual Desktop Access) on ilmainen, avoimen lähdekoodin näytönlukija Microsoft Windowsille.Sen on kehittänyt NV Access yhteistyössä maailmanlaajuisen osallistujayhteisön kanssa.Jos haluat lisätietoja NVDA:sta tai ladata kopion NVDA:sta, vieraile NV Accessin verkkosivulla.

Huomioi seuraavaa: NVDA-hankkeella on kansalaisille ja osallisille laaditut käytännesäännöt. NV Access odottaa, että kaikki osallistujat ja muut yhteisön jäsenet lukevat ja noudattavat tässä asiakirjassa esitettyjä sääntöjä osallistuessaan tai osallistuessaan tähän projektiin.

Hae tukea

Jos olet aloittelija, edistynyt käyttäjä, uusi tai pitkäaikainen kehittäjä, tai jos olet organisaatio, joka haluaa tietää lisää tai osallistua NVDA:n kehitykseen, voit saada tukea käytössä olevasta dokumentaatiosta sekä useista NVDA-näytönlukulaitteelle omistetuista viestintäkanavista. Tässä on katsaus tärkeimpiin tukilähteisiin.

Dokumentaatio

  • NVDA User Guide
  • NVDA Developer Guide
  • NVDA Add-ons Development Internals
  • NVDA ControllerClient manual
  • Lisäistä dokumentaatiota on tämän arkiston wikissä ja yhteisön wikissä

Viestintäkanavat

  • NVDA Users Mailing List
  • NVDA Developers Mailing List
  • NVDA Add-ons Mailing List
  • Instant Messaging channel for NVDA Support
  • Muut lähteet, kuten ryhmät ja profiilit sosiaalisen median kanavissa, kielikohtaiset verkkosivustot ja postituslistat jne.

Voit saada tukea myös suoraan NV Accessilta. Katso lisätietoja NV Accessin verkkosivuilta.

Muita tärkeitä projektilinkkejä

  • NVDA GitHubissa
  • NVDA:n ongelmat GitHubissa: Vikailmoitukset, ominaisuuspyynnöt jne.
  • NVDA-kehityksen tilannekuvat: Automaattisesti luodut buildit projektista sen tämänhetkisessä kehitysvaiheessa
  • NVDA-lisäosat: Hanki lisäosia NVDA:n parantamiseksi
  • NVDA Add-ons -koordinointi- ja tukikeskus: Kaikki NVDA:n lisäosaympäristöstä
  • NVDA Add-ons Template: Arkisto Add-ons-mallin luomista varten
  • NVDA:n kääntäminen: Tietoa NVDA:n kääntämisestä toiselle kielelle
  • NVDA Controller Client (2010-02-19): NVDA API ulkoisille sovelluksille, joilla voidaan suoraan puhua tai pistekirjoittaa viestejä jne.
  • Contributing to NVDA: Ohjeet NVDA:n lähdekoodiin osallistumisesta
  • NVDA commits -sähköpostilista: Ilmoitukset kaikista Git-tietovarastoon tehdyistä kommitoinneista
  • Vanhat sähköpostiarkistot: Sisältävät keskusteluja NVDA:n kehityksestä

Lähdekoodin hankkiminen

NVDA-projekti käyttää Git-versiohallintajärjestelmää lähdekoodiinsa ja dokumentaatioonsa.

NVDA:n Git-tietovarasto sijaitsee osoitteessa https://github.com/nvaccess/nvda.git. Voit kloonata sen seuraavalla komennolla, joka sijoittaa tiedostot hakemistoon nimeltä nvda:

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

Vaihtoehtoa --recursive tarvitaan erilaisten käyttämiemme Git-alamoduulien hakemiseen.

Riippuvuudet

NVDA:n lähdekoodi on riippuvainen useista muista paketeista toimiakseen oikein.

Asennetut riippuvuudet

Seuraavat riippuvuudet on asennettava järjestelmääsi:

  • Python, versio 3.8, 32-bittinen
    • Käytä viimeisintä pientä versiota, jos se on mahdollista.
  • Microsoft Visual Studio 2019 Community, versio 16.3 tai uudempi:
    • Lataa osoitteesta https://visualstudio.microsoft.com/vs/
    • Visual Studion asennuksen yhteydessä sinun on otettava käyttöön seuraavat toiminnot:
      • Työkuorma-välilehdellä
        • Windows-ryhmässä:
          • Työpöytäkehitys C++:lla
        • Sitten Asennustiedot-osiossa, kohdassa Työpöytä C++:lle, Valinnainen ryhmittely, varmista, että seuraavat on valittu:
          • MSVC v142 – VS 2019 C++ x64/x86 -rakentamistyökalut
          • Windows 10 SDK (10.0.19041.0)
          • C++ ATL for v142 build tools (x86 & x64)
          • C++ Clang tools for Windows
      • Varmista Yksittäiset komponentit -välilehdellä, että seuraavat kohteet on valittu:
        • MSVC v142 – VS 2019 C++ ARM64 -rakennustyökalut
        • C++ ATL for v142 -rakennustyökalut (ARM64)

Git-alimoduulit

Joissakin riippuvuussuhteissa on Git-alimoduulit.Jos et antanut --recursive-vaihtoehtoa git-kloonaukselle, sinun on suoritettava git submodule update --init.Aina kun vaaditun alamoduulin commit muuttuu (esim. git pullin jälkeen), sinun on ajettava git submodule update.Jos et ole varma, suorita git submodule update jokaisen git pullin, mergen tai checkoutin jälkeen.

Viitteeksi, seuraavat ajoaikariippuvuudet sisältyvät Git-alimoduuleihin:

  • eSpeak NG, versio 1.51-dev commit 53915bf0a
  • Sonic, commit 4f8c1d11
  • IAccessible2, commit cbc1f29631780
  • liblouis, versio 3.17.0
  • Unicode Common Locale Data Repository (CLDR), versio 38.1
  • NVDA-kuvat ja -äänet
  • Adobe Acrobatin esteettömyysrajapinta, versio XI
  • MinHook, merkitty versio 1.2.2
  • brlapi Python-sidokset, versio 0.8 tai uudempi, jaetaan BRLTTY:n Windows-versiossa 6.1
  • lilli.dll, versio 2.1.0.0
  • Python-rajapinta FTDI-ajurille/sirulle
  • Java Access Bridge 32-bittinen, Zulu Community OpenJDK build 13.0.1+10Zulu (13.28.11)

Lisäksi seuraavat rakentamisaikaiset riippuvuudet sisältyvät miscDeps git-alamoduuliin:

  • txt2tags, versio 2.5
  • Nulsoft Install System, versio 2.51
  • NSIS UAC plug-in, versio 0.2.4, ansi
  • xgettext ja msgfmt GNU gettextistä
  • Boost Optional (stand-alone header), commitista 3922965

Seuraavat riippuvuudet eivät ole useimpien ihmisten tarvitsemia, eikä niitä sisällytetä Git-alamoduuleihin:

  • Kehittäjän dokumentaation tuottaminen nvdaHelperille: Doxygen Windows-asennusohjelma, versio 1.8.15:

  • Kun käytät mieluiten Visual Studio Codea integroituna kehitysympäristönä, voit hyödyntää esitäytettyä työtilan kokoonpanoamme Visual Studio Codea varten.Vaikka tätä VSCode-projektia ei ole sisällytetty NVDA-arkistoon alamoduulina, voit helposti tarkistaa työtilan konfiguraation arkistossasi suorittamalla seuraavan komennon arkiston juuresta.

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

Python-riippuvuudet

NVDA:n ja sen rakentamisjärjestelmän riippuvuus riippuu myös laajasta luettelosta Python-paketteja. Ne on lueteltu kaikkine versioineen tämän arkiston juuressa olevassa requirements.txt-tiedostossa. Rakennusjärjestelmä huolehtii kuitenkin itse näiden hakemisesta tarvittaessa. nämä paketit asennetaan eristettyyn Python-virtuaaliympäristöön tässä arkistossa, eivätkä ne vaikuta koko järjestelmän laajuiseen pakettijoukkoon.

Lähdepuun valmistelu

Ennen kuin voit ajaa NVDA:n lähdekoodia, sinun täytyy valmistella lähdepuu. teet tämän avaamalla komentorivin, vaihtamalla NVDA:n lähdekoodijakelun juureen ja kirjoittamalla:

scons source

Tämä on syytä tehdä uudestaan aina, kun comtypesin versio muuttuu tai kielitiedostoja lisätään tai muutetaan.Huomaa, että jos haluat käyttää käyttäjädokumentaatiota ohjevalikosta lähdekoodiversiota käyttäessäsi, sinun on myös lisättävä user_docs komentoriville näin:

scons source user_docs

Kun vain testaat tai teet muutoksia, voi olla nopeampaa yleensä vain tehdä scons source, koska käyttäjädokumentaatio muuttuu aina, kun versionumero muuttuu.

NVDAHelperin kääntäminen debuggausasetuksilla

Muun muassa lähdepuun valmistelu rakentaa NVDAHelper-kirjastot.Jos yrität debugata nvdaHelperiä, voit kontrolloida erilaisia debuggausvaihtoehtoja rakentamalla komentorivimuuttujien nvdaHelperDebugFlags ja nvdaHelperLogLevel avulla.

Muuttuja nvdaHelperLogLevel määrittää haluamasi loggauksen tason (0-59), matalampi taso on tarkempi. Oletusarvo on 15.

Muuttuja nvdaHelperDebugFlags ottaa yhden tai useamman seuraavista lipuista:

  • debugCRT: kirjastot linkitetään debug C-ajoaikaa vastaan ja väitteet otetaan käyttöön. (Oletusarvoisesti käytetään normaalia CRT:tä ja väitteet ovat pois käytöstä.)
  • RTC: ajonaikaiset tarkistukset (pinon korruptoituminen, alustamattomat muuttujat jne.) otetaan käyttöön. (Oletuksena ei ole mitään ajonaikaistarkistuksia.)
  • analyze: suorittaa MSVC-koodianalyysin kaikelle nvdaHelper-koodille ja holtittuu kaikista varoituksista. (oletusarvo on ei analyysiä).

Erikoisavainsanoja none ja all voidaan käyttää myös yksittäisten lippujen sijasta.

Seuraavana esimerkkinä on esimerkki, joka ottaa käyttöön debug CRT- ja runtype-tarkastukset

scons source nvdaHelperDebugFlags=debugCRT,RTC

Symboli pdb-tiedostot tuotetaan aina rakentamisen yhteydessä debug-lippujen valinnasta riippumatta.Niitä ei kuitenkaan sisällytetä NVDA-jakeluun.sen sijaan scons symbolsArchive paketoi ne erilliseksi arkistoksi.

Buildit eivät myöskään oletusarvoisesti käytä mitään kääntäjän optimointeja.katso avainsana-argumentista release, mitä kääntäjän optimointeja se ottaa käyttöön.

Lähdekoodin ajaminen

NVDA:ta on mahdollista ajaa suoraan lähdekoodista ilman, että tarvitsee rakentaa koko binääripakettia ja launcheria.Käynnistääksesi NVDA:n lähdekoodista cmd.exe:n avulla suorita runnvda.bat arkiston juuressa.

Voidaksesi katsoa ohjeen argumenteista, joita NVDA hyväksyy, käytä -h– tai --help-ehtoa.Nämä argumentit on dokumentoitu myös käyttöoppaassa.

NVDA:n rakentaminen

NVDA:n binäärirakennetta voidaan ajaa järjestelmässä, johon ei ole asennettu Pythonia ja kaikkia muita NVDA:n riippuvuuksia (kuten teemme tilannekuvia ja julkaisuja varten).

Binääriarkistoja ja -paketteja voidaan luoda scons-ohjelmalla NVDA:n lähdekoodin lähdekoodin jakelussa olevasta juuresta. Jos haluat rakentaa mitä tahansa seuraavista, avaa komentorivi ja vaihda tähän hakemistoon.

Tehdäksesi ei-arkistoidun binäärirakennuksen (vastaa purettua siirrettävää arkistoa) kirjoita:

scons dist

Rakennus luodaan dist-hakemistoon.

Asennusohjelman rakentaminen

Luoaksesi launcher-arkiston (yksi suoritettava tiedosto, joka mahdollistaa asennuksen tai kannettavan dist:n tuottamisen), kirjoita:

scons launcher

Arkisto sijoitetaan tulostushakemistoon.

Kehittäjän dokumentaation luominen

Luoaksesi NVDA-kehittäjän oppaan, kirjoita:

scons developerGuide

Kehittäjän opas sijoitetaan tulostushakemiston devDocs-kansioon.

Luoaksesi HTML-pohjaisen lähdekoodin dokumentaation, kirjoita:

scons devDocs

Dokumentaatio sijoitetaan tulostushakemiston NVDA-kansioon.

Kehittäjädokumentaation tuottamiseksi nvdaHelperille (ei sisälly devDocs-kohteeseen):

scons devDocs_nvdaHelper

Dokumentaatio sijoitetaan tulostushakemiston devDocs\nvdaHelper-kansioon.

Luo virheenkorjaussymbolien arkisto

Luoaksesi arkiston virheenkorjaussymboleista eri dll/exe-binääreille kirjoita:

scons symbolsArchive

Arkisto sijoitetaan tulostushakemistoon.

Käännösmallin luominen

Luoaksesi gettext-käännösmallin (kääntäjiä varten), kirjoita:

scons pot

Rakennuksen mukauttaminen

Vaihtoehtoisesti rakennusta voidaan mukauttaa antamalla muuttujia komentorivillä:

  • version: Tämän buildin versio.
  • release: Onko kyseessä julkaisuversio.
    • Tämä mahdollistaa erilaiset C++-kääntäjän optimoinnit, kuten /O2 ja koko ohjelman optimoinnin.
    • Se myös ohjeistaa Pythonia tuottamaan optimoitua tavukoodia.
  • publisher: Tämän buildin julkaisija.
  • certFile: Varmentetiedosto, jolla suoritettavat tiedostot allekirjoitetaan. Varmenteen on oltava pfx-muodossa ja sen on sisällettävä yksityinen avain.
  • certPassword: Allekirjoitusvarmenteen yksityisen avaimen salasana. Jos se jätetään pois, salasanaa ei oleteta.
  • certTimestampServer: Aikaleimauspalvelimen URL-osoite, jota käytetään autenttisten allekirjoitusten aikaleimaamiseen. Jos se jätetään pois, allekirjoituksia ei aikaleimataan.
  • outputDir: Hakemisto, johon lopulliset rakennetut arkistot ja vastaavat sijoitetaan.
  • targetArchitectures: Kohdearkkitehtuurit, joita NVDA:n tulisi tukea. Mahdollisia arvoja ovat all, x86 ja x86_64. Tämä kannattaa yleensä jättää oletusarvoksi.

Voit esimerkiksi rakentaa launcherin tietyllä versiolla kirjoittamalla:

scons launcher version=test1

Lisäksi katso sconstruct-tiedosto.

Automaattisten testien suorittaminen

Jos teet muutoksia NVDA:n koodiin, sinun kannattaa suorittaa NVDA:n automaattiset testit.Nämä testit auttavat varmistamaan, että koodimuutokset eivät vahingossa katkaise toiminnallisuutta, joka on toiminut aiemmin.

Testien suorittamiseksi (yksikkötestit, käännettävien merkkijonojen tarkistukset) vaihda ensin hakemisto NVDA:n lähdejakelun juurihakemistoon kuten edellä.Suorita sitten:

scons tests

Yksikkötestit

Jos haluat suorittaa vain tiettyjä yksikkötestejä, määrittele ne komentorivin unitTests-muuttujan unitTests avulla.Testit tulee antaa pilkulla erotettuna listana.Kukin testi tulee määritellä Python-moduulina, -luokkana tai -metodina suhteutettuna tests\unit-hakemistoon.Jos haluat esimerkiksi ajaa vain TestMove– ja TestSelection-luokkien metodit tiedostossa tests\unit\test_cursorManager.py, suorita tämä komento:

scons tests unitTests=test_cursorManager.TestMove,test_cursorManager.TestSelection

Käännettävien merkkijonojen tarkistukset

Jos haluat ajaa vain käännettävien merkkijonojen tarkistukset (jotka tarkistavat, että kaikissa käännettävissä merkkijonoissa on kääntäjäkommentit), suorita:

scons checkPot

Linting your changes

Voidaksesi varmistaa, että muutoksesi ovat NVDA:n koodaustyylin mukaisia, voit ajaa Flake8-lintterin paikallisesti.Jotkut kehittäjät ovat pitäneet tiettyjä linting-virheilmoituksia harhaanjohtavina, nämä on selvitetty kohdassa tests/lint/readme.md.runlint.bat käyttää Flake8:a tarkastamaan vain erot työhakemistosi ja määritellyn base-haaran välillä.Jos luot Pull Requestin, tässä käyttämäsi base-haaran pitäisi olla sama kuin kohde, jota käyttäisit Pull Requestissa. Useimmissa tapauksissa se on origin/master.

runlint origin/master

Voidaksesi saada varoituksen linting-virheistä nopeammin, saatat haluta integroida Flake8:n muihin käyttämiisi kehitystyökaluihin.Lisätietoja on kohdassa tests/lint/readme.md

Yksikkötestit

Yksikkötestejä voidaan ajaa skriptillä rununittests.bat.Sisäisesti tämä skripti käyttää testien suorittamiseen Nose Python -testauskehystä.Kaikki argumentit, jotka annat komennolle rununittests.bat:lle annetut argumentit välitetään Nose:lle.Tutustu Nosen omaan dokumentaatioon testien suodattamisesta jne.

Järjestelmätestit

Järjestelmätestejä voidaan ajaa skriptillä runsystemtests.bat.Sisäisesti tämä skripti käyttää Robotin testikehystä testien suorittamiseen.Kaikki argumentit, jotka annetaan komennolle runsystemtests.bat, välitetään Robotille.Tarkempia yksityiskohtia (mukaan lukien testien suodattaminen ja poissulkeminen) on kohdassa tests/system/readme.md.

NVDA:n tukeminen

Jos haluat osallistua NVDA:n koodin tai dokumentaation tuottamiseen, voit lukea lisätietoja oppaasta.