├── tests ├── __init__.py ├── unit │ ├── test_util │ │ ├── __init__.py │ │ └── test_displayString.py │ ├── contentRecog │ │ └── __init__.py │ ├── test_appModules │ │ └── __init__.py │ ├── test_braille │ │ └── __init__.py │ ├── test_synthDrivers │ │ └── __init__.py │ ├── test_addonHandler │ │ └── __init__.py │ ├── test_winAPI │ │ └── __init__.py │ ├── test_checkPot │ │ ├── expectedErrors.pot │ │ ├── unexpectedSuccesses.pot │ │ ├── firstMessage.pot │ │ └── lastMessage.pot │ ├── test_excel.py │ ├── test_nvwave.py │ ├── test_tones.py │ ├── test_brailleTables.py │ └── test_bdDetect.py ├── system │ ├── .gitignore │ ├── guiDiff.robot │ ├── robotArgs.robot │ ├── settingsCache │ │ └── 2020.4 │ │ │ ├── Review Cursor.txt │ │ │ ├── Input Composition.txt │ │ │ ├── Mouse.txt │ │ │ ├── Vision.txt │ │ │ ├── Object Presentation.txt │ │ │ ├── Keyboard.txt │ │ │ ├── Browse Mode.txt │ │ │ ├── Speech.txt │ │ │ ├── General.txt │ │ │ └── Braille.txt │ ├── nvdaSettingsFiles │ │ ├── standard-doShowWelcomeDialog.ini │ │ ├── standard-dontShowExitDialog.ini │ │ └── standard-dontShowWelcomeDialog.ini │ └── libraries │ │ └── SystemTestSpy │ │ └── __init__.py ├── lint │ └── .gitignore ├── manual │ └── README.md └── sconscript ├── nvdaHelper ├── liblouis │ └── config.h ├── vbufBase │ └── sconscript ├── espeak │ └── config.h ├── COMProxy.manifest.subst ├── local │ ├── UIAUtils.h │ ├── rpcSrv.h │ ├── beeps.h │ ├── UIAUtils.cpp │ └── nvdaHelperLocal.h ├── microsoft-ui-uiautomation │ └── Microsoft.UI.UIAutomation.dll.manifest ├── detours │ └── sconscript ├── nvda.rc.subst ├── interfaces │ ├── vbuf │ │ └── vbuf.acf │ ├── displayModel │ │ └── displayModel.acf │ └── nvdaController │ │ └── nvdaController.acf ├── remote │ ├── inProcess.h │ ├── nvdaHelperRemote.def │ ├── winword.h │ ├── rpcSrv.h │ ├── nvdaController.cpp │ ├── ia2LiveRegions.h │ ├── typedCharacter.h │ ├── tsf.h │ ├── dllmain.h │ ├── ime.h │ └── inputLangChange.h ├── vbufBackends │ ├── webKit │ │ └── sconscript │ ├── gecko_ia2 │ │ └── sconscript │ ├── lotusNotesRichText │ │ └── sconscript │ ├── mshtml │ │ └── sconscript │ └── adobeAcrobat │ │ └── sconscript ├── client │ └── nvdaControllerClient.def ├── acrobatAccess_sconscript └── remoteLoader │ ├── sconscript │ └── loader.cpp ├── source ├── utils │ ├── __init__.py │ └── caseInsensitiveCollections.py ├── comInterfaces │ ├── __init__.py │ ├── UIAutomationClient.py │ └── readme.md ├── globalPlugins │ └── __init__.py ├── synthDrivers │ ├── __init__.py │ ├── mssp.py │ └── silence.py ├── autoSettingsUtils │ └── __init__.py ├── brailleDisplayDrivers │ ├── __init__.py │ ├── eurobraille │ │ └── __init__.py │ ├── albatross │ │ └── __init__.py │ └── noBraille.py ├── visionEnhancementProviders │ └── __init__.py ├── waves │ ├── exit.wav │ ├── error.wav │ ├── start.wav │ ├── focusMode.wav │ ├── textError.wav │ ├── browseMode.wav │ ├── screenCurtainOff.wav │ ├── screenCurtainOn.wav │ ├── suggestionsClosed.wav │ └── suggestionsOpened.wav ├── images │ ├── nvda.ico │ └── nvda.svg ├── locale │ ├── zh_CN │ │ └── gestures.ini │ ├── de_CH │ │ └── characterDescriptions.dic │ ├── hi │ │ └── symbols.dic │ ├── bg │ │ └── gestures.ini │ ├── cs │ │ ├── gestures.ini │ │ └── characterDescriptions.dic │ ├── hu │ │ ├── gestures.ini │ │ └── characterDescriptions.dic │ ├── sk │ │ ├── gestures.ini │ │ └── characterDescriptions.dic │ ├── sl │ │ ├── gestures.ini │ │ └── characterDescriptions.dic │ ├── log.txt │ ├── pt_BR │ │ ├── gestures.ini │ │ └── characterDescriptions.dic │ ├── so │ │ └── characterDescriptions.dic │ ├── fa │ │ ├── gestures.ini │ │ └── characterDescriptions.dic │ ├── tr │ │ ├── characterDescriptions.dic │ │ └── gestures.ini │ ├── da │ │ ├── characterDescriptions.dic │ │ └── gestures.ini │ ├── is │ │ └── characterDescriptions.dic │ ├── kok │ │ └── characterDescriptions.dic │ ├── ca │ │ └── characterDescriptions.dic │ ├── fi │ │ ├── characterDescriptions.dic │ │ └── gestures.ini │ ├── es_CO │ │ ├── characterDescriptions.dic │ │ └── gestures.ini │ ├── gl │ │ └── characterDescriptions.dic │ ├── fr │ │ └── characterDescriptions.dic │ ├── es │ │ └── characterDescriptions.dic │ ├── an │ │ ├── characterDescriptions.dic │ │ └── gestures.ini │ ├── as │ │ └── characterDescriptions.dic │ ├── pt_PT │ │ └── characterDescriptions.dic │ ├── sv │ │ └── characterDescriptions.dic │ ├── en │ │ └── characterDescriptions.dic │ ├── ky │ │ └── characterDescriptions.dic │ ├── my │ │ └── characterDescriptions.dic │ ├── nb_NO │ │ └── characterDescriptions.dic │ ├── nn_NO │ │ └── characterDescriptions.dic │ ├── sq │ │ └── characterDescriptions.dic │ ├── mni │ │ └── characterDescriptions.dic │ ├── ru │ │ ├── gestures.ini │ │ └── characterDescriptions.dic │ ├── uk │ │ └── characterDescriptions.dic │ ├── de │ │ ├── characterDescriptions.dic │ │ └── gestures.ini │ ├── ka │ │ └── characterDescriptions.dic │ ├── mn │ │ └── characterDescriptions.dic │ ├── ga │ │ └── characterDescriptions.dic │ ├── nl │ │ └── characterDescriptions.dic │ ├── kmr │ │ └── characterDescriptions.dic │ ├── pl │ │ └── characterDescriptions.dic │ ├── ro │ │ └── characterDescriptions.dic │ ├── hr │ │ └── characterDescriptions.dic │ ├── he │ │ └── characterDescriptions.dic │ ├── ar │ │ ├── gestures.ini │ │ └── characterDescriptions.dic │ ├── bn │ │ └── characterDescriptions.dic │ ├── kn │ │ └── characterDescriptions.dic │ ├── lt │ │ └── characterDescriptions.dic │ ├── gu │ │ └── characterDescriptions.dic │ ├── pa │ │ └── characterDescriptions.dic │ ├── sr │ │ └── characterDescriptions.dic │ ├── te │ │ └── characterDescriptions.dic │ ├── mk │ │ └── characterDescriptions.dic │ ├── ckb │ │ └── characterDescriptions.dic │ └── ml │ │ └── characterDescriptions.dic ├── fonts │ ├── FreeMono-FixedBraille.ttf │ ├── freefont-20100919-ttf │ │ ├── FreeMono.ttf │ │ ├── FreeSans.ttf │ │ ├── FreeSerif.ttf │ │ ├── FreeMonoBold.ttf │ │ ├── FreeSansBold.ttf │ │ ├── FreeSerifBold.ttf │ │ ├── FreeMonoOblique.ttf │ │ ├── FreeSansOblique.ttf │ │ ├── FreeSerifItalic.ttf │ │ ├── FreeMonoBoldOblique.ttf │ │ ├── FreeSansBoldOblique.ttf │ │ └── FreeSerifBoldItalic.ttf │ └── readme.md ├── COMRegistrationFixes │ └── oleaccProxy.reg ├── appModules │ ├── doctts.py │ ├── dosvox.py │ ├── mintty.py │ ├── cicero.py │ ├── aim.py │ ├── obu.py │ ├── skype.py │ ├── egui.py │ ├── esysuite.py │ ├── mplayerc.py │ ├── lockapphost.py │ ├── zoom.py │ ├── audacity.py │ ├── webconferenceplugin.py │ ├── 1password.py │ ├── symphony.py │ ├── microsoftedge.py │ ├── instantbird.py │ ├── teamtalk4classic.py │ ├── code.py │ ├── fastlogentry.py │ ├── ttermpro.py │ ├── thunderbird.py │ ├── dllhost.py │ ├── securecrt.py │ └── microsoftedgecp.py ├── winAPI │ ├── __init__.py │ ├── winUser │ │ ├── __init__.py │ │ └── functions.py │ ├── types.py │ └── constants.py ├── addonStore │ ├── __init__.py │ └── models │ │ └── __init__.py ├── gui │ └── addonStoreGui │ │ ├── controls │ │ └── __init__.py │ │ ├── viewModels │ │ └── __init__.py │ │ └── __init__.py ├── builtin.dic ├── NVDAObjects │ ├── IAccessible │ │ ├── akelEdit.py │ │ ├── scintilla.py │ │ ├── delphi.py │ │ └── SysMonthCal32.py │ └── UIA │ │ └── anaheimEdge.py ├── exceptions.py ├── vision │ ├── exceptions.py │ ├── providerInfo.py │ ├── constants.py │ └── __init__.py ├── speech │ └── extensions.py ├── RPCConstants.py ├── monkeyPatches │ ├── __init__.py │ └── wxMonkeyPatches.py ├── objbase.py ├── brailleViewer │ └── brailleViewerInputGesture.py ├── config │ └── aggregatedSection.py ├── nvdaBuiltin.py ├── controlTypes │ ├── descriptionFrom.py │ └── outputReason.py ├── message.html ├── IAccessibleHandler │ └── types.py ├── hwIo │ └── __init__.py └── sourceEnv.py ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ └── feature_request.md ├── FUNDING.yml ├── ISSUE_TEMPLATE.md └── CONTRIBUTING.md ├── extras └── controllerClient │ └── examples │ ├── example_rust │ ├── .gitignore │ ├── src │ │ └── bindgen.rs │ ├── readme.md │ └── cargo.toml │ └── example_csharp │ ├── .gitignore │ ├── NVAccess.NVDA.csproj │ └── SymbolLevel.cs ├── projectDocs ├── .gitignore ├── dev │ ├── developerGuide │ │ └── index.rst │ └── buildingDevDocumentation.md ├── design │ ├── displayModel.md │ └── synthesizers.md ├── issues │ └── readme.md └── testing │ └── readme.md ├── user_docs ├── vi │ └── locale.t2tconf ├── bg │ └── locale.t2tconf ├── cs │ └── locale.t2tconf ├── da │ └── locale.t2tconf ├── de │ └── locale.t2tconf ├── en │ └── locale.t2tconf ├── es │ └── locale.t2tconf ├── fi │ └── locale.t2tconf ├── fr │ └── locale.t2tconf ├── ga │ └── locale.t2tconf ├── gl │ └── locale.t2tconf ├── he │ └── locale.t2tconf ├── hr │ └── locale.t2tconf ├── it │ └── locale.t2tconf ├── ja │ └── locale.t2tconf ├── nl │ └── locale.t2tconf ├── pl │ └── locale.t2tconf ├── ro │ └── locale.t2tconf ├── ru │ └── locale.t2tconf ├── sk │ └── locale.t2tconf ├── sl │ └── locale.t2tconf ├── sr │ └── locale.t2tconf ├── ta │ └── locale.t2tconf ├── tr │ └── locale.t2tconf ├── uk │ └── locale.t2tconf ├── userGuide.t2tconf ├── pt_BR │ └── locale.t2tconf ├── pt_PT │ └── locale.t2tconf ├── zh_CN │ └── locale.t2tconf ├── zh_TW │ └── locale.t2tconf ├── th │ └── key commands.txt ├── sv │ └── changes.t2t ├── ca │ └── locale.t2tconf ├── changes.t2tconf └── global.t2tconf ├── appveyor ├── ssh_id_rsa.enc ├── authenticode.pfx.enc ├── scripts │ ├── tests │ │ ├── checkTestFailure.ps1 │ │ ├── translationCheck.ps1 │ │ └── unitTests.ps1 │ ├── uploadArtifacts.ps1 │ ├── pushPackagingInfo.ps1 │ ├── buildSymbolStore.ps1 │ ├── decryptFilesForSigning.ps1 │ ├── setSconsArgs.ps1 │ └── logCiTiming.ps1 └── ssh_known_hosts ├── appx └── appx_images │ ├── nvda_44x44.png │ └── nvda_150x150.png ├── runnvda.bat ├── scons.bat ├── .gitattributes ├── runsettingsdiff.bat ├── runsystemtests.bat ├── venvUtils └── exportPackageList.bat ├── rununittests.bat ├── .vsconfig ├── cldrDict_sconscript ├── runlint.bat ├── requirements.txt ├── site_scons └── site_tools │ ├── gettextTool.py │ └── t2t.py └── .gitignore /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /nvdaHelper/liblouis/config.h: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/comInterfaces/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/globalPlugins/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/synthDrivers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/test_util/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/autoSettingsUtils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/contentRecog/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/test_appModules/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/test_braille/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/brailleDisplayDrivers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/system/.gitignore: -------------------------------------------------------------------------------- 1 | nvdaProfile/ 2 | -------------------------------------------------------------------------------- /tests/unit/test_synthDrivers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/visionEnhancementProviders/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /tests/lint/.gitignore: -------------------------------------------------------------------------------- 1 | current.diff 2 | current.lint 3 | _lint.diff 4 | -------------------------------------------------------------------------------- /extras/controllerClient/examples/example_rust/.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /projectDocs/.gitignore: -------------------------------------------------------------------------------- 1 | _build/ 2 | *.rst 3 | !index.rst 4 | developerGuide.html 5 | -------------------------------------------------------------------------------- /user_docs/vi/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ -------------------------------------------------------------------------------- /user_docs/bg/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/cs/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/da/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/de/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/en/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/es/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/fi/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/fr/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/ga/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/gl/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/he/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/hr/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/it/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/ja/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/nl/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/pl/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/ro/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/ru/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/sk/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/sl/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/sr/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/ta/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/tr/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/uk/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/userGuide.t2tconf: -------------------------------------------------------------------------------- 1 | %!includeconf: global.t2tconf 2 | 3 | %!Options: --toc 4 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: nvaccess 2 | custom: "https://www.nvaccess.org/support-us" 3 | -------------------------------------------------------------------------------- /source/waves/exit.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/waves/exit.wav -------------------------------------------------------------------------------- /user_docs/pt_BR/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/pt_PT/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/zh_CN/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /user_docs/zh_TW/locale.t2tconf: -------------------------------------------------------------------------------- 1 | %!PostProc(html): ^$ 2 | -------------------------------------------------------------------------------- /appveyor/ssh_id_rsa.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/appveyor/ssh_id_rsa.enc -------------------------------------------------------------------------------- /extras/controllerClient/examples/example_csharp/.gitignore: -------------------------------------------------------------------------------- 1 | .vs 2 | bin 3 | obj 4 | *.sln 5 | -------------------------------------------------------------------------------- /source/images/nvda.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/images/nvda.ico -------------------------------------------------------------------------------- /source/waves/error.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/waves/error.wav -------------------------------------------------------------------------------- /source/waves/start.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/waves/start.wav -------------------------------------------------------------------------------- /source/locale/zh_CN/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | kb:applications = kb:'+nvda 3 | -------------------------------------------------------------------------------- /source/waves/focusMode.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/waves/focusMode.wav -------------------------------------------------------------------------------- /source/waves/textError.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/waves/textError.wav -------------------------------------------------------------------------------- /tests/unit/test_addonHandler/__init__.py: -------------------------------------------------------------------------------- 1 | """Set of unit tests for the `addonhandler` module.""" 2 | -------------------------------------------------------------------------------- /source/waves/browseMode.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/waves/browseMode.wav -------------------------------------------------------------------------------- /appveyor/authenticode.pfx.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/appveyor/authenticode.pfx.enc -------------------------------------------------------------------------------- /appx/appx_images/nvda_44x44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/appx/appx_images/nvda_44x44.png -------------------------------------------------------------------------------- /user_docs/th/key commands.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/user_docs/th/key commands.txt -------------------------------------------------------------------------------- /appx/appx_images/nvda_150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/appx/appx_images/nvda_150x150.png -------------------------------------------------------------------------------- /source/waves/screenCurtainOff.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/waves/screenCurtainOff.wav -------------------------------------------------------------------------------- /source/waves/screenCurtainOn.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/waves/screenCurtainOn.wav -------------------------------------------------------------------------------- /source/waves/suggestionsClosed.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/waves/suggestionsClosed.wav -------------------------------------------------------------------------------- /source/waves/suggestionsOpened.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/waves/suggestionsOpened.wav -------------------------------------------------------------------------------- /user_docs/sv/changes.t2t: -------------------------------------------------------------------------------- 1 | Vad är nytt i NVDA 2 | 3 | 4 | %!includeconf: ../changes.t2tconf 5 | 6 | = 2014.3 = 7 | -------------------------------------------------------------------------------- /source/fonts/FreeMono-FixedBraille.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/FreeMono-FixedBraille.ttf -------------------------------------------------------------------------------- /source/COMRegistrationFixes/oleaccProxy.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/COMRegistrationFixes/oleaccProxy.reg -------------------------------------------------------------------------------- /source/appModules/doctts.py: -------------------------------------------------------------------------------- 1 | import appModuleHandler 2 | 3 | class AppModule(appModuleHandler.AppModule): 4 | 5 | sleepMode=True 6 | -------------------------------------------------------------------------------- /source/appModules/dosvox.py: -------------------------------------------------------------------------------- 1 | import appModuleHandler 2 | 3 | class AppModule(appModuleHandler.AppModule): 4 | 5 | sleepMode=True 6 | -------------------------------------------------------------------------------- /source/locale/de_CH/characterDescriptions.dic: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/locale/de_CH/characterDescriptions.dic -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeMono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeMono.ttf -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeSans.ttf -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeSerif.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeSerif.ttf -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeMonoBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeMonoBold.ttf -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeSansBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeSansBold.ttf -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeSerifBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeSerifBold.ttf -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeMonoOblique.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeMonoOblique.ttf -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeSansOblique.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeSansOblique.ttf -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeSerifItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeSerifItalic.ttf -------------------------------------------------------------------------------- /appveyor/scripts/tests/checkTestFailure.ps1: -------------------------------------------------------------------------------- 1 | $ErrorActionPreference = "Stop"; 2 | if($env:testFailExitCode -ne 0) { $host.SetShouldExit($env:testFailExitCode) } 3 | -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeMonoBoldOblique.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeMonoBoldOblique.ttf -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeSansBoldOblique.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeSansBoldOblique.ttf -------------------------------------------------------------------------------- /source/fonts/freefont-20100919-ttf/FreeSerifBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/nvda/master/source/fonts/freefont-20100919-ttf/FreeSerifBoldItalic.ttf -------------------------------------------------------------------------------- /source/appModules/mintty.py: -------------------------------------------------------------------------------- 1 | """App module for mintty 2 | """ 3 | 4 | from . import putty 5 | 6 | class AppModule(putty.AppModule): 7 | TERMINAL_WINDOW_CLASS = "mintty" 8 | -------------------------------------------------------------------------------- /source/appModules/cicero.py: -------------------------------------------------------------------------------- 1 | """App module to sleep for Dolphin Cicero 2 | """ 3 | 4 | import appModuleHandler 5 | 6 | class AppModule(appModuleHandler.AppModule): 7 | sleepMode = True 8 | -------------------------------------------------------------------------------- /source/locale/hi/symbols.dic: -------------------------------------------------------------------------------- 1 | #Hindi symbols.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #Copyright (c) 2014 NVDA Contributors 4 | #This file is covered by the GNU General Public License. 5 | -------------------------------------------------------------------------------- /appveyor/ssh_known_hosts: -------------------------------------------------------------------------------- 1 | deploy.nvaccess.org,45.33.23.174 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBZdYWLmrUzPukq3wa15XFFgi2THBc92S9gpvZwrDUDkxNUD5VzRISf2uuFD+cRwn+gwj2jvH77fCFtwqfo4N3w= 2 | -------------------------------------------------------------------------------- /source/winAPI/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2022 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | -------------------------------------------------------------------------------- /nvdaHelper/vbufBase/sconscript: -------------------------------------------------------------------------------- 1 | Import([ 2 | 'env', 3 | ]) 4 | 5 | vbufBaseObjs=[env.Object(x) for x in ( 6 | "storage.cpp", 7 | "utils.cpp", 8 | "backend.cpp", 9 | )] 10 | 11 | Return('vbufBaseObjs') 12 | -------------------------------------------------------------------------------- /source/addonStore/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2022 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | -------------------------------------------------------------------------------- /source/addonStore/models/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2023 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | -------------------------------------------------------------------------------- /source/winAPI/winUser/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2022 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | -------------------------------------------------------------------------------- /source/gui/addonStoreGui/controls/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2023 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | -------------------------------------------------------------------------------- /source/gui/addonStoreGui/viewModels/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2023 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | -------------------------------------------------------------------------------- /nvdaHelper/espeak/config.h: -------------------------------------------------------------------------------- 1 | // Supplies the "config.h" include for espeak files 2 | // Replaces the include/espeak/src/windows/config.h file 3 | 4 | // Preprocessor definitions have been moved to the build system 5 | // See: nvdaHelper/espeak/sconscript 6 | -------------------------------------------------------------------------------- /source/locale/bg/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+ш 3 | toggleLeftMouseButton = kb(laptop):NVDA+control+ш 4 | rightMouseClick = kb(laptop):NVDA+щ 5 | toggleRightMouseButton = kb(laptop):NVDA+control+щ 6 | -------------------------------------------------------------------------------- /source/locale/cs/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+ú 3 | toggleLeftMouseButton = kb(laptop):NVDA+control+ú 4 | rightMouseClick = kb(laptop):NVDA+) 5 | toggleRightMouseButton = kb(laptop):NVDA+control+) 6 | -------------------------------------------------------------------------------- /source/locale/hu/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+ő 3 | toggleLeftMouseButton = kb(laptop):NVDA+control+ő 4 | rightMouseClick = kb(laptop):NVDA+ú 5 | toggleRightMouseButton = kb(laptop):NVDA+control+ú 6 | -------------------------------------------------------------------------------- /source/locale/sk/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+ú 3 | toggleLeftMouseButton = kb(laptop):NVDA+control+ú 4 | rightMouseClick = kb(laptop):NVDA+ä 5 | toggleRightMouseButton = kb(laptop):NVDA+control+ä 6 | -------------------------------------------------------------------------------- /source/locale/sl/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+š 3 | toggleLeftMouseButton = kb(laptop):NVDA+control+š 4 | rightMouseClick = kb(laptop):NVDA+đ 5 | toggleRightMouseButton = kb(laptop):NVDA+control+đ 6 | -------------------------------------------------------------------------------- /source/appModules/aim.py: -------------------------------------------------------------------------------- 1 | import appModuleHandler 2 | import controlTypes 3 | 4 | class AppModule(appModuleHandler.AppModule): 5 | 6 | def event_NVDAObject_init(self,obj): 7 | if obj.role==controlTypes.Role.TREEVIEWITEM: 8 | obj.hasEncodedAccDescription=True 9 | -------------------------------------------------------------------------------- /extras/controllerClient/examples/example_csharp/NVAccess.NVDA.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netstandard2.0 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /runnvda.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | set hereOrig=%~dp0 3 | set here=%hereOrig% 4 | if #%hereOrig:~-1%# == #\# set here=%hereOrig:~0,-1% 5 | set scriptsDir=%here%\venvUtils 6 | set sourceDirPath=%here%\source 7 | 8 | call "%scriptsDir%\venvCmd.bat" start pyw "%sourceDirPath%\nvda.pyw" %* 9 | -------------------------------------------------------------------------------- /tests/unit/test_winAPI/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2022 NV Access Limited 3 | # This file may be used under the terms of the GNU General Public License, version 2 or later. 4 | # For more details see: https://www.gnu.org/licenses/gpl-2.0.html 5 | -------------------------------------------------------------------------------- /tests/system/guiDiff.robot: -------------------------------------------------------------------------------- 1 | --loglevel DEBUG 2 | --outputdir .\testOutput\system 3 | --xunit systemTests.xml 4 | --pythonpath .\tests\system\libraries 5 | --suite NVDASettings 6 | --variable whichNVDA:source 7 | --variable currentVersion:source 8 | --variable cacheFolder:.\tests\system\settingsCache 9 | -------------------------------------------------------------------------------- /tests/system/robotArgs.robot: -------------------------------------------------------------------------------- 1 | --loglevel DEBUG 2 | --outputdir testOutput\system 3 | --xunit systemTests.xml 4 | --pythonpath .\tests\system\libraries 5 | --exclude excluded_from_build 6 | --include fakeTagToEnforceUsageOfInclude 7 | --variable whichNVDA:source 8 | --variable installDir: 9 | -------------------------------------------------------------------------------- /scons.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem Executes SScons within the NVDA build system's Python virtual environment. 3 | set hereOrig=%~dp0 4 | set here=%hereOrig% 5 | if #%hereOrig:~-1%# == #\# set here=%hereOrig:~0,-1% 6 | set scriptsDir=%here%\venvUtils 7 | call "%scriptsDir%\venvCmd.bat" py -m SCons %* 8 | -------------------------------------------------------------------------------- /source/builtin.dic: -------------------------------------------------------------------------------- 1 | #break up words that use a capital letter to denote another word 2 | ([a-z])([A-Z]) \1 \2 1 1 3 | #Break away a word starting with a capital from a fully uppercase word 4 | ([A-Z])([A-Z][a-z]) \1 \2 1 1 5 | #Break words that have numbers at the end 6 | ((?:(?=\D)\w)+)(\d+) \1 \2 1 1 7 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Try to ensure that po files in the repo does not include 2 | # source code line numbers. 3 | # Every person expected to commit po files should change their personal config file as described here: 4 | # https://mail.gnome.org/archives/kupfer-list/2010-June/msg00002.html 5 | *.po filter=cleanpo 6 | -------------------------------------------------------------------------------- /tests/system/settingsCache/2020.4/Review Cursor.txt: -------------------------------------------------------------------------------- 1 | Review Cursor property page 2 | Follow system focus check box checked Alt plus f 3 | Follow System Caret check box checked Alt plus c 4 | Follow mouse cursor check box not checked Alt plus m 5 | Simple review mode check box checked Alt plus s 6 | OK button -------------------------------------------------------------------------------- /user_docs/ca/locale.t2tconf: -------------------------------------------------------------------------------- 1 | % locale.t2tconf for Catalan 2 | 3 | % Set document language 4 | %!PostProc(html): '^string 8 | %!postproc(html): '(?i)([a-z-_]+)_%1 13 | endlocal 14 | -------------------------------------------------------------------------------- /source/comInterfaces/UIAutomationClient.py: -------------------------------------------------------------------------------- 1 | try: 2 | from comtypes.gen import _944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0 3 | except ModuleNotFoundError: 4 | import _944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0 5 | from _944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0 import * 6 | globals().update(_944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0.__dict__) 7 | __name__ = 'comtypes.gen.UIAutomationClient' 8 | -------------------------------------------------------------------------------- /source/NVDAObjects/IAccessible/akelEdit.py: -------------------------------------------------------------------------------- 1 | #NVDAObjects/IAccessible/akelEdit.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #Copyright (C) 2010 Peter Vagner 4 | #This file is covered by the GNU General Public License. 5 | #See the file COPYING for more details. 6 | 7 | from . import IAccessible 8 | 9 | class AkelEdit(IAccessible): 10 | 11 | name = "" 12 | -------------------------------------------------------------------------------- /appveyor/scripts/tests/translationCheck.ps1: -------------------------------------------------------------------------------- 1 | cmd.exe /c "scons checkPot $sconsArgs" 2 | if($LastExitCode -ne 0) { 3 | Set-AppveyorBuildVariable "testFailExitCode" $LastExitCode 4 | Add-AppveyorMessage "FAIL: Translation comments check. Translation comments missing or unexpectedly included. See build log for more information." 5 | } else { 6 | Add-AppveyorMessage "PASS: Translation comments check." 7 | } 8 | -------------------------------------------------------------------------------- /nvdaHelper/COMProxy.manifest.subst: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /source/appModules/obu.py: -------------------------------------------------------------------------------- 1 | #appModules/obu.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #This file is covered by the GNU General Public License. 4 | #See the file COPYING for more details. 5 | #Copyright (C) 2012 Bernd Dorer 6 | 7 | """App module for OpenBook 8 | """ 9 | 10 | import appModuleHandler 11 | 12 | class AppModule(appModuleHandler.AppModule): 13 | 14 | sleepMode=True 15 | -------------------------------------------------------------------------------- /source/locale/pt_BR/gestures.ini: -------------------------------------------------------------------------------- 1 | [NVDAObjects.window.winword.WordDocument] 2 | None = kb:control+b,kb:control+l,kb:control+r,kb:control+t,kb:control+u,kb:control+alt+1,kb:control+alt+2,kb:control+alt+3 3 | toggleBold = kb:control+n 4 | toggleUnderline = kb:control+s 5 | toggleAlignment = kb:control+g,kb:control+q 6 | [appModules.winword.WinwordWordDocument] 7 | changeParagraphLeftIndent = kb:control+f,kb:control+h -------------------------------------------------------------------------------- /source/exceptions.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2011-2021 NV Access Limited 3 | # This file may be used under the terms of the GNU General Public License, version 2 or later. 4 | # For more details see: https://www.gnu.org/licenses/gpl-2.0.html 5 | 6 | """General exceptions for NVDA""" 7 | 8 | 9 | class CallCancelled(Exception): 10 | """Raised when a call is cancelled. 11 | """ 12 | -------------------------------------------------------------------------------- /rununittests.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | set hereOrig=%~dp0 3 | set here=%hereOrig% 4 | if #%hereOrig:~-1%# == #\# set here=%hereOrig:~0,-1% 5 | set scriptsDir=%here%\venvUtils 6 | set unitTestsPath=%here%\tests\unit 7 | set testOutput=%here%\testOutput\unit 8 | md %testOutput% 9 | 10 | call "%scriptsDir%\venvCmd.bat" py -m xmlrunner discover -v -s "%unitTestsPath%" -t "%here%" --output-file "%testOutput%\unitTests.xml" %* 11 | -------------------------------------------------------------------------------- /source/appModules/skype.py: -------------------------------------------------------------------------------- 1 | # -*- coding: UTF-8 -*- 2 | #appModules/skype.py 3 | #A part of NonVisual Desktop Access (NVDA) 4 | #Copyright (C) 2019 Peter Vágner, NV Access Limited, Babbage B.V. 5 | #This file is covered by the GNU General Public License. 6 | #See the file COPYING for more details. 7 | 8 | import appModuleHandler 9 | 10 | class AppModule(appModuleHandler.AppModule): 11 | disableBrowseModeByDefault = True 12 | -------------------------------------------------------------------------------- /source/synthDrivers/mssp.py: -------------------------------------------------------------------------------- 1 | #synthDrivers/mssp.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #Copyright (C) 2011 NV Access Inc 4 | #This file is covered by the GNU General Public License. 5 | #See the file COPYING for more details. 6 | 7 | from .sapi5 import SynthDriver 8 | 9 | class SynthDriver(SynthDriver): 10 | COM_CLASS = "speech.SPVoice" 11 | 12 | name="mssp" 13 | description="Microsoft Speech Platform" 14 | -------------------------------------------------------------------------------- /source/brailleDisplayDrivers/eurobraille/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2023 NV Access Limited, Babbage B.V. 5 | 6 | """Braille display driver for eurobraille displays.""" 7 | 8 | # Imported here so that braille._getDisplayDriver can import 9 | from .driver import BrailleDisplayDriver # noqa: F401 10 | -------------------------------------------------------------------------------- /source/vision/exceptions.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2019 NV Access Limited, Babbage B.V. 5 | 6 | """Module containing exceptions for the vision framework. 7 | """ 8 | 9 | 10 | class ProviderTerminateException(RuntimeError): 11 | ... 12 | 13 | 14 | class ProviderInitException(RuntimeError): 15 | ... 16 | -------------------------------------------------------------------------------- /tests/manual/README.md: -------------------------------------------------------------------------------- 1 | ## Manual testing 2 | 3 | Commonly tested components of NVDA should have standard test plans. 4 | 5 | This directory contains markdown files group by the NVDA component, e.g. "addon store", "start up / shutdown", "speech dictionaries", "settings", etc. 6 | 7 | The goal is to document manual test plans for commonly tested NVDA components. 8 | This gives contributors a base test plan when creating PRs that touch these NVDA components. 9 | -------------------------------------------------------------------------------- /appveyor/scripts/uploadArtifacts.ps1: -------------------------------------------------------------------------------- 1 | $ErrorActionPreference = "Stop"; 2 | # Upload artifacts, preserving directory structure. 3 | $uploadFromFolder = "output\" 4 | if( Test-Path $uploadFromFolder ){ 5 | $root = Resolve-Path .\ 6 | $output = Resolve-Path $uploadFromFolder 7 | $paths = [IO.Directory]::GetFiles($output.Path, '*.*', 'AllDirectories') 8 | $paths | % { 9 | Push-AppveyorArtifact $_ -FileName $_.Substring($root.Path.Length + 1) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /source/winAPI/winUser/functions.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2022 NV Access Limited, Cyrille Bougot 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | 6 | from ctypes import windll 7 | from .constants import SysColorIndex 8 | 9 | 10 | # dll handles 11 | user32 = windll.user32 12 | 13 | 14 | def GetSysColor(index: SysColorIndex): 15 | return user32.GetSysColor(index) 16 | -------------------------------------------------------------------------------- /source/speech/extensions.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2023 NV Access Limited, Leonard de Ruijter 5 | 6 | """ 7 | Extension points for speech. 8 | """ 9 | 10 | from extensionPoints import Action 11 | 12 | speechCanceled = Action() 13 | """ 14 | Notifies when speech is canceled. 15 | Handlers are called without arguments. 16 | """ 17 | -------------------------------------------------------------------------------- /source/winAPI/types.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2022 NV Access Limited 3 | # This file may be used under the terms of the GNU General Public License, version 2 or later. 4 | # For more details see: https://www.gnu.org/licenses/gpl-2.0.html 5 | 6 | # rather than using the ctypes.c_void_p type, which may encourage attempting to dereference 7 | # what may be an invalid or illegal pointer, we'll treat it as an opaque value. 8 | HWNDValT = int 9 | -------------------------------------------------------------------------------- /tests/system/settingsCache/2020.4/Input Composition.txt: -------------------------------------------------------------------------------- 1 | Input Composition property page 2 | Automatically report all available candidates check box checked Alt plus c 3 | Announce selected candidate check box checked Alt plus s 4 | Always include short character description when announcing candidates check box checked Alt plus d 5 | Report changes to the reading string check box checked Alt plus r 6 | Report changes to the composition string check box checked Alt plus c 7 | OK button -------------------------------------------------------------------------------- /tests/system/nvdaSettingsFiles/standard-doShowWelcomeDialog.ini: -------------------------------------------------------------------------------- 1 | schemaVersion = 2 2 | [general] 3 | language = en 4 | showWelcomeDialogAtStartup = True 5 | [update] 6 | askedAllowUsageStats = True 7 | autoCheck = False 8 | startupNotification = False 9 | allowUsageStats = False 10 | [speech] 11 | synth = speechSpySynthDriver 12 | [development] 13 | enableScratchpadDir = True 14 | [virtualBuffers] 15 | autoSayAllOnPageLoad = False 16 | passThroughAudioIndication = False 17 | -------------------------------------------------------------------------------- /nvdaHelper/local/UIAUtils.h: -------------------------------------------------------------------------------- 1 | #ifndef NVDAHELPERLOCAL_UIAUTILS_H 2 | #define NVDAHELPERLOCAL_UIAUTILS_H 3 | 4 | // The following header included to allow winrt::guid to be converted to GUID 5 | #include 6 | 7 | #include 8 | #include 9 | 10 | PROPERTYID registerUIAProperty(GUID* guid, LPCWSTR programmaticName, UIAutomationType propertyType); 11 | int registerUIAAnnotationType(GUID* guid); 12 | 13 | 14 | #endif 15 | 16 | -------------------------------------------------------------------------------- /source/brailleDisplayDrivers/albatross/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2023 NV Access Limited, Burman's Computer and Education Ltd. 5 | 6 | """Braille display driver for Tivomatic Caiku albatross 46 and 80 displays.""" 7 | 8 | # Imported here so that braille._getDisplayDriver can import 9 | from .driver import BrailleDisplayDriver # noqa: F401 10 | -------------------------------------------------------------------------------- /source/RPCConstants.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2009-2021 NV Access Limited 3 | # This file may be used under the terms of the GNU General Public License, version 2 or later. 4 | # For more details see: https://www.gnu.org/licenses/gpl-2.0.html 5 | 6 | import enum 7 | 8 | 9 | class RPC(enum.IntEnum): 10 | E_CALL_CANCELED = -2147418110 11 | S_SERVER_UNAVAILABLE = 1722 12 | S_CALL_FAILED_DNE = 1727 13 | E_CALL_REJECTED = -2147418111 14 | E_DISCONNECTED = -2147417848 15 | -------------------------------------------------------------------------------- /source/locale/so/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Somali characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | b Bariis 7 | t Tim 8 | j Jallato 9 | x Xamar 10 | kh Khamiis 11 | d Daiyax 12 | r Roob 13 | s Subax 14 | sh Shah 15 | dh Dhar 16 | c Cano 17 | g Gabar 18 | f Far 19 | q Qalim 20 | k Kabo 21 | l Lacag 22 | m Magac 23 | n Nal 24 | w Wejji 25 | h Hooyo 26 | y Yar 27 | -------------------------------------------------------------------------------- /source/monkeyPatches/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2021 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | 6 | from . import wxMonkeyPatches 7 | 8 | 9 | applyWxMonkeyPatches = wxMonkeyPatches.apply 10 | 11 | 12 | def applyMonkeyPatches(): 13 | # Apply several monkey patches to comtypes 14 | from . import comtypesMonkeyPatches 15 | comtypesMonkeyPatches.applyMonkeyPatches() 16 | -------------------------------------------------------------------------------- /extras/controllerClient/examples/example_rust/src/bindgen.rs: -------------------------------------------------------------------------------- 1 | // A part of NonVisual Desktop Access (NVDA) 2 | // Copyright (C) 2023 NV Access Limited, Leonard de Ruijter 3 | // This file may be used under the terms of the GNU Lesser General Public License, version 2.1. 4 | // For more details see: https://www.gnu.org/licenses/lgpl-2.1.html 5 | 6 | #![allow(non_upper_case_globals)] 7 | #![allow(non_camel_case_types)] 8 | #![allow(non_snake_case)] 9 | #![allow(dead_code)] 10 | 11 | include!(concat!(env!("OUT_DIR"), "/bindings.rs")); 12 | -------------------------------------------------------------------------------- /source/appModules/egui.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2020 Pavol Kecskemety 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | 6 | 7 | import appModuleHandler 8 | 9 | 10 | class AppModule(appModuleHandler.AppModule): 11 | 12 | def event_NVDAObject_init(self, obj): 13 | obj.description = None 14 | obj.shouldAllowIAccessibleFocusEvent = True 15 | 16 | if obj.name == obj.value: 17 | obj.value = None 18 | -------------------------------------------------------------------------------- /source/locale/fa/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+ج 3 | toggleLeftMouseButton = kb(laptop):NVDA+control+ج 4 | rightMouseClick = kb(laptop):NVDA+چ 5 | toggleRightMouseButton = kb(laptop):NVDA+control+چ 6 | review_currentLine = kb(laptop):NVDA+shift+. 7 | review_currentWord = kb(laptop):NVDA+control+. 8 | review_currentCharacter = kb(laptop):NVDA+. 9 | [virtualBuffers.VirtualBuffer] 10 | moveToStartOfContainer = kb(laptop):shift+و 11 | movePastEndOfContainer = kb(laptop):و 12 | -------------------------------------------------------------------------------- /tests/unit/test_checkPot/expectedErrors.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) 2006-2020 NVDA Contributors 3 | # 4 | #, fuzzy 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: NVDA Unit Tests\n" 8 | "Unit-Test: test_checkPot.TestCheckPot.test_checkPot_expectedErrors\n" 9 | "Description: Below, the two messages have expected missing translators comments\n" 10 | 11 | #: Mock:NNN 12 | msgid "Expected message without comment #1" 13 | msgstr "" 14 | 15 | #: Mock:NNN 16 | msgid "Expected message without comment #1" 17 | msgstr "" 18 | -------------------------------------------------------------------------------- /source/objbase.py: -------------------------------------------------------------------------------- 1 | #objbase.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #This file is covered by the GNU General Public License. 4 | #See the file COPYING for more details. 5 | 6 | from ctypes import * 7 | import objidl 8 | 9 | def GetRunningObjectTable(): 10 | rot = POINTER(objidl.IRunningObjectTable)() 11 | oledll.ole32.GetRunningObjectTable(0, byref(rot)) 12 | return rot 13 | 14 | def CreateBindCtx(): 15 | bctx = POINTER(objidl.IBindCtx)() 16 | oledll.ole32.CreateBindCtx(0, byref(bctx)) 17 | return bctx 18 | -------------------------------------------------------------------------------- /tests/system/nvdaSettingsFiles/standard-dontShowExitDialog.ini: -------------------------------------------------------------------------------- 1 | schemaVersion = 2 2 | [general] 3 | language = en 4 | showWelcomeDialogAtStartup = True 5 | askToExit = False 6 | [update] 7 | askedAllowUsageStats = True 8 | autoCheck = False 9 | startupNotification = False 10 | allowUsageStats = False 11 | [speech] 12 | synth = speechSpySynthDriver 13 | [development] 14 | enableScratchpadDir = True 15 | [virtualBuffers] 16 | autoSayAllOnPageLoad = False 17 | passThroughAudioIndication = False 18 | [annotations] 19 | reportDetails = True 20 | -------------------------------------------------------------------------------- /projectDocs/dev/developerGuide/index.rst: -------------------------------------------------------------------------------- 1 | .. NVDA documentation master file, created by 2 | sphinx-quickstart on Sat Jul 20 08:52:09 2019. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to NVDA's documentation! 7 | ================================ 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | :caption: Contents: 12 | 13 | 14 | 15 | Indices and tables 16 | ================== 17 | 18 | * :ref:`genindex` 19 | * :ref:`modindex` 20 | * :ref:`search` 21 | -------------------------------------------------------------------------------- /source/NVDAObjects/IAccessible/scintilla.py: -------------------------------------------------------------------------------- 1 | #NVDAObjects/IAccessible/scintilla.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #Copyright (C) 2006-2007 NVDA Contributors 4 | #This file is covered by the GNU General Public License. 5 | #See the file COPYING for more details. 6 | 7 | import winUser 8 | from . import IAccessible 9 | 10 | class Scintilla(IAccessible): 11 | 12 | def _get_name(self): 13 | return winUser.getWindowText(self.windowHandle) 14 | 15 | shouldAcceptShowHideCaretEvent=False 16 | -------------------------------------------------------------------------------- /user_docs/changes.t2tconf: -------------------------------------------------------------------------------- 1 | %!includeconf: global.t2tconf 2 | 3 | % Make ticket references into links. 4 | %!PreProc: "#([0-9]+)" "[#\1 https://github.com/nvaccess/nvda/issues/\1]" 5 | 6 | % Make GitHub username references into links. 7 | % Github username may only contain alphanumeric characters or hyphens. 8 | % Maximum is 39 characters. 9 | %!PreProc: ", @([A-Za-z0-9\-]{1,39})" ", [@\1 https://github.com/nvaccess/nvda/commits?author=\1]" 10 | 11 | % Make links open in a new tab/window. 12 | %!PostProc(html): '(' '\1 target="_blank">' 13 | -------------------------------------------------------------------------------- /nvdaHelper/microsoft-ui-uiautomation/Microsoft.UI.UIAutomation.dll.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /source/appModules/esysuite.py: -------------------------------------------------------------------------------- 1 | #appModules/esysuite.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #This file is covered by the GNU General Public License. 4 | #See the file COPYING for more details. 5 | #Copyright (C) 2016-2018 Didier Poitou (Eurobraille), Babbage B.V. 6 | 7 | """App module for Esysuite 8 | 9 | Esysuite is a self braille/voice application. 10 | NVDA should sleep during Esysuite activity. 11 | """ 12 | 13 | import appModuleHandler 14 | 15 | class AppModule(appModuleHandler.AppModule): 16 | 17 | sleepMode = True 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | You have arrived at the blank issue template from submitting issues. 2 | It is preferable to [choose a type of issue](https://github.com/nvaccess/nvda/issues/new/choose) to submit. 3 | Your issue may be closed if you do not follow one of the following issue templates. 4 | Hint: Swap to the preview tab to be able to click the links. 5 | Direct links to the templates: 6 | - [Bug report](https://github.com/nvaccess/nvda/issues/new?template=bug_report.md) 7 | - [Feature request](https://github.com/nvaccess/nvda/issues/new?template=feature_request.md) 8 | -------------------------------------------------------------------------------- /source/appModules/mplayerc.py: -------------------------------------------------------------------------------- 1 | #appModules/mplayerc.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #Copyright (C) 2006-2008 NVDA Contributors 4 | #This file is covered by the GNU General Public License. 5 | #See the file COPYING for more details. 6 | 7 | import appModuleHandler 8 | import controlTypes 9 | 10 | class AppModule(appModuleHandler.AppModule): 11 | 12 | def event_NVDAObject_init(self,obj): 13 | if obj.windowClassName=="#32770" and obj.windowControlID==10021: 14 | obj.role = controlTypes.Role.STATUSBAR 15 | -------------------------------------------------------------------------------- /appveyor/scripts/pushPackagingInfo.ps1: -------------------------------------------------------------------------------- 1 | $ErrorActionPreference = "Stop"; 2 | # Save an exact list of the actual Python packages and their versions that got installed, to aide in reproducing a build 3 | .\venvUtils\exportPackageList.bat installed_python_packages.txt 4 | Push-AppveyorArtifact installed_python_packages.txt 5 | $appVeyorUrl = "https://ci.appveyor.com" 6 | $exe = Get-ChildItem -Name output\*.exe 7 | if($?){ 8 | $exeUrl="$appVeyorUrl/api/buildjobs/$env:APPVEYOR_JOB_ID/artifacts/output/$exe" 9 | Add-AppveyorMessage "Build (for testing PR): $exeUrl" 10 | } 11 | -------------------------------------------------------------------------------- /tests/system/settingsCache/2020.4/Mouse.txt: -------------------------------------------------------------------------------- 1 | Mouse property page 2 | Report mouse shape changes check box not checked Alt plus s 3 | Enable mouse tracking check box checked Alt plus t 4 | Text unit resolution: combo box paragraph collapsed Alt plus u 5 | Report role when mouse enters object check box not checked Alt plus r 6 | Play audio coordinates when mouse moves check box not checked Alt plus p 7 | Brightness controls audio coordinates volume check box not checked Alt plus b 8 | Ignore mouse input from other applications check box not checked Alt plus a 9 | OK button -------------------------------------------------------------------------------- /source/appModules/lockapphost.py: -------------------------------------------------------------------------------- 1 | #A part of NonVisual Desktop Access (NVDA) 2 | #Copyright (C) 2015 NV Access Limited 3 | #This file is covered by the GNU General Public License. 4 | #See the file COPYING for more details. 5 | 6 | import appModuleHandler 7 | 8 | class AppModule(appModuleHandler.AppModule): 9 | 10 | def event_gainFocus(self, obj, nextHandler): 11 | if obj.windowClassName == "LockAppHostFrameWindow": 12 | # This window becomes foreground before the actual lock screen appears. 13 | # The name is ugly and it isn't useful, so ignore it. 14 | return 15 | nextHandler() 16 | -------------------------------------------------------------------------------- /source/locale/tr/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Turkish characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | 5 | 6 | a Adana 7 | b Bolu 8 | c Ceyhan 9 | ç Çanakkale 10 | d Denizli 11 | e Edirne 12 | f Fatsa 13 | g Giresun 14 | ğ Yumuşakge 15 | h Hatay 16 | i izmir 17 | İ izmir 18 | ı Isparta 19 | j Jandarma 20 | k Kars 21 | l Lüleburgaz 22 | m Muş 23 | n Niğde 24 | o Ordu 25 | ö Ödemiş 26 | p Polatlı 27 | r Rize 28 | s Sinop 29 | ş Şırnak 30 | t Tokat 31 | u Uşak 32 | ü Ünye 33 | v Van 34 | y Yozgat 35 | z Zonguldak 36 | -------------------------------------------------------------------------------- /.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.VisualStudio.Workload.NativeDesktop", 5 | "Microsoft.VisualStudio.Component.Windows11SDK.22621", 6 | "Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset", 7 | "Microsoft.VisualStudio.Component.VC.Llvm.Clang", 8 | "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", 9 | "Microsoft.VisualStudio.Component.VC.Tools.ARM64EC", 10 | "Microsoft.VisualStudio.Component.VC.Tools.ARM64", 11 | "Microsoft.VisualStudio.Component.VC.ATL", 12 | "Microsoft.VisualStudio.Component.VC.ATL.ARM64" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /tests/unit/test_checkPot/unexpectedSuccesses.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) 2006-2020 NVDA Contributors 3 | # 4 | #, fuzzy 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: NVDA Unit Tests\n" 8 | "Unit-Test: test_checkPot.TestCheckPot.test_checkPot_unexpectedSuccess\n" 9 | "Description: Below, the two messages have intentionally unexpected translators comments\n" 10 | 11 | #. Translators: Comment #1 12 | #: Mock:NNN 13 | msgid "Expected message without comment #1" 14 | msgstr "" 15 | 16 | #. Translators: Comment #2 17 | #: Mock:NNN 18 | msgid "Expected message without comment #1" 19 | msgstr "" 20 | -------------------------------------------------------------------------------- /appveyor/scripts/tests/unitTests.ps1: -------------------------------------------------------------------------------- 1 | $outDir = (Resolve-Path .\testOutput\unit\) 2 | $unitTestsXml = "$outDir\unitTests.xml" 3 | .\rununittests.bat --output-file "$unitTestsXml" 4 | if($LastExitCode -ne 0) { 5 | Set-AppveyorBuildVariable "testFailExitCode" $LastExitCode 6 | Add-AppveyorMessage "FAIL: Unit tests. See test results for more information." 7 | } else { 8 | Add-AppveyorMessage "PASS: Unit tests." 9 | } 10 | Push-AppveyorArtifact $unitTestsXml 11 | $wc = New-Object 'System.Net.WebClient' 12 | $wc.UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", $unitTestsXml) 13 | -------------------------------------------------------------------------------- /source/locale/da/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Danish characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | a Alfa 7 | b Bravo 8 | c Charlie 9 | d Delta 10 | e Ekko 11 | f Foxtrot 12 | g Golf 13 | h Hotel 14 | i India 15 | j Juliet 16 | k Kilo 17 | l Lima 18 | m Mike 19 | n November 20 | o Oscar 21 | p Papa 22 | q Quebec 23 | r Romeo 24 | s Sierra 25 | t Tango 26 | u Uniform 27 | v Victor 28 | w Whiskey 29 | x Xray 30 | y Yankee 31 | z Zulu 32 | æ Ægir 33 | ø Øresund 34 | å Åse -------------------------------------------------------------------------------- /source/locale/is/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Icelandic characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | a Alfa 7 | b Bravó 8 | c Charlie 9 | d Delta 10 | e Ekkó 11 | f Foxtrott 12 | g Golf 13 | h Hótel 14 | i Inga 15 | j Júlía 16 | k Kílo 17 | l Líma 18 | m Magnús 19 | n Nóvember 20 | o Óskar 21 | p Páll 22 | q Quebec 23 | r Rúnar 24 | s Sara 25 | t Tangó 26 | u Unnar 27 | v Viktor 28 | w Whiskey 29 | x Xið 30 | y Yankí 31 | z Zúlú 32 | æ Ægir 33 | ø Øresund 34 | å Åse 35 | -------------------------------------------------------------------------------- /source/locale/kok/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Konkani characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: http://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | क कमळ 7 | ख खरें 8 | ग गट 9 | घ घर 10 | च चलो 11 | छ छत्तीस 12 | ज जड 13 | झ झर 14 | ट टको 15 | ठ ठक 16 | ड डफ 17 | ढ ढगाळ 18 | ण णव्वद 19 | त तसलें 20 | थ थर 21 | द दगदग 22 | ध धग 23 | न नवें 24 | प पड 25 | फ फट 26 | ब बरें 27 | भ भलें 28 | म मन 29 | य यमन 30 | र रण 31 | ल लगोरी 32 | व वट 33 | श शतक 34 | स समान 35 | ह हती 36 | क्ष क्षपण 37 | ज्ञ ज्ञान 38 | 39 | 40 | -------------------------------------------------------------------------------- /source/vision/providerInfo.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2019 NV Access Limited 5 | from dataclasses import dataclass 6 | from typing import Type 7 | from vision import providerBase 8 | 9 | ProviderIdT = str 10 | ModuleNameT = str 11 | DisplayNameT = str 12 | 13 | 14 | @dataclass(frozen=True) 15 | class ProviderInfo: 16 | providerId: ProviderIdT 17 | moduleName: ModuleNameT 18 | displayName: DisplayNameT 19 | providerClass: Type[providerBase.VisionEnhancementProvider] 20 | -------------------------------------------------------------------------------- /source/locale/ca/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Catalan characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2014 NVDA contributors. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Charlie 10 | d Delta 11 | e Echo 12 | f Foxtrot 13 | g Golf 14 | h Hotel 15 | i India 16 | j Juliet 17 | k Kilo 18 | l Lima 19 | m Mike 20 | n November 21 | o Oscar 22 | p Papa 23 | q Quebec 24 | r Romeo 25 | s Sierra 26 | t Tango 27 | u Uniform 28 | v Victor 29 | w Whiskey 30 | x X-ray 31 | y Yankee 32 | z Zulu 33 | -------------------------------------------------------------------------------- /tests/system/settingsCache/2020.4/Vision.txt: -------------------------------------------------------------------------------- 1 | Vision property page Configure visual aids. 2 | Visual Highlight grouping 3 | Enable Highlighting check box not checked Alt plus e 4 | Highlight system focus check box not checked Alt plus c 5 | Highlight navigator object check box not checked Alt plus o 6 | Highlight browse mode cursor check box not checked Alt plus m 7 | Screen Curtain grouping 8 | Make screen black (immediate effect) check box not checked 9 | Always show a warning when loading Screen Curtain check box checked Alt plus s 10 | Play sound when toggling Screen Curtain check box checked Alt plus p 11 | OK button -------------------------------------------------------------------------------- /nvdaHelper/detours/sconscript: -------------------------------------------------------------------------------- 1 | Import([ 2 | "thirdPartyEnv" 3 | ]) 4 | 5 | import typing 6 | 7 | thirdPartyEnv: Environment = thirdPartyEnv 8 | env: Environment = typing.cast(Environment, thirdPartyEnv.Clone()) 9 | 10 | detoursPath=Dir('#include/detours') 11 | detoursSrcPath = detoursPath.Dir('src') 12 | 13 | env.Prepend(CPPPATH=[detoursSrcPath]) 14 | 15 | sourceFiles=[ 16 | 'detours.cpp', 17 | 'disasm.cpp', 18 | 'modules.cpp', 19 | ] 20 | 21 | objs = [env.Object(f"{f}.obj", detoursSrcPath.File(f)) for f in sourceFiles] 22 | 23 | detoursLib=env.Library( 24 | target='detours', 25 | source=objs 26 | ) 27 | 28 | Return('detoursLib') 29 | -------------------------------------------------------------------------------- /source/locale/fi/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Finnish characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | a antti 7 | b bertta 8 | c selsius 9 | d daavid 10 | e erkki 11 | f farao 12 | g gideon 13 | h heikki 14 | i iiro 15 | j jussi 16 | k kalle 17 | l lauri 18 | m matti 19 | n niilo 20 | o oskari 21 | p paavo 22 | q kuu 23 | r risto 24 | s sakari 25 | t tauno 26 | u unto 27 | v ville 28 | w kaksoisvee 29 | x äks 30 | y yrjö 31 | z tsorro 32 | å ruotsalainen oo 33 | ä äiti 34 | ö öljy 35 | -------------------------------------------------------------------------------- /source/locale/es_CO/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Spanish characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2012 NVDA contributors. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Ana 8 | b Barranquilla 9 | c Casa 10 | d Dedo 11 | e Enano 12 | f Fabián 13 | g Gato 14 | h hola 15 | i India 16 | j Julieta 17 | k Kilo 18 | l Lima 19 | m Mamá 20 | n Niño 21 | o Óscar 22 | p Papá 23 | q Queso 24 | r Ratón 25 | s Sapo 26 | t Tetero 27 | u Uniforme 28 | v Vaca 29 | w Wisky 30 | x Xilófono 31 | y Yuca 32 | z Zanahoria 33 | -------------------------------------------------------------------------------- /source/locale/gl/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Galician characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2012 NVDA contributors. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Charlie 10 | d Delta 11 | e Eco 12 | f FoxTrot 13 | g Golf 14 | h Hotel 15 | i India 16 | j Julieta 17 | k Kilo 18 | l Lima 19 | m Micro 20 | n Novembro 21 | o Óscar 22 | p Papa 23 | q Quebec 24 | r Romeo 25 | s Serra 26 | t Tango 27 | u Uniforme 28 | v Víctor 29 | w Wisky 30 | x Xilófono 31 | y Yanki 32 | z Zulú 33 | -------------------------------------------------------------------------------- /appveyor/scripts/buildSymbolStore.ps1: -------------------------------------------------------------------------------- 1 | $ErrorActionPreference = "Stop"; 2 | foreach ($syms in 3 | # We don't just include source\*.dll because that would include system dlls. 4 | "source\liblouis.dll", "source\*.pdb", 5 | "source\lib\*.dll", "source\lib\*.pdb", 6 | # We include source\lib64\*.exe to cover nvdaHelperRemoteLoader. 7 | "source\lib64\*.dll", "source\lib64\*.exe", "source\lib64\*.pdb", 8 | "source\synthDrivers\*.dll", "source\synthDrivers\*.pdb" 9 | ) { 10 | # https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/symstore-command-line-options 11 | & $env:symstore add /f $syms /s symbols /t NVDA /compress 12 | } 13 | -------------------------------------------------------------------------------- /source/locale/fr/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #French characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2014 NVDA contributors. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Charlie 10 | d Delta 11 | e éco 12 | f Foxtrott 13 | g Golf 14 | h Hotel 15 | i Inndia 16 | j Juliette 17 | k Kilo 18 | l Lima 19 | m Maillk 20 | n Novemmbeur 21 | o Oscar 22 | p Papa 23 | q Québec 24 | r Roméo 25 | s Sierra 26 | t Tango 27 | u youniform 28 | v Victor 29 | w Whisky 30 | x Iksray 31 | y Yanki 32 | z Zoulou 33 | -------------------------------------------------------------------------------- /source/brailleViewer/brailleViewerInputGesture.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2020 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | from braille import BrailleDisplayGesture 6 | 7 | driverName = "brailleViewer" 8 | 9 | 10 | class BrailleViewerGesture_RouteTo(BrailleDisplayGesture): 11 | source = driverName 12 | id = "route" 13 | 14 | def __init__(self, argument): 15 | super().__init__() 16 | self.routingIndex = argument 17 | import globalCommands 18 | self.script = globalCommands.commands.script_braille_routeTo 19 | -------------------------------------------------------------------------------- /source/config/aggregatedSection.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2023 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | 6 | from typing import ( 7 | Dict, 8 | Protocol, 9 | Union, 10 | ) 11 | 12 | 13 | class _SupportsStrT(Protocol): 14 | """ 15 | Valid config values must support str(), 16 | as this is how they are written to disk 17 | """ 18 | def __str__(self) -> str: 19 | ... 20 | 21 | 22 | _cacheKeyT = str 23 | _cacheValueT = Union["_cacheT", _SupportsStrT, KeyError] 24 | _cacheT = Dict[str, _cacheValueT] 25 | -------------------------------------------------------------------------------- /source/locale/es/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Spanish characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2012 NVDA contributors. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Charlie 10 | d Delta 11 | e Eco 12 | f FoxTrot 13 | g Golf 14 | h Hotel 15 | i India 16 | j Julieta 17 | k Kilo 18 | l Lima 19 | m Micro 20 | n Noviembre 21 | ñ Ñoño 22 | o Óscar 23 | p Papa 24 | q Quebec 25 | r Romeo 26 | s Sierra 27 | t Tango 28 | u Uniforme 29 | v Víctor 30 | w Wisky 31 | x Xilófono 32 | y Yanki 33 | z Zulú 34 | -------------------------------------------------------------------------------- /tests/unit/test_excel.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2022 NV Access Limited 5 | 6 | """Unit tests for the excel module. 7 | """ 8 | 9 | import unittest 10 | import NVDAObjects.window.excel as excel 11 | 12 | 13 | class TestCellStates(unittest.TestCase): 14 | def test_cellStateMapsToState(self): 15 | """All Excel Cell info states should map to a controlTypes.State 16 | """ 17 | for cellState in excel.NvCellState: 18 | excel._nvCellStatesToStates[cellState] # throws if cellState is missing 19 | -------------------------------------------------------------------------------- /source/locale/an/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Aragonese characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | # Traduciu por Jorgtum 6 | # Softaragonés 7 | 8 | a Ababol 9 | b Bardo 10 | c Calient 11 | d Dalla 12 | e Encorrer 13 | f Farto 14 | g Garrampa 15 | h Historia 16 | i Ibón 17 | j Jota 18 | k Kilo 19 | l Lifara 20 | m Masar 21 | n Noviembre 22 | o Olivera 23 | p Pretar 24 | q Quefer 25 | r Royo 26 | s Sequera 27 | t Teta 28 | u Universidat 29 | v Viello 30 | w Whisky 31 | x Xuto 32 | y Yayo 33 | z Zapo 34 | -------------------------------------------------------------------------------- /source/locale/da/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+ø 3 | toggleLeftMouseButton = kb(laptop):NVDA+control+ø 4 | rightMouseClick = kb(laptop):NVDA+' 5 | toggleRightMouseButton = kb(laptop):NVDA+control+' 6 | navigatorObject_previousInFlow = kb(laptop):NVDA+shift+ø 7 | navigatorObject_nextInFlow = kb(laptop):NVDA+shift+' 8 | [NVDAObjects.window.winword.WordDocument] 9 | None = kb:control+b, kb:control+i 10 | toggleBold = kb:control+f 11 | toggleItalic = kb:control+k 12 | increaseDecreaseFontSize = kb:control+<, kb:control+shift+< 13 | toggleSuperscriptSubscript = kb:control+shift+plus, kb:control+plus -------------------------------------------------------------------------------- /source/locale/sl/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Slovenian characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | a Ajdovščina 7 | b Bovec 8 | c Celje 9 | č Črnomelj 10 | d Dramlje 11 | e Evropa 12 | f Fram 13 | g Gorica 14 | h Hoče 15 | i Idrija 16 | j Jesenice 17 | k Kranj 18 | l Ljubljana 19 | m Maribor 20 | n Naklo 21 | o Ormož 22 | p Ptuj 23 | q quorum 24 | r Rateče 25 | s Senovo 26 | š Šentvid 27 | t Trebnje 28 | u Unec 29 | v Velenje 30 | w Dvojni v 31 | x Xenon 32 | y Ypsilon 33 | z Zbilje 34 | ž Žalec 35 | -------------------------------------------------------------------------------- /extras/controllerClient/examples/example_rust/readme.md: -------------------------------------------------------------------------------- 1 | # NVDA Rust Example 2 | 3 | This Rust crate contains example code to interface with `nvdaControllerClient`. 4 | The following instructions assume you have Rust installed. 5 | 6 | To run the example: 7 | 8 | 1. Ensure the client library is built with `scons client` from the root of the NVDA repository. 9 | 1. Run `cargo test`. While this crate has no tests, it ensures that our example is built. 10 | 1. Navigate to the architecture folder within the `controllerClient` folder, e.g. `..\..\x64`. 11 | 1. Run `cargo run --example example_rust --manifest-path ..\examples\example_rust\Cargo.toml --release`. 12 | -------------------------------------------------------------------------------- /nvdaHelper/nvda.rc.subst: -------------------------------------------------------------------------------- 1 | 1 VERSIONINFO 2 | FILEVERSION %version_year%,%version_major%,%version_minor%,%version_build% 3 | PRODUCTVERSION %version_year%,%version_major%,%version_minor%,%version_build% 4 | BEGIN 5 | BLOCK "StringFileInfo" 6 | BEGIN 7 | BLOCK "040904b0" 8 | BEGIN 9 | VALUE "CompanyName", "%publisher%" 10 | VALUE "LegalCopyright", "%copyright%" 11 | VALUE "ProductName", "%productName%" 12 | VALUE "ProductVersion", "%version%" 13 | END 14 | END 15 | BLOCK "VarFileInfo" 16 | BEGIN 17 | VALUE "Translation", 0x409, 1200 18 | END 19 | END 20 | -------------------------------------------------------------------------------- /source/locale/sk/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Slovak characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | 5 | 6 | a Adam 7 | b Božena 8 | c Cyril 9 | č Čadca 10 | d Dávid 11 | Ď Ďumbier 12 | e Emil 13 | f František 14 | g Gustáv 15 | h Helena 16 | i Ivan 17 | j Jozef 18 | k Karol 19 | l Ladislav 20 | Ľ Ľubochňa 21 | m Mária 22 | n Norbert 23 | ň Nitra 24 | o Oto 25 | p Peter 26 | q Quido 27 | r Rudolf 28 | ř Řehoř 29 | s Svätopluk 30 | š Šimon 31 | t Tomáš 32 | ť Teplá 33 | u Urban 34 | v Václav 35 | w Dvojité V 36 | x Xaver 37 | y Ypsilon 38 | z Zuzana 39 | ž Žofia 40 | -------------------------------------------------------------------------------- /source/locale/as/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Assamese characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: http://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | ক কল 7 | খ খেতি 8 | গ গছ 9 | ঘ ঘর 10 | ঙ 11 | চ চকু 12 | ছ ছবি 13 | জ জগত 14 | ঝ ঝৰণা 15 | 16 | ট টকা 17 | ঠ ঠোঁট 18 | ড ডিঙি 19 | ঢ ঢোল 20 | ণ 21 | ত তুমি 22 | থ থাল 23 | দ দলঙ 24 | ধ ধ্যান 25 | ন নাক 26 | প পানি 27 | ফ ফূল 28 | ব ভাতি 29 | ভ ভাট 30 | ম মাতি 31 | য যুগ 32 | ৰ ৰঙ 33 | ল লেখক 34 | ৱ 35 | শ শব্দ 36 | ষ ষাৰগৰূ 37 | স সমান 38 | হ হাতী 39 | য় য়াক 40 | ক্ষ ক্ষমা 41 | ং 42 | ৎ 43 | ঁ 44 | -------------------------------------------------------------------------------- /source/locale/pt_PT/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Portuguese (Portugal) characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2011 Diogo Costa and Elton Lopes 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Chárli 10 | d Délta 11 | e Éco 12 | f Fóx Tróte 13 | g Golfe 14 | h Hotel 15 | i Índia 16 | j Julieta 17 | k Kilo 18 | l Lima 19 | m Maike 20 | n Novembro 21 | o Oscar 22 | p Papa 23 | q Quebéc 24 | r Romeu 25 | s Siérra 26 | t Tango 27 | u Uniforme 28 | v Vítor 29 | w Uíski 30 | x Xis Ray 31 | y Iânqui 32 | z Zúlu 33 | -------------------------------------------------------------------------------- /source/nvdaBuiltin.py: -------------------------------------------------------------------------------- 1 | #nvdaBuiltin.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #This file is covered by the GNU General Public License. 4 | #See the file COPYING for more details. 5 | #Copyright (C) 2012 NV Access Limited 6 | 7 | """Provides access to built-in NVDA modules where they have been overridden by third party modules. 8 | This should only be used by overriding modules to extend the built-in module. 9 | For example, if an add-on overrides the skype app module but wants to access the built-in module, 10 | it can do this by importing nvdaBuiltin.appModules.skype. 11 | """ 12 | 13 | import os 14 | 15 | __path__ = [os.path.dirname(__file__)] 16 | -------------------------------------------------------------------------------- /source/locale/sv/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Swedish characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2011 NVDA contributers 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Adam 8 | b Bertil 9 | c Cesar 10 | d David 11 | e Erik 12 | f Filip 13 | g Gustav 14 | h Helge 15 | i Ivar 16 | j Johan 17 | k Kalle 18 | l Ludvig 19 | m Martin 20 | n Niklas 21 | o Olof 22 | p Petter 23 | q Qvintus 24 | r Rudolf 25 | s Sigurd 26 | t Tore 27 | u Urban 28 | v Viktor 29 | w Wilhelm 30 | x Xerxes 31 | y Yngve 32 | z Zäta 33 | å Åke 34 | ä Ärlig 35 | ö Östen 36 | -------------------------------------------------------------------------------- /source/appModules/zoom.py: -------------------------------------------------------------------------------- 1 | #appModules/zoom.py: 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #Copyright (C) 2018 NV Access Limited,Derek Riemer 4 | #This file is covered by the GNU General Public License. 5 | #See the file COPYING for more details. 6 | 7 | import appModuleHandler 8 | import eventHandler 9 | 10 | class AppModule(appModuleHandler.AppModule): 11 | def __init__(self,*args,**kwargs): 12 | super(AppModule,self).__init__(*args,**kwargs) 13 | #Explicetly allow alert events for zoom's chat windows. 14 | #Zoom alerts are not zoom foreground window descendants. 15 | eventHandler.requestEvents("alert",processId=self.processID,windowClassName="zoom_acc_notify_wnd") 16 | -------------------------------------------------------------------------------- /source/locale/en/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #English characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright (c) 2010-2011 World Light Information Limited and Hong Kong Blind Union. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Charlie 10 | d Delta 11 | e Echo 12 | f Foxtrot 13 | g Golf 14 | h Hotel 15 | i India 16 | j Juliet 17 | k Kilo 18 | l Lima 19 | m Mike 20 | n November 21 | o Oscar 22 | p Papa 23 | q Quebec 24 | r Romeo 25 | s Sierra 26 | t Tango 27 | u Uniform 28 | v Victor 29 | w Whiskey 30 | x Xray 31 | y Yankee 32 | z Zulu 33 | -------------------------------------------------------------------------------- /source/locale/ky/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #English characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2011 World Light Information Limited and Hong Kong Blind Union. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Charlie 10 | d Delta 11 | e Echo 12 | f Foxtrot 13 | g Golf 14 | h Hotel 15 | i India 16 | j Juliet 17 | k Kilo 18 | l Lima 19 | m Mike 20 | n November 21 | o Oscar 22 | p Papa 23 | q Quebec 24 | r Romeo 25 | s Sierra 26 | t Tango 27 | u Uniform 28 | v Victor 29 | w Whiskey 30 | x Xray 31 | y Yankee 32 | z Zulu 33 | -------------------------------------------------------------------------------- /source/locale/my/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #English characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2011 World Light Information Limited and Hong Kong Blind Union. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Charlie 10 | d Delta 11 | e Echo 12 | f Foxtrot 13 | g Golf 14 | h Hotel 15 | i India 16 | j Juliet 17 | k Kilo 18 | l Lima 19 | m Mike 20 | n November 21 | o Oscar 22 | p Papa 23 | q Quebec 24 | r Romeo 25 | s Sierra 26 | t Tango 27 | u Uniform 28 | v Victor 29 | w Whiskey 30 | x Xray 31 | y Yankee 32 | z Zulu 33 | -------------------------------------------------------------------------------- /source/locale/nb_NO/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Norwegian characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2012 NVDA contributers 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Charlie 10 | d Delta 11 | e Echo 12 | f Foxtrot 13 | g Golf 14 | h Hotel 15 | i India 16 | j Juliett 17 | k Kilo 18 | l Lima 19 | m Mike 20 | n November 21 | o Oscar 22 | p Papa 23 | q Quebec 24 | r Romeo 25 | s Sierra 26 | t Tango 27 | u Uniform 28 | v Victor 29 | w Whiskey 30 | x X-ray 31 | y Yankee 32 | z Zulu 33 | å Åke 34 | æ Ægir 35 | ø Ørnulf 36 | å Ågot -------------------------------------------------------------------------------- /source/locale/nn_NO/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Norwegian characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright (c) 2012 NVDA contributers 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Charlie 10 | d Delta 11 | e Echo 12 | f Foxtrot 13 | g Golf 14 | h Hotel 15 | i India 16 | j Juliett 17 | k Kilo 18 | l Lima 19 | m Mike 20 | n November 21 | o Oscar 22 | p Papa 23 | q Quebec 24 | r Romeo 25 | s Sierra 26 | t Tango 27 | u Uniform 28 | v Victor 29 | w Whiskey 30 | x X-ray 31 | y Yankee 32 | z Zulu 33 | å Åke 34 | æ Ægir 35 | ø Ørnulf 36 | å Ågot -------------------------------------------------------------------------------- /source/locale/sq/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #English characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright (c) 2010-2011 World Light Information Limited and Hong Kong Blind Union. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Altin 8 | b Bledi 9 | c Cërrik 10 | d Delfin 11 | e Ermir 12 | f Fatjon 13 | g Gëzim 14 | h Hotel 15 | i Info 16 | j Jakup 17 | k Kilogram 18 | l Lima 19 | m Mikel 20 | n Nëntor 21 | o Oscar 22 | p Paulin 23 | q Qytet 24 | r Romeo 25 | s Sapun 26 | t Tango 27 | u Uniform 28 | v Viktor 29 | w Whiskey 30 | x Xixëllonjë 31 | y Ylber 32 | z Zamira 33 | -------------------------------------------------------------------------------- /source/brailleDisplayDrivers/noBraille.py: -------------------------------------------------------------------------------- 1 | #brailleDisplayDrivers/noBraille.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #Copyright (C) 2006-2009 NVDA Contributors 4 | #This file is covered by the GNU General Public License. 5 | #See the file COPYING for more details. 6 | 7 | import braille 8 | 9 | class BrailleDisplayDriver(braille.BrailleDisplayDriver): 10 | """A dummy braille display driver used to disable braille in NVDA. 11 | """ 12 | name = "noBraille" 13 | # Translators: Is used to indicate that braille support will be disabled. 14 | description = _("No braille") 15 | 16 | @classmethod 17 | def check(cls): 18 | return True 19 | -------------------------------------------------------------------------------- /source/locale/mni/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | অ অঙাং 2 | আ আলু 3 | ই ইরোই 4 | ঈ ঈল 5 | উ উপাল 6 | ঊ ঊচি 7 | ঋ ঋশি 8 | এ কাগগাডী 9 | ঐ ঐ 10 | ও ওঝা 11 | ঔ ঔ 12 | অং অং Lর 13 | অঃ অঃ 14 | ক কৈ 15 | খ খজিং 16 | গ গমলা 17 | ঘ ঘড়ী 18 | ঙ ঙা 19 | চ চফূ 20 | ছ ছাটিন 21 | জ জীপ 22 | ঝ ঝাল 23 | ঞ ঞ 24 | ট টূপী 25 | ঠ ঠেলাগাড়ী 26 | ড ডম্বূব় 27 | ঢ ঢোল 28 | ন ন 29 | ত তেব়ং 30 | থ থম্বাল 31 | দ দলাল 32 | ধ ধুলোক 33 | ন নোংমৈ 34 | প পুং 35 | ফ পমুং 36 | ব বালতিন 37 | ভ ভারত 38 | ম মকু 39 | য যম 40 | র রেলগাড়ী 41 | ল লফোয় 42 | w wuইনু 43 | শ শীংজং 44 | ষ ষন 45 | স সনাবুল 46 | হ হৌদোং 47 | য় য়েন 48 | q q 49 | ড় ড় 50 | ঢ় ঢ় 51 | ং ং 52 | ঃ ঃ 53 | ঁ ঁ 54 | D D 55 | -------------------------------------------------------------------------------- /source/locale/ru/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | review_currentCharacter = kb(laptop):NVDA+ю 3 | review_currentWord = kb(laptop):NVDA+control+ю 4 | review_currentLine = kb(laptop):NVDA+shift+ю 5 | leftMouseClick = kb(laptop):NVDA+х 6 | rightMouseClick = kb(laptop):NVDA+ъ 7 | toggleLeftMouseButton = kb(laptop):NVDA+control+х 8 | toggleRightMouseButton = kb(laptop):NVDA+control+ъ 9 | reportFocusObjectAccelerator = kb(laptop):NVDA+control+shift+ю 10 | [browseMode.BrowseModeDocumentTreeInterceptor] 11 | moveToStartOfContainer = kb:shift+б 12 | movePastEndOfContainer = kb:б 13 | [NVDAObjects.window.winword.WordDocument] 14 | increaseDecreaseFontSize = kb:control+х, kb:control+ъ 15 | -------------------------------------------------------------------------------- /source/locale/uk/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Ukrainian characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: http://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | а Анекдот 7 | б Байка 8 | в Візок 9 | г Годинник 10 | ґ ґанок 11 | д Дім 12 | е Ернест 13 | є Єдність 14 | ж Жайворонок 15 | з Зошит 16 | и И 17 | і Іскра 18 | ї Їжак 19 | й Йосиф 20 | к Курка 21 | л Лінгвістика 22 | м Місто 23 | н Населення 24 | о Офіс 25 | п Парламент 26 | р Регіон 27 | с Студент 28 | т Тролейбус 29 | у Україна 30 | ф Футбол 31 | х Хоробрість 32 | ц Центр 33 | ч Чайник 34 | ш Швидкість 35 | щ Щастя 36 | ю Юність 37 | я Японія -------------------------------------------------------------------------------- /tests/system/nvdaSettingsFiles/standard-dontShowWelcomeDialog.ini: -------------------------------------------------------------------------------- 1 | schemaVersion = 2 2 | [general] 3 | language = en 4 | showWelcomeDialogAtStartup = False 5 | [update] 6 | askedAllowUsageStats = True 7 | autoCheck = False 8 | startupNotification = False 9 | allowUsageStats = False 10 | [speech] 11 | synth = speechSpySynthDriver 12 | [development] 13 | enableScratchpadDir = True 14 | [virtualBuffers] 15 | autoSayAllOnPageLoad = False 16 | passThroughAudioIndication = False 17 | [annotations] 18 | reportDetails = True 19 | [vision] 20 | [[NVDAHighlighter]] 21 | enabled = True 22 | highlightFocus = True 23 | highlightNavigator = True 24 | highlightBrowseMode = True 25 | -------------------------------------------------------------------------------- /tests/unit/test_checkPot/firstMessage.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) 2006-2020 NVDA Contributors 3 | # 4 | #, fuzzy 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: NVDA Unit Tests\n" 8 | "Unit-Test: test_checkPot.TestCheckPot.test_checkPot_firstMessage\n" 9 | "Description: Below, the first message has intentionally missing translators comments\n" 10 | 11 | #: NVDAHelper.py:261 12 | msgid "Native input" 13 | msgstr "" 14 | 15 | #. Translators: a mode that lets you type in alpha numeric (roman/english) characters, rather than 'native' characters for the east-Asian input method language currently selected. 16 | #: NVDAHelper.py:263 17 | msgid "Alpha numeric input" 18 | msgstr "" 19 | -------------------------------------------------------------------------------- /source/appModules/audacity.py: -------------------------------------------------------------------------------- 1 | # -*- coding: UTF-8 -*- 2 | # A part of NonVisual Desktop Access (NVDA) 3 | # Copyright (C) 2006-2019 NV Access Limited, Robert Hänggi, Łukasz Golonka 4 | # This file is covered by the GNU General Public License. 5 | # See the file COPYING for more details. 6 | 7 | import appModuleHandler 8 | import controlTypes 9 | 10 | class AppModule(appModuleHandler.AppModule): 11 | 12 | def event_NVDAObject_init(self,obj): 13 | if ( 14 | obj.windowClassName == "Button" 15 | and obj.role not in [controlTypes.Role.MENUBAR, controlTypes.Role.MENUITEM, controlTypes.Role.POPUPMENU] 16 | and obj.name is not None 17 | ): 18 | obj.name=obj.name.replace('&','') 19 | -------------------------------------------------------------------------------- /source/appModules/webconferenceplugin.py: -------------------------------------------------------------------------------- 1 | #webconferenceplugin.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #Copyright (C) 2016 NV Access Limited, Derek Riemer 4 | #This file is covered by the GNU General Public License. 5 | #See the file COPYING for more details. 6 | 7 | """ AppModule to remove redundant progressbar announcement from the web conference plugin. """ 8 | import appModuleHandler 9 | from NVDAObjects.behaviors import ProgressBar 10 | 11 | class AppModule(appModuleHandler.AppModule): 12 | def chooseNVDAObjectOverlayClasses(self, obj, clsList): 13 | if obj.windowClassName=="msctls_progress32": 14 | try: 15 | clsList.remove(ProgressBar) 16 | except ValueError: 17 | pass 18 | -------------------------------------------------------------------------------- /tests/unit/test_checkPot/lastMessage.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) 2006-2020 NVDA Contributors 3 | # 4 | #, fuzzy 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: NVDA Unit Tests\n" 8 | "Unit-Test: test_checkPot.TestCheckPot.test_checkPot_lastMessage\n" 9 | "Description: Below, the last message has intentionally missing translators comments\n" 10 | 11 | #. Translators: A mode that allows typing in the actual 'native' characters for an east-Asian input method language currently selected, rather than alpha numeric (Roman/English) characters. 12 | #: NVDAHelper.py:261 13 | msgid "Native input" 14 | msgstr "" 15 | 16 | #: NVDAHelper.py:263 17 | msgid "Alpha numeric input" 18 | msgstr "" 19 | -------------------------------------------------------------------------------- /source/locale/de/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #German characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2012 NVDA contributors. 5 | 6 | a Aachen 7 | ä Umlaut Aachen 8 | b Berlin 9 | c Chemnitz 10 | d Düsseldorf 11 | e Essen 12 | f Frankfurt 13 | g Goslar 14 | h Hamburg 15 | i Ingelheim 16 | j Jena 17 | k Köln 18 | l Leipzig 19 | m München 20 | n Nürnberg 21 | o Offenbach 22 | ö Umlaut Offenbach 23 | p Potsdam 24 | q Quickborn 25 | r Rostock 26 | s Salzwedel 27 | ß Eszett 28 | t Tübingen 29 | u Unna 30 | ü Umlaut Unna 31 | v Völklingen 32 | w Wuppertal 33 | x Xanten 34 | y Ypsilon 35 | z Zwickau 36 | -------------------------------------------------------------------------------- /cldrDict_sconscript: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2018-2022 NV Access Limited 3 | # This file may be used under the terms of the GNU General Public License, version 2 or later. 4 | # For more details see: https://www.gnu.org/licenses/gpl-2.0.html 5 | 6 | 7 | import typing 8 | if typing.TYPE_CHECKING: 9 | import SCons 10 | from SCons import( 11 | Dir, 12 | Import, 13 | ) 14 | 15 | sourceDir: "SCons.Node.FS.Dir" 16 | env: "SCons.Environment.Base" 17 | Import( 18 | 'env', 19 | 'sourceDir', 20 | ) 21 | 22 | targetCldrDir = sourceDir.Dir('locale') 23 | cldrDataSource = Dir("include/nvda-cldr/locale") 24 | 25 | env.RecursiveInstall( 26 | targetCldrDir, 27 | cldrDataSource.abspath 28 | ) 29 | -------------------------------------------------------------------------------- /source/locale/ka/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Georgian characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2016 Georgian contributors of NVDA 5 | #This file is covered by the GNU General Public License. 6 | 7 | ა არწივი 8 | ბ ბურთი 9 | გ გრიგალი 10 | დ დილა 11 | ე ენა 12 | ვ ვაზი 13 | ზ ზარი 14 | თ თოკი 15 | ი იხვი 16 | კ კომში 17 | ლ ლარნაკი 18 | მ მარწყვი 19 | ნ ნიავი 20 | ო ოქრო 21 | პ პური 22 | ჟ ჟოლო 23 | რ რემა 24 | ს სორო 25 | ტ ტალახი 26 | უ უსტარი 27 | ფ ფანქარი 28 | ქ ქარი 29 | ღ ღორი 30 | ყ ყანა 31 | შ შუქი 32 | ჩ ჩირი 33 | ც ციყვი 34 | ძ ძოწი 35 | წ წიწვი 36 | ჭ ჭრიჭინა 37 | ხ ხე 38 | ჯ ჯაჭვი 39 | ჰ ჰამაკი -------------------------------------------------------------------------------- /source/locale/mn/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Mongolian characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Data from CRLP NUM 5 | #This file is covered by the GNU General Public License. 6 | 7 | а аав 8 | б баатар 9 | в ваар 10 | г гэр 11 | д дарга 12 | е еэвэн 13 | ё ёолк 14 | ж жижүүр 15 | з зөгий 16 | и иргэн 17 | й хагас ий 18 | к кино 19 | л лийр 20 | м монгол 21 | н нар 22 | о од 23 | п пионер 24 | р роман 25 | с сүү 26 | т туулай 27 | у уул 28 | ф Фабрик 29 | х хийл 30 | ц цаг 31 | ч чихэр 32 | ш шатар 33 | щ щчорс 34 | ъ хатуугийн тэмдэг 35 | ы жаран нэгийн ий 36 | ь зөөлний тэмдэг 37 | э эх 38 | ю юм 39 | я яагаад 40 | -------------------------------------------------------------------------------- /source/locale/ga/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Gaeilge characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2013 NVDA Contributors 5 | #This file is covered by the GNU General Public License. 6 | # 7 | # Note from Mesar: these are just the english names, please modify as needed. Thanks. 8 | 9 | a Alfa 10 | b Bravo 11 | c Charlie 12 | d Delta 13 | e Echo 14 | f Foxtrot 15 | g Golf 16 | h Hotel 17 | i India 18 | j Juliet 19 | k Kilo 20 | l Lima 21 | m Mike 22 | n November 23 | o Oscar 24 | p Papa 25 | q Quebec 26 | r Romeo 27 | s Sierra 28 | t Tango 29 | u Uniform 30 | v Victor 31 | w Whiskey 32 | x Xray 33 | y Yankee 34 | z Zulu 35 | -------------------------------------------------------------------------------- /source/locale/nl/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Dutch characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2011-2012 NVDA contributers 5 | #This file is covered by the GNU General Public License. 6 | #Source (in Dutch): https://www.onzetaal.nl/taaladvies/advies/telefoonalfabet 7 | 8 | a Anton 9 | b Bernard 10 | c Cornelis 11 | d Dirk 12 | e Eduard 13 | f Ferdinand 14 | g Gerard 15 | h Hendrik 16 | i Izaak 17 | j Jan 18 | k Karel 19 | l Lodewijk 20 | m Marie 21 | n Nico 22 | o Otto 23 | p Pieter 24 | q Quotiënt 25 | r Rudolf 26 | s Simon 27 | t Teunis 28 | u Utrecht 29 | v Victor 30 | w Willem 31 | x Xantippe 32 | y Ypsilon 33 | z Zaandam 34 | -------------------------------------------------------------------------------- /nvdaHelper/interfaces/vbuf/vbuf.acf: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2010 NVDA contributers. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | [strict_context_handle] 16 | interface VBuf { 17 | } 18 | -------------------------------------------------------------------------------- /nvdaHelper/remote/inProcess.h: -------------------------------------------------------------------------------- 1 | #ifndef NVDAHELPERREMOTE_INPROCESS_H 2 | #define NVDAHELPERREMOTE_INPROCESS_H 3 | 4 | //in-process hook callbacks 5 | void CALLBACK inProcess_winEventCallback(HWINEVENTHOOK hookID, DWORD eventID, HWND hwnd, long objectID, long childID, DWORD threadID, DWORD time); 6 | LRESULT CALLBACK inProcess_getMessageHook(int code, WPARAM wParam, LPARAM lParam); 7 | LRESULT CALLBACK inProcess_callWndProcHook(int code, WPARAM wParam,LPARAM lParam); 8 | 9 | //Initialization / termination 10 | void inProcess_initialize(); 11 | void inProcess_terminate(); 12 | 13 | #include 14 | typedef std::function execInThread_funcType; 15 | bool execInThread(long threadID, execInThread_funcType func); 16 | 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /runlint.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem runlint [] 3 | rem Lints any changes after base commit up to and including current HEAD, plus any uncommitted changes. 4 | set hereOrig=%~dp0 5 | set here=%hereOrig% 6 | if #%hereOrig:~-1%# == #\# set here=%hereOrig:~0,-1% 7 | set scriptsDir=%here%\venvUtils 8 | set lintFilesPath=%here%\tests\lint 9 | 10 | call "%scriptsDir%\venvCmd.bat" py "%lintFilesPath%\genDiff.py" %1 "%lintFilesPath%\_lint.diff" 11 | if ERRORLEVEL 1 exit /b %ERRORLEVEL% 12 | set flake8Args=--diff --config="%lintFilesPath%\flake8.ini" 13 | if "%2" NEQ "" set flake8Args=%flake8Args% --tee --output-file=%2 14 | type "%lintFilesPath%\_lint.diff" | call "%scriptsDir%\venvCmd.bat" py -Xutf8 -m flake8 %flake8Args% 15 | 16 | -------------------------------------------------------------------------------- /source/appModules/1password.py: -------------------------------------------------------------------------------- 1 | # appModules/1password.py 2 | # A part of NonVisual Desktop Access (NVDA) 3 | # Copyright (C) 2020 James Teh 4 | # This file is covered by the GNU General Public License. 5 | # See the file COPYING for more details. 6 | 7 | import appModuleHandler 8 | import UIAHandler 9 | 10 | 11 | class AppModule(appModuleHandler.AppModule): 12 | 13 | def shouldProcessUIAPropertyChangedEvent(self, sender, propertyId): 14 | if propertyId in ( 15 | UIAHandler.UIA_NamePropertyId, 16 | UIAHandler.UIA_ItemStatusPropertyId, 17 | UIAHandler.UIA_IsEnabledPropertyId 18 | ): 19 | # #10508: 1Password floods property change events, resulting in very poor 20 | # performance. Just drop them. 21 | return False 22 | return True 23 | -------------------------------------------------------------------------------- /source/locale/hu/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Hungarian characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2011-2012 NVDA Hungarian Localisation Project 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Aladár 8 | b Béla 9 | c Cecília 10 | d Dénes 11 | e Elemér 12 | f Ferenc 13 | g Géza 14 | h Hugó 15 | i Ildikó 16 | j Júlia 17 | k Kálmán 18 | l László 19 | m Miklós 20 | n Noémi 21 | o Olga 22 | p Péter 23 | q Aquincum 24 | r Róbert 25 | s Sándor 26 | t Tamás 27 | u Ubul 28 | v Viktor 29 | w Weöres 30 | x Xéna 31 | y Yacht 32 | z Zoltán 33 | á Ádám 34 | é Éva 35 | í Írisz 36 | ó óra 37 | ö Ödön 38 | ő őz 39 | ú út 40 | ü Ürmös 41 | ű űr 42 | -------------------------------------------------------------------------------- /source/locale/kmr/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #kurdish kurmanci characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2011 World Light Information Limited and Hong Kong Blind Union. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Azadi 8 | b Bakur 9 | c Ciwan 10 | ç Çîrok 11 | d Destan 12 | ê Êzîdî 13 | e Erê 14 | f Firat 15 | g Gulîstan 16 | h Havîn 17 | î Îsot 18 | i I mina I'ya Jiyan 19 | j Jin 20 | k Kurdistan 21 | l Lêkolîn 22 | m Malbat 23 | n Nêçîr 24 | o Oremar 25 | p Paytext 26 | q Qamişlo 27 | r Rojava 28 | s Serxwebûn 29 | ş Şirnex 30 | t Tembûr 31 | û û 32 | u Urmê 33 | v Viyan 34 | w Welat 35 | x Xezal 36 | y Yekitî 37 | z Zap 38 | -------------------------------------------------------------------------------- /tests/system/settingsCache/2020.4/Object Presentation.txt: -------------------------------------------------------------------------------- 1 | Object Presentation property page 2 | Report tooltips check box not checked Alt plus t 3 | Report notifications check box checked Alt plus n 4 | Report object shortcut keys check box checked Alt plus k 5 | Report object position information check box checked Alt plus p 6 | Guess object position information when unavailable check box not checked Alt plus g 7 | Report object descriptions check box checked Alt plus d 8 | Progress bar output: combo box Beep collapsed Alt plus b 9 | Report background progress bars check box not checked Alt plus r 10 | Report dynamic content changes check box checked Alt plus c 11 | Play a sound when auto suggestions appear check box checked Alt plus a 12 | OK button -------------------------------------------------------------------------------- /nvdaHelper/remote/nvdaHelperRemote.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | injection_initialize 3 | injection_terminate 4 | initInprocManagerThreadIfNeeded 5 | installIA2Support 6 | uninstallIA2Support 7 | registerWinEventHook 8 | unregisterWinEventHook 9 | registerWindowsHook 10 | unregisterWindowsHook 11 | execInThread 12 | logMessage 13 | NVDALogCrtReportHook 14 | nvdaInProcUtils_winword_expandToLine 15 | nvdaControllerInternal_logMessage 16 | nvdaControllerInternal_vbufChangeNotify 17 | nvdaControllerInternal_installAddonPackageFromPath 18 | nvdaController_testIfRunning 19 | nvdaController_speakText 20 | nvdaController_cancelSpeech 21 | nvdaController_brailleMessage 22 | nvdaControllerInternal_reportLiveRegion 23 | nvdaControllerInternal_openConfigDirectory 24 | -------------------------------------------------------------------------------- /source/locale/pl/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Polish characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | 5 | 6 | a Adam 7 | ą ą 8 | b Barbara 9 | c Celina 10 | d Dorota 11 | e Ewa 12 | ę ę 13 | f Franciszek 14 | g Grażyna 15 | h Henryk 16 | i Irena 17 | j Jadwiga 18 | k Karol 19 | l Ludwik 20 | ł ł 21 | m Maria 22 | n Natalia 23 | o Olga 24 | p Paweł 25 | q kłantum 26 | r Roman 27 | s Stanisław 28 | t Tadeusz 29 | u Urszula 30 | v Violetta 31 | w Wacław 32 | x Xsantypa 33 | y Ypsylon 34 | z Zygmunt 35 | 36 | # White space characters 37 | Spacja zwykła 38 |   niełamliwa spacja 39 |   okrągła spacja 40 |   półokrągła spacja 41 |   spacja cienka 42 |   wąska niełamliwa spacja 43 | -------------------------------------------------------------------------------- /extras/controllerClient/examples/example_csharp/SymbolLevel.cs: -------------------------------------------------------------------------------- 1 | // Copyright(C) 2017-2023 NV Access Limited, Arnold Loubriat, Leonard de Ruijter 2 | // This file is covered by the GNU Lesser General Public License, version 2.1. 3 | // See the file license.txt for more details. 4 | 5 | namespace NVAccess.NVDA 6 | { 7 | /// 8 | /// The desired symbol level in a speech sequence. 9 | /// This should match the SYMBOL_LEVEL enum in nvdaController.h, which itself matches the characterProcessing.SymbolLevel enum in NVDA. 10 | /// 11 | public enum SymbolLevel 12 | { 13 | None = 0, 14 | Some = 100, 15 | Most = 200, 16 | All = 300, 17 | Char = 1000, 18 | Unchanged = -1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /source/locale/ro/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #English characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2011 World Light Information Limited and Hong Kong Blind Union. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Ana 8 | b Barbu 9 | c Constantin 10 | d Dumitru 11 | e Elena 12 | f Florian 13 | g Gheorghe 14 | h Horia 15 | i Ion 16 | j Jan 17 | k Kilogram 18 | l Lazăr 19 | m Maria 20 | n Nicolae 21 | o Olga 22 | p Petre 23 | q Qatar 24 | r Radu 25 | s Sandu 26 | t Tudor 27 | u Udrea 28 | v Vasile 29 | w Watt 30 | x Xenia 31 | y Yemen 32 | z Zaharia 33 | ă ălălalt 34 | î încăpere 35 | â î din a 36 | ș Ștefan 37 | ş şarpe 38 | ț Țiriac 39 | ţ ţap 40 | -------------------------------------------------------------------------------- /nvdaHelper/vbufBackends/webKit/sconscript: -------------------------------------------------------------------------------- 1 | ### 2 | #This file is a part of the NVDA project. 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright 2011-2016 NV Access Limited 5 | #This program is free software: you can redistribute it and/or modify 6 | #it under the terms of the GNU General Public License version 2.0, as published by 7 | #the Free Software Foundation. 8 | #This program is distributed in the hope that it will be useful, 9 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | #This license can be found at: 12 | #http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | ### 14 | 15 | Import([ 16 | 'env', 17 | ]) 18 | 19 | webKitBackendLib=env.Object("webKit.cpp") 20 | 21 | Return('webKitBackendLib') 22 | -------------------------------------------------------------------------------- /nvdaHelper/vbufBackends/gecko_ia2/sconscript: -------------------------------------------------------------------------------- 1 | ### 2 | #This file is a part of the NVDA project. 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright 2006-2010 NVDA contributers. 5 | #This program is free software: you can redistribute it and/or modify 6 | #it under the terms of the GNU General Public License version 2.0, as published by 7 | #the Free Software Foundation. 8 | #This program is distributed in the hope that it will be useful, 9 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | #This license can be found at: 12 | #http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | ### 14 | 15 | Import([ 16 | 'env', 17 | ]) 18 | 19 | geckoBackendLib=env.Object("gecko_ia2.cpp") 20 | 21 | Return('geckoBackendLib') 22 | -------------------------------------------------------------------------------- /source/locale/hr/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Croatian characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | 5 | 6 | a Alan 7 | b Biokovo 8 | c Cavtat 9 | č Čakovec 10 | ć Ćilipi 11 | d Dubrovnik 12 | đ Đakovo 13 | e Europa 14 | f Frankopan 15 | g Gospić 16 | h Hrvatska 17 | i Istra 18 | j Jadran 19 | k Karlovac 20 | l Lika 21 | m Makarska 22 | n Novska 23 | o Osijek 24 | p Pula 25 | q qú 26 | r Rijeka 27 | s Split 28 | š Šibenik 29 | t Trogir 30 | u Učka 31 | v Vukovar 32 | w Duplo ve 33 | x Iks 34 | y Ipsilon 35 | z Zagreb 36 | ž Županja 37 | 38 | # White space characters 39 | Običan razmak 40 |   nerazdijelni razmak 41 |   okrugli razmak 42 |   poluokrugli razmak 43 |   tanki razmak 44 |   uski nerazdijelni razmak 45 | -------------------------------------------------------------------------------- /extras/controllerClient/examples/example_rust/cargo.toml: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2023 NV Access Limited, Leonard de Ruijter 3 | # This file may be used under the terms of the GNU Lesser General Public License, version 2.1. 4 | # For more details see: https://www.gnu.org/licenses/lgpl-2.1.html 5 | 6 | [package] 7 | name = "nvda" 8 | version = "0.1.0" 9 | authors = ["NV Access Limited", "Leonard de Ruijter"] 10 | description = "Wrapper for the NVDA Controller client library" 11 | repository = "https://github.com/nvaccess/nvda/" 12 | readme = "README.md" 13 | links = "nvdaControllerClient" 14 | publish = false 15 | edition = "2021" 16 | 17 | [build-dependencies] 18 | bindgen = "0.69.1" 19 | 20 | [dependencies.windows] 21 | version = "0.52" 22 | features = [ 23 | "Win32_Foundation", 24 | ] 25 | -------------------------------------------------------------------------------- /nvdaHelper/remote/winword.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2010 NVDA contributers. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | #ifndef WINWORD_H 16 | #define WINWORD_H 17 | 18 | void winword_inProcess_initialize(); 19 | void winword_inProcess_terminate(); 20 | 21 | #endif -------------------------------------------------------------------------------- /source/winAPI/constants.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2022 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | 6 | import enum 7 | 8 | 9 | class HResult(enum.IntEnum): 10 | # https://docs.microsoft.com/en-us/windows/win32/seccrypto/common-hresult-values 11 | S_OK = 0x00000000 12 | E_ACCESS_DENIED = 0x80070005 # E_ACCESSDENIED 13 | E_INVALID_ARG = 0x80070057 # E_INVALIDARG 14 | 15 | 16 | class SystemErrorCodes(enum.IntEnum): 17 | # https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499- 18 | SUCCESS = 0x0 19 | ACCESS_DENIED = 0x5 20 | INVALID_DATA = 0xD 21 | NOT_READY = 0x15 22 | INVALID_PARAMETER = 0x57 23 | MOD_NOT_FOUND = 0x7E 24 | CANCELLED = 0x4C7 25 | -------------------------------------------------------------------------------- /nvdaHelper/local/rpcSrv.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2010 NVDA contributers. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | #ifndef RPCSRV_H 16 | #define RPCSRV_H 17 | 18 | #include 19 | 20 | RPC_STATUS startServer(); 21 | RPC_STATUS stopServer(); 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /source/locale/he/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Hebrew characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2012 NVDA Contributors. 5 | #This file is covered by the GNU General Public License. 6 | #Provided by - Shmuel Naaman . 7 | 8 | א אלף Aallef 9 | ב בעז Bet 10 | ג גימל Gheemele 11 | ד דוד Dalede 12 | ה הגר Hey 13 | ו וו Vav 14 | ז זאב Zyne 15 | ח חוה Het 16 | ט טיח Tet 17 | י יונה Yood 18 | ך כף-סופית Haf so-feet 19 | כ כרמל Haf 20 | ל לאה Lammede 21 | ם מם-סופית Mem so-feet 22 | מ משה Mem 23 | ן נון-סופית Noon so-feet 24 | נ נשר Noon 25 | ס סמך Sammehe 26 | ע עין Ayne 27 | ף פיי-סופית Pey so-feet 28 | פ פסל Pey 29 | ץ צדיק-סופית Tsadik so-feet 30 | צ ציפור Tsadik 31 | ק קורח Koof 32 | ר רות Resh 33 | ש שמיר Sheen 34 | ת תלם Taf 35 | -------------------------------------------------------------------------------- /tests/system/settingsCache/2020.4/Keyboard.txt: -------------------------------------------------------------------------------- 1 | Keyboard property page 2 | Keyboard layout: combo box desktop collapsed Alt plus k 3 | Select NVDA Modifier Keys list 4 | caps lock check box not checked 5 | Speak typed characters check box checked Alt plus c 6 | Speak typed words check box not checked Alt plus w 7 | Speech interrupt for typed characters check box checked Alt plus i 8 | Speech interrupt for Enter key check box checked Alt plus n 9 | Allow skim reading in Say All check box not checked Alt plus r 10 | Beep if typing lowercase letters when caps lock is on check box checked Alt plus b 11 | Speak command keys check box not checked Alt plus o 12 | Play sound for spelling errors while typing check box checked Alt plus s 13 | Handle keys from other applications check box checked Alt plus a 14 | OK button -------------------------------------------------------------------------------- /source/locale/ar/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+ج 3 | toggleLeftMouseButton = kb(laptop):NVDA+control+ج 4 | rightMouseClick = kb(laptop):NVDA+د 5 | toggleRightMouseButton = kb(laptop):NVDA+control+د 6 | review_currentLine = kb(laptop):shift+NVDA+ز 7 | review_currentWord = kb(laptop):control+NVDA+ز 8 | review_currentCharacter = kb(laptop):NVDA+ز 9 | reportFocusObjectAccelerator =kb(laptop):control+shift+NVDA+ز 10 | navigatorObject_previousInFlow =kb(laptop):NVDA++shift+ج 11 | navigatorObject_nextInFlow =kb(laptop):NVDA+shift+د 12 | 13 | [virtualBuffers.VirtualBuffer] 14 | moveToStartOfContainer = kb(laptop):shift+و 15 | movePastEndOfContainer = kb(laptop):و 16 | [NVDAObjects.window.winword.WordDocument] 17 | increaseDecreaseFontSize = kb:control+ج, kb:control+د 18 | 19 | 20 | -------------------------------------------------------------------------------- /source/locale/bn/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Bengali characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: http://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | অ অজগর 7 | আ আম 8 | ই ইঁদুর 9 | ঈ ঈগল 10 | এ এক্কা গাড়ী 11 | ঐ ঐরাবত 12 | ও ওল 13 | ঔ ঔষধ 14 | ঋ ঋষি 15 | ক কলম 16 | খ খড়ম 17 | গ গরু 18 | ঘ ঘর 19 | ঙ উঁয়ো 20 | চ চড়াই 21 | ছ ছাতা 22 | জ জাল 23 | ঝ ঝড় 24 | ঞ ইঁয়ো 25 | ট টুপি 26 | ঠ ঠিকানা 27 | ড ডালিম 28 | ঢ ঢাকনা 29 | ণ বাণ 30 | ত তাল 31 | থ থাম 32 | দ দই 33 | ধ ধরনী 34 | ন নরুন 35 | প পরী 36 | ফ ফড়িং 37 | ব বই 38 | ভ ভাল্লুক 39 | ম মশা 40 | য় অন্ত্যস্থ য 41 | য যাতনা 42 | র রাত্রি 43 | ড় ডয় শুন্য ড় 44 | ঢ় ঢয় শুন্য ঢ় 45 | ল ললাট 46 | শ শরীর 47 | স সকাল 48 | ষ ষাঁড় 49 | হ হলুদ 50 | ং অনুস্বর 51 | ঁ চন্দ্রবিন্দু 52 | ঃ বিসর্গ 53 | -------------------------------------------------------------------------------- /source/vision/constants.py: -------------------------------------------------------------------------------- 1 | # vision/constants.py 2 | # A part of NonVisual Desktop Access (NVDA) 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | # Copyright (C) 2018-2019 NV Access Limited, Babbage B.V. 6 | 7 | """Constants for the vision framework. 8 | """ 9 | 10 | from enum import Enum 11 | 12 | 13 | class Context(str, Enum): 14 | """Context for events received by providers. 15 | Typically this informs of the cause of the event. 16 | For example, L{focus} is used when an event is triggered by the focus object or a focus change. 17 | """ 18 | FOCUS = "focus" 19 | FOREGROUND = "foreground" 20 | NAVIGATOR = "navigator" 21 | FOCUS_NAVIGATOR = "focusNavigator" 22 | CARET = "caret" 23 | BROWSEMODE = "browseMode" 24 | REVIEW = "review" 25 | MOUSE = "mouse" 26 | -------------------------------------------------------------------------------- /nvdaHelper/vbufBackends/lotusNotesRichText/sconscript: -------------------------------------------------------------------------------- 1 | ### 2 | #This file is a part of the NVDA project. 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright 2006-2010 NVDA contributers. 5 | #This program is free software: you can redistribute it and/or modify 6 | #it under the terms of the GNU General Public License version 2.0, as published by 7 | #the Free Software Foundation. 8 | #This program is distributed in the hope that it will be useful, 9 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | #This license can be found at: 12 | #http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | ### 14 | 15 | Import([ 16 | 'env', 17 | ]) 18 | 19 | lotusNotesRichTextBackendLib=env.Object("lotusNotesRichText.cpp") 20 | 21 | Return('lotusNotesRichTextBackendLib') 22 | -------------------------------------------------------------------------------- /nvdaHelper/vbufBackends/mshtml/sconscript: -------------------------------------------------------------------------------- 1 | ### 2 | #This file is a part of the NVDA project. 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright 2006-2010 NVDA contributers. 5 | #This program is free software: you can redistribute it and/or modify 6 | #it under the terms of the GNU General Public License version 2.0, as published by 7 | #the Free Software Foundation. 8 | #This program is distributed in the hope that it will be useful, 9 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | #This license can be found at: 12 | #http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | ### 14 | 15 | Import([ 16 | 'env', 17 | ]) 18 | 19 | mshtmlBackendLib=[ 20 | env.Object("mshtml.cpp"), 21 | env.Object("node.cpp"), 22 | ] 23 | 24 | Return('mshtmlBackendLib') 25 | -------------------------------------------------------------------------------- /nvdaHelper/remote/rpcSrv.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2010 NVDA contributers. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | #ifndef RPCSRV_H 16 | #define RPCSRV_H 17 | 18 | extern HANDLE nvdaUnregisteredEvent; 19 | 20 | RPC_STATUS rpcSrv_initialize(); 21 | void rpcSrv_terminate(); 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /source/NVDAObjects/IAccessible/delphi.py: -------------------------------------------------------------------------------- 1 | from NVDAObjects import behaviors 2 | import controlTypes 3 | from . import IAccessible 4 | 5 | class TRichView(IAccessible): 6 | 7 | def _get_name(self): 8 | pass 9 | 10 | def _get_role(self): 11 | return controlTypes.Role.STATICTEXT 12 | 13 | class TRichViewEdit(IAccessible): 14 | 15 | def _get_name(self): 16 | pass 17 | 18 | def _get_role(self): 19 | return controlTypes.Role.EDITABLETEXT 20 | 21 | class TGroupBox(IAccessible): 22 | 23 | def _get_role(self): 24 | return controlTypes.Role.GROUPING 25 | 26 | class Form(behaviors.Dialog): 27 | 28 | role=controlTypes.Role.DIALOG 29 | 30 | class TabSheet(behaviors.Dialog): 31 | 32 | role=controlTypes.Role.PROPERTYPAGE 33 | 34 | class TRxRichEdit(IAccessible): 35 | 36 | def _get_name(self): 37 | return None 38 | -------------------------------------------------------------------------------- /source/locale/kn/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Kannada characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | ಅ ಅಗಸ 7 | ಆ ಆನೆ 8 | ಇ ಇಲಿ 9 | ಈ ಈಶ 10 | ಉ ಉಗಮ 11 | ಊ ಊರು 12 | ಋ ಋಷಿ 13 | ಎ ಎಲೆ 14 | ಏ ಏಣಿ 15 | ಐ ಐರಾವತ 16 | ಒ ಒಮ್ಮೆ 17 | ಓ ಓದು 18 | ಔ ಔಷಧ 19 | ಅಂ ಅಂಗಡಿ 20 | ಅಃ ಅಃಆ 21 | ಕ ಕನಕ 22 | ಖ ಖಗ್ಗ 23 | ಗ ಗಣಪ 24 | ಘ ಘಂಟೆ 25 | ಞ 26 | ಚ ಚಮಚ 27 | ಛ ಛತ್ರಿ 28 | ಜ ಜಗ 29 | ಝ ಝರಿ 30 | ಙ 31 | ಟ ಟಗರು 32 | ಠ ಠಕ್ಕ 33 | ಡ ಡಬ್ಬ 34 | ಢ ಢಣ್ ಢಣ್ 35 | ಣ ಹಣ್ಣು ಅಣ್ಣ 36 | ತ ತವರು 37 | ಥ ಥಳಥಳ ಥಂಡಿ 38 | ದ ದೇಶ 39 | ಧ ಧರಿಸು 40 | ನ ನವಿಲು 41 | ಪ ಪಂಗಡ 42 | ಫ ಫಲ 43 | ಬ ಬಸವ 44 | ಭ ಭಾರತ 45 | ಮ ಮಂಜು 46 | ಯ ಯಮ 47 | ರ ರಸ 48 | ಲ ಲವ 49 | ವ ವಶ 50 | ಶ ಶಂಕರ 51 | ಷ ಷನ್ಮುಕ 52 | ಸ ಸಬೆ 53 | ಹ ಹಲ್ಲು 54 | ಳ ನಳ 55 | ಕ್ಷ ಕ್ಷಮೆ 56 | ಜ್ಞ ಜ್ಞಾಪಕ 57 | -------------------------------------------------------------------------------- /source/controlTypes/descriptionFrom.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2021 NV Access Limited 5 | 6 | from enum import ( 7 | auto, 8 | Enum, 9 | ) 10 | 11 | 12 | class DescriptionFrom(Enum): 13 | """Values to use within NVDA to denote possible values for DescriptionFrom. 14 | These are used to determine how the source of the 'description' property if an NVDAObject. 15 | """ 16 | UNKNOWN = auto() 17 | ARIA_DESCRIPTION = "aria-description" 18 | ARIA_DESCRIBED_BY = "aria-describedby" 19 | RUBY_ANNOTATION = "ruby-annotation" 20 | SUMMARY = "summary" 21 | TABLE_CAPTION = "table-caption" 22 | TOOLTIP = "tooltip" # (either via @title or aria-describedby + role="tooltip") 23 | BUTTON_LABEL = "button-label" 24 | -------------------------------------------------------------------------------- /tests/system/settingsCache/2020.4/Browse Mode.txt: -------------------------------------------------------------------------------- 1 | Browse Mode property page 2 | Maximum number of characters on one line edit Alt plus m selected 100 3 | Number of lines per page edit Alt plus n selected 25 4 | Use screen layout (when supported) check box checked Alt plus s 5 | Enable browse mode on page load check box checked Alt plus e 6 | Automatic Say All on page load check box not checked Alt plus s 7 | Include layout tables check box not checked Alt plus a 8 | Automatic focus mode for focus changes check box checked 9 | Automatic focus mode for caret movement check box not checked 10 | Audio indication of focus and browse modes check box not checked 11 | Trap all non command gestures from reaching the document check box checked Alt plus t 12 | Automatically set system focus to focusable elements check box not checked Alt plus f 13 | OK button -------------------------------------------------------------------------------- /tests/unit/test_util/test_displayString.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2021 NV Access Limited. 5 | 6 | """Unit tests for the displayString submodule. 7 | """ 8 | 9 | import unittest 10 | from utils.displayString import DisplayStringEnum 11 | 12 | 13 | class ExampleEnum(DisplayStringEnum): 14 | foo = "bar" 15 | lorem = "ipsum" 16 | 17 | @property 18 | def _displayStringLabels(self): 19 | return {self.foo: "this is foo from ExampleEnum"} 20 | 21 | 22 | class TestDisplayStringEnum(unittest.TestCase): 23 | def test_displayString(self): 24 | self.assertEqual(ExampleEnum.foo.displayString, "this is foo from ExampleEnum") 25 | with self.assertRaises(KeyError): 26 | ExampleEnum.lorem.displayString 27 | -------------------------------------------------------------------------------- /source/NVDAObjects/UIA/anaheimEdge.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2020 NV Access Limited 5 | 6 | """ 7 | UIA.anaheim_edge module for specialisations required for Chromium based Edge (code name anaheim). 8 | Note that the UIA.chromium module provides base behaviour for all Chromium based browsers, whereas this 9 | (anaheim_edge) module is only concerned with the window chrome / widgets that are specific to the browser. 10 | 11 | This file is currently a placeholder, this line can be deleted when this file is populated. Normally blank 12 | files would not be included in NVDA's repository, however in this case it has been in order to head off any 13 | confusion between the two very different implementations of Edge. 14 | """ 15 | -------------------------------------------------------------------------------- /tests/system/settingsCache/2020.4/Speech.txt: -------------------------------------------------------------------------------- 1 | Speech property page 2 | Synthesizer grouping 3 | Synthesizer edit read only multi line Alt plus s System test speech spy 4 | Change... button Alt plus h 5 | Automatic language switching (when supported) check box checked 6 | Automatic dialect switching (when supported) check box not checked 7 | Punctuation slash symbol level: combo box some collapsed Alt plus l 8 | Trust voice's language when processing characters and symbols check box checked 9 | Include Unicode Consortium data (including emoji) when processing characters and symbols check box checked 10 | Capital pitch change percentage edit selected 30 11 | Say cap before capitals check box not checked Alt plus c 12 | Beep for capitals check box not checked Alt plus b 13 | Use spelling functionality if supported check box checked Alt plus s 14 | OK button -------------------------------------------------------------------------------- /tests/system/settingsCache/2020.4/General.txt: -------------------------------------------------------------------------------- 1 | General property page 2 | NVDA Language (requires restart): combo box User default collapsed Alt plus l 3 | Save configuration when exiting NVDA check box checked Alt plus s 4 | Show exit options when exiting NVDA check box checked Alt plus w 5 | Play sounds when starting or exiting NVDA check box checked Alt plus p 6 | Start NVDA after I sign in check box not checked Alt plus a 7 | Use NVDA during sign in (requires administrator privileges) check box not checked 8 | Use currently saved settings during sign in and on secure screens (requires administrator privileges) button 9 | Automatically check for updates to NVDA check box not checked Alt plus u 10 | Notify for pending update on startup check box not checked Alt plus p 11 | Allow the NVDA project to gather NVDA usage statistics check box not checked 12 | OK button -------------------------------------------------------------------------------- /nvdaHelper/remote/nvdaController.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | Copyright 2023 NV Access Limited, Leonard de Ruijter. 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License version 2.0, as published by 6 | the Free Software Foundation. 7 | This program is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 | This license can be found at: 11 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 12 | */ 13 | 14 | #define WIN32_LEAN_AND_MEAN 15 | 16 | #include 17 | #include 18 | 19 | error_status_t __stdcall nvdaController_onSsmlMarkReached(const wchar_t* mark) { 20 | return ERROR_SUCCESS; 21 | } 22 | -------------------------------------------------------------------------------- /source/comInterfaces/readme.md: -------------------------------------------------------------------------------- 1 | The comInterfaces package is generated via SCons. 2 | The logic for this is in `comInterfaces_sconscript`, which uses `comtypes.gen` to read `*.tlb` 3 | files or via interface IDs. 4 | 5 | The interface files have an ID named file (a GUID, followed by a version number) as well as a 6 | "friendly name" file. 7 | 8 | The "friendly name" file generated by comtypes is not consumed easily by tools and IDEs, 9 | runtime logic is used to expose symbols. 10 | To remedy this, the file is then processed by `comInterfaces_sconscript` to extract the module 11 | name and replace the import statement with a more elaborate approach which includes a fallback 12 | for the purposes of IDEs and tools. 13 | 14 | Only UIAutomation.py is not generated, UIA has historically been updated regularly and the version on 15 | Appveyor build servers could not be guaranteed. 16 | 17 | -------------------------------------------------------------------------------- /source/locale/lt/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | # Lithuanian characterDescriptions.dic 2 | # A part of NonVisual Desktop Access (NVDA) 3 | # URL: https://www.nvda-project.org/ 4 | # Copyright (c) 2016 Rimas Kudelis . 5 | # Based on Lithuanian phonetic alphabet for radio amateurs. 6 | # This file is covered by the GNU General Public License. 7 | 8 | a Antanas 9 | b Birutė 10 | c Centras 11 | d Danutė 12 | e Eglė 13 | f Feliksas 14 | g Giedrius 15 | h Henrikas 16 | i Irena 17 | j Jonas 18 | k Kęstutis 19 | l Leonas 20 | m Marytė 21 | n Nijolė 22 | o Ona 23 | p Petras 24 | q Kvebekas 25 | r Romas 26 | s Saulius 27 | t Tomas 28 | u Uršulė 29 | v Vytautas 30 | w Vašingtonas 31 | x Iksas 32 | y Ygrekas 33 | z Zenonas 34 | 35 | ą Ąžuolas 36 | č Česlovas 37 | ę E nosinė 38 | ė Ėglius 39 | į Y nosinė 40 | š Šarūnas 41 | ų Ū nosinė 42 | ū Ūla 43 | ž Žilvinas 44 | -------------------------------------------------------------------------------- /source/locale/es_CO/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+GRAVE 3 | toggleLeftMouseButton = kb(laptop):NVDA+control+GRAVE 4 | rightMouseClick = kb(laptop):NVDA+plus 5 | toggleRightMouseButton = kb(laptop):NVDA+control+plus 6 | [NVDAObjects.window.winword.WordDocument] 7 | None = kb:control+a, kb:control+b, kb:control+i, kb:control+u, kb:control+l, kb:control+r, kb:control+shift+n, "kb:control+shift+," 8 | increaseDecreaseFontSize = kb:control+<, kb:control+shift+< 9 | toggleAlignment = kb:control+t, kb:control+d, kb:control+q 10 | toggleBold = kb:control+n 11 | toggleItalic = kb:control+k 12 | toggleUnderline = kb:control+s 13 | toggleSuperscriptSubscript = kb:control+plus 14 | increaseDecreaseOutlineLevel = kb:control+shift+1, kb:control+shift+2, kb:control+shift+3 15 | [editableText.EditableText] 16 | caret_changeSelection = kb:control+e 17 | -------------------------------------------------------------------------------- /nvdaHelper/local/beeps.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2015 NVDA contributers. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | #ifndef BEEPS_H_INCLUDED 16 | #define BEEPS_H_INCLUDED 17 | 18 | #include "nvdaHelperLocal.h" 19 | 20 | int generateBeep(short* buf, const float hz, const int length, const int left=50, const int right=50); 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /nvdaHelper/remote/ia2LiveRegions.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2021 NV Access Limited 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | #include 15 | 16 | #ifndef IA2LIVEREGIONS_H 17 | #define IA2LIVEREGIONS_H 18 | 19 | 20 | void ia2LiveRegions_inProcess_initialize(); 21 | void ia2LiveRegions_inProcess_terminate(); 22 | 23 | #endif // IA2LIVEREGIONS_H 24 | -------------------------------------------------------------------------------- /projectDocs/design/displayModel.md: -------------------------------------------------------------------------------- 1 | # Display model 2 | 3 | The display model (part of NVDA Helper), is a legacy mechanism for scraping 4 | information during the rendering of GUI applications. 5 | 6 | For information on working in this area see the `NVDAHelper/readme.md` file. 7 | 8 | ## Testing GDI applications 9 | To test: 10 | - Use `NVDA+numPad 7` to enter screen review mode. 11 | - Use the number pad to read lines (7, 8, 9), read words, (4, 5, 6), or characters (1, 2, 3). 12 | 13 | Additionally 14 | - Use `NVDA+shift+f` to report formatting. 15 | 16 | Note: 17 | - For color reporting enable the option (via Document formatting panel) _"report color"_. 18 | - To report transparencies in color enable the option (via advanced settings panel) _"Report transparent color values"_. 19 | 20 | There are several simple test applications available: 21 | https://github.com/nvaccess/testDisplayModel 22 | -------------------------------------------------------------------------------- /source/message.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 26 | 27 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /appveyor/scripts/decryptFilesForSigning.ps1: -------------------------------------------------------------------------------- 1 | if(!$env:APPVEYOR_PULL_REQUEST_NUMBER) { 2 | openssl enc -d -md sha256 -aes-256-cbc -pbkdf2 -salt -pass pass:$env:secure_authenticode_pass -in appveyor\authenticode.pfx.enc -out appveyor\authenticode.pfx 3 | if($LastExitCode -ne 0) { 4 | $errorCode=$LastExitCode 5 | Add-AppveyorMessage "Unable to decrypt authenticode certificate" 6 | } 7 | openssl enc -d -md sha256 -aes-256-cbc -pbkdf2 -salt -pass pass:$env:secure_ssh_pass -in appveyor\ssh_id_rsa.enc -out appveyor\ssh_id_rsa 8 | if($LastExitCode -ne 0) { 9 | $errorCode=$LastExitCode 10 | Add-AppveyorMessage "Unable to decrypt ssh key" 11 | } 12 | # Install ssh stuff. 13 | Copy-Item -Path appveyor\ssh_id_rsa -Destination $env:userprofile\.ssh\id_rsa 14 | } 15 | Copy-Item -Path appveyor\ssh_known_hosts -Destination $env:userprofile\.ssh\known_hosts 16 | if ($errorCode -ne 0) { $host.SetShouldExit($errorCode) } 17 | -------------------------------------------------------------------------------- /source/fonts/readme.md: -------------------------------------------------------------------------------- 1 | ## Fonts 2 | 3 | This folder contains fonts (and their projects files) used by NVDA. 4 | 5 | ### FreeMono-FixedBraille.ttf 6 | 7 | This font is based on the `FreeMono.ttf` font in the `freefont-20100919-ttf` folder. 8 | Its fontforge project is `freeMono-fixedBraille.sfd` 9 | 10 | Many of the braille characters in `FreeMono.ttf` were offset (in different directions). 11 | This meant that the characters appeared to jump around when they were updated, such as when displaying the caret 12 | position. 13 | This font, `FreeMono-FixedBraille.ttf`, adjusts all braille characters to a common position. 14 | The dot positions are based on the final 8 dot braille character, ⣿ (all pins up) `U+28FF`. 15 | 16 | ### Editing 17 | 18 | The free outline font editor, George Williams's FontForge 19 | https://github.com/fontforge/fontforge/releases is used for editing the fonts via the `*.sfd` file. 20 | 21 | -------------------------------------------------------------------------------- /source/images/nvda.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 16 | 17 | 18 | 19 | 28 | 29 | -------------------------------------------------------------------------------- /source/appModules/symphony.py: -------------------------------------------------------------------------------- 1 | #appModules/soffice.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #This file is covered by the GNU General Public License. 4 | #See the file COPYING for more details. 5 | #Copyright (C) 2006-2010 Michael Curran 6 | 7 | import appModuleHandler 8 | import controlTypes 9 | from NVDAObjects.window import Window 10 | from NVDAObjects.IAccessible import IAccessible 11 | 12 | class AppModule(appModuleHandler.AppModule): 13 | 14 | def event_valueChange(self,obj,nextHandler): 15 | #Ignore value changes from an annoying progress bar which is a child of the main window 16 | #that keeps moving due to application performance 17 | if isinstance(obj,IAccessible) and obj.role==controlTypes.Role.PROGRESSBAR: 18 | windowParent=Window._get_parent(obj) 19 | if windowParent and windowParent.windowClassName=="SWT_Window0": 20 | return 21 | return nextHandler() 22 | -------------------------------------------------------------------------------- /nvdaHelper/remote/typedCharacter.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2010 NVDA contributers. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | #ifndef TYPEDCHARACTER_H 16 | #define TYPEDCHARACTER_H 17 | 18 | #include 19 | 20 | extern HWND typedCharacter_window; 21 | 22 | void typedCharacter_inProcess_initialize(); 23 | void typedCharacter_inProcess_terminate(); 24 | 25 | #endif -------------------------------------------------------------------------------- /nvdaHelper/remote/tsf.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2010-2012 World Light Information Limited and Hong Kong Blind Union. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | #ifndef TSF_H 16 | #define TSF_H 17 | 18 | void TSF_inProcess_initialize(); 19 | void TSF_inProcess_terminate(); 20 | void TSF_thread_detached(); 21 | bool isTSFThread(); 22 | extern CLSID curTSFClsID; 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /nvdaHelper/vbufBackends/adobeAcrobat/sconscript: -------------------------------------------------------------------------------- 1 | ### 2 | #This file is a part of the NVDA project. 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright 2006-2010 NVDA contributers. 5 | #This program is free software: you can redistribute it and/or modify 6 | #it under the terms of the GNU General Public License version 2.0, as published by 7 | #the Free Software Foundation. 8 | #This program is distributed in the hope that it will be useful, 9 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | #This license can be found at: 12 | #http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | ### 14 | 15 | Import([ 16 | 'env', 17 | 'acrobatAccessRPCStubs', 18 | ]) 19 | 20 | adobeAcrobatBackendLib=[ 21 | env.Object("adobeAcrobat.cpp"), 22 | env.Object('_acrobatAccess_i',acrobatAccessRPCStubs[2]), 23 | ] 24 | 25 | Return('adobeAcrobatBackendLib') 26 | -------------------------------------------------------------------------------- /nvdaHelper/remote/dllmain.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2010 NVDA contributers. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | #ifndef NVDAHELPEREMOTE_DLLMAIN_H 16 | #define NVDAHELPEREMOTE_DLLMAIN_H 17 | 18 | #include 19 | #include 20 | 21 | extern HINSTANCE dllHandle; 22 | extern wchar_t dllDirectory[MAX_PATH]; 23 | extern bool isProcessExiting; 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /projectDocs/design/synthesizers.md: -------------------------------------------------------------------------------- 1 | # Synthesizers 2 | 3 | ## SAPI 4 4 | 5 | SAPI 4 synthesizers are not included with NVDA, and the runtimes are no longer included with Windows. 6 | Despite this, SAPI 4 support is still required, as many users prefer older synthesizers which rely on the SAPI 4 API. 7 | 8 | To test SAPI 4, you must install the SAPI 4 runtimes from Microsoft, as well as a synthesizer. 9 | Microsoft no longer hosts downloads for these, but archives and mirrors exist. 10 | 11 | 1. Download and install the SAPI 4 runtimes from [this Microsoft archive](http://web.archive.org/web/20150910165037/http://activex.microsoft.com/activex/controls/sapi/spchapi.exe). 12 | 1. Download and install a SAPI 4 synthesizer from [this Microsoft archive](http://web.archive.org/web/20150910005021if_/http://activex.microsoft.com/activex/controls/agent2/tv_enua.exe) 13 | 14 | After this, you should be able to select SAPI 4 as a NVDA synthesizer. 15 | -------------------------------------------------------------------------------- /source/locale/gu/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Gujarati characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: http://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | ક કલમ 7 | ખ ખટારો 8 | ગ ગાય 9 | ઘ ઘડિયાળ 10 | ચ ચકલી 11 | છ છત્રી 12 | જ જમરુખ 13 | ઝ ઝાડ 14 | ટ ટપાલ 15 | ઠ ઠડિયો 16 | ડ ડગલો 17 | ઢ ઢગલો 18 | ણ ફેણ મા ણ 19 | ત તલવાર 20 | થ થાળી 21 | દ દડો 22 | ધ ધજા 23 | ન નગારું 24 | પ પતંગ 25 | ફ ફાનસ 26 | બ બકરી 27 | ભ ભમરડો 28 | મ મરચું 29 | ય યતીશ 30 | ર રથ 31 | લ લખોટા 32 | વ વહાણ 33 | શ શકોરું 34 | ષ ષડ્કોણ 35 | સ સસલું 36 | હ હરણ 37 | ળ નળ મા ળ 38 | જ્ઞ જ્ઞાનેશ્વર 39 | 40 | અ અગ્નિ 41 | આ આગગાડી 42 | ઇ ઇમારત 43 | ઈ ઈશાન 44 | ઉ ઉશા 45 | ઊ ઊંટ 46 | એ એરણ 47 | ઐ ઐરાવત 48 | ઓ ઓશિકું 49 | ઔ ઔષધી 50 | ઋ ઋષિ 51 | ઙ 52 | ઞ 53 | એ એરણ 54 | ઐ ઐરાવત 55 | ઑ 56 | ઓ ઓશિકું 57 | ઔ ઔષધી 58 | અં 59 | અઃ 60 | અઁ 61 | 62 | 63 | -------------------------------------------------------------------------------- /nvdaHelper/remote/ime.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2010-2012 World Light Information Limited and Hong Kong Blind Union. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | #ifndef IME_H 16 | #define IME_H 17 | 18 | void IME_inProcess_initialize(); 19 | void IME_inProcess_terminate(); 20 | extern HWND curIMEWindow; 21 | 22 | void handleIMEConversionModeUpdate(HWND hwnd, bool report); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /source/locale/an/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+GRAVE 3 | toggleLeftMouseButton = kb(laptop):NVDA+control+GRAVE 4 | rightMouseClick = kb(laptop):NVDA+plus 5 | toggleRightMouseButton = kb(laptop):NVDA+control+plus 6 | [NVDAObjects.window.winword.WordDocument] 7 | None = kb:control+a, kb:control+b, kb:control+i, kb:control+u, kb:control+l, kb:control+r, kb:control+shift+n, "kb:control+shift+,", kb:control+alt+1, kb:control+alt+2, kb:control+alt+3 8 | increaseDecreaseFontSize = kb:control+<, kb:control+shift+< 9 | toggleAlignment = kb:control+t, kb:control+d, kb:control+q 10 | toggleBold = kb:control+n 11 | toggleItalic = kb:control+k 12 | toggleUnderline = kb:control+s 13 | toggleSuperscriptSubscript = kb:control+plus 14 | increaseDecreaseOutlineLevel = kb:control+shift+1, kb:control+shift+2, kb:control+shift+3 15 | [editableText.EditableText] 16 | caret_changeSelection = kb:control+e 17 | -------------------------------------------------------------------------------- /source/IAccessibleHandler/types.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2020-2021 NV Access Limited 3 | # This file may be used under the terms of the GNU General Public License, version 2 or later. 4 | # For more details see: https://www.gnu.org/licenses/gpl-2.0.html 5 | 6 | 7 | """Types used in IAccessibleHander. 8 | Kept here so they can be re-used without having to worry about circular imports. 9 | """ 10 | import enum 11 | from typing import Tuple 12 | 13 | IAccessibleObjectIdentifierType = Tuple[ 14 | int, # windowHandle 15 | int, # objectID 16 | int, # childID 17 | ] 18 | 19 | 20 | # IAccessible2 relations (not included in the typelib) 21 | @enum.unique 22 | class RelationType(str, enum.Enum): 23 | FLOWS_FROM = "flowsFrom" 24 | FLOWS_TO = "flowsTo" 25 | CONTAINING_DOCUMENT = "containingDocument" 26 | DETAILS = "details" 27 | DETAILS_FOR = "detailsFor" 28 | CONTROLLER_FOR = "controllerFor" 29 | -------------------------------------------------------------------------------- /tests/unit/test_nvwave.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2023 NV Access Limited, Babbage B.V., Leonard de Ruijter 5 | 6 | """Unit tests for the nvwave module. 7 | """ 8 | 9 | import unittest 10 | import nvwave 11 | from .extensionPointTestHelpers import deciderTester 12 | import os.path 13 | import globalVars 14 | 15 | 16 | class TestNVWaveExtensionPoints(unittest.TestCase): 17 | """A test for the extension points on the nvwave module.""" 18 | 19 | def test_decide_playWaveFile(self): 20 | kwargs = { 21 | "fileName": os.path.join(globalVars.appDir, "waves", "start.wav"), 22 | "asynchronous": False, 23 | "isSpeechWaveFileCommand": False 24 | } 25 | with deciderTester( 26 | self, 27 | nvwave.decide_playWaveFile, 28 | expectedDecision=False, 29 | **kwargs 30 | ): 31 | nvwave.playWaveFile(**kwargs) 32 | -------------------------------------------------------------------------------- /nvdaHelper/interfaces/displayModel/displayModel.acf: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2010 NVDA contributers. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | interface DisplayModel { 16 | [fault_status,comm_status] getWindowTextInRect(); 17 | [fault_status,comm_status] getFocusRect(); 18 | [fault_status,comm_status] getCaretRect(); 19 | [fault_status,comm_status] requestTextChangeNotificationsForWindow(); 20 | } 21 | -------------------------------------------------------------------------------- /projectDocs/dev/buildingDevDocumentation.md: -------------------------------------------------------------------------------- 1 | Before building developer documentation, [create your developer environment](./createDevEnvironment.md). 2 | 3 | ### Building developer documentation 4 | 5 | To generate the NVDA developer guide, type: 6 | 7 | ```cmd 8 | scons developerGuide 9 | ``` 10 | 11 | The developer guide will be placed in the `devDocs` folder in the output directory. 12 | 13 | To generate the HTML-based source code documentation, type: 14 | 15 | ```cmd 16 | scons devDocs 17 | ``` 18 | 19 | The documentation will be placed in the `NVDA` folder in the output directory. 20 | 21 | ### Building nvdaHelper developer documentation 22 | 23 | To generate developer documentation for nvdaHelper (not included in the devDocs target): 24 | 25 | ``` 26 | scons devDocs_nvdaHelper 27 | ``` 28 | 29 | The documentation will be placed in the folder `\output\devDocs\nvdaHelper`. 30 | This requires having Doxygen installed. 31 | -------------------------------------------------------------------------------- /source/locale/ru/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Russian characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Data from https://ru.wikipedia.org/wiki/Фонетический_алфавит 5 | #This file is covered by the GNU General Public License. 6 | 7 | а Анна 8 | б Борис 9 | в Василий 10 | г Григорий 11 | д Дмитрий 12 | е Елена 13 | ё Ёлка 14 | ж Женя 15 | з Зинаида 16 | и Иван 17 | й Иван краткий 18 | к Константин 19 | л Леонид 20 | м Михаил 21 | н Николай 22 | о Ольга 23 | п Павел 24 | р Роман 25 | с Семён 26 | т Татьяна 27 | у Ульяна 28 | ф Фёдор 29 | х Харитон 30 | ц Цапля 31 | ч Человек 32 | ш Шура 33 | щ Щука 34 | ъ Твёрдый знак 35 | ы Еры 36 | ь Мягкий знак 37 | э Эхо 38 | ю Юрий 39 | я Яков 40 | 41 | # White space characters 42 | обычный пробел 43 |   неразрывный пробел 44 |   круглая шпация 45 |   полукруглая шпация 46 |   тонкая шпация 47 |   узкий неразрывный пробел 48 | -------------------------------------------------------------------------------- /nvdaHelper/client/nvdaControllerClient.def: -------------------------------------------------------------------------------- 1 | ;;; 2 | ;This file is a part of the NVDA project. 3 | ;URL: http://www.nvda-project.org/ 4 | ;Copyright 2006-2023 NV Access Limited, Leonard de Ruijter. 5 | ;This program is free software: you can redistribute it and/or modify 6 | ;it under the terms of the GNU Lesser General Public License version 2.1, as published by 7 | ;the Free Software Foundation. 8 | ;This program is distributed in the hope that it will be useful, 9 | ;but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | ;This license can be found at: 12 | ;http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html 13 | ;;; 14 | 15 | EXPORTS 16 | nvdaController_testIfRunning 17 | nvdaController_speakText 18 | nvdaController_cancelSpeech 19 | nvdaController_brailleMessage 20 | nvdaController_getProcessId 21 | nvdaController_speakSsml 22 | nvdaController_setOnSsmlMarkReachedCallback 23 | -------------------------------------------------------------------------------- /source/appModules/microsoftedge.py: -------------------------------------------------------------------------------- 1 | # MicrosoftEdge.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #This file is covered by the GNU General Public License. 4 | #See the file COPYING for more details. 5 | #Copyright (C) 2018 NV Access Limited, Joseph Lee 6 | 7 | """appModule for Microsoft Edge main process""" 8 | 9 | import appModuleHandler 10 | import api 11 | import ui 12 | 13 | class AppModule(appModuleHandler.AppModule): 14 | 15 | def event_UIA_notification(self, obj, nextHandler, displayString=None, **kwargs): 16 | # #8423: even though content process is focused, notifications are fired by main Edge process. 17 | # The base object will simply ignore this, so notifications must be announced here and no more. 18 | # And no, notifications should be limited to Edge context - that is, focused item is part of Edge (both main and content processes). 19 | if api.getFocusObject().appModule.appName.startswith("microsoftedge"): 20 | ui.message(displayString) 21 | 22 | -------------------------------------------------------------------------------- /nvdaHelper/remote/inputLangChange.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2010 NVDA contributers. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | #ifndef INPUTLANGCHANGE_H 16 | #define INPUTLANGCHANGE_H 17 | 18 | #include 19 | #include 20 | 21 | //Event IDs 22 | #define EVENT_INPUTLANGCHANGE 0x1001 23 | 24 | void inputLangChange_inProcess_initialize(); 25 | void inputLangChange_inProcess_terminate(); 26 | 27 | #endif -------------------------------------------------------------------------------- /source/hwIo/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2015-2021 NV Access Limited, Babbage B.V. 5 | 6 | 7 | """Raw input/output for braille displays via serial and HID. 8 | See the L{Serial} and L{Hid} classes. 9 | Braille display drivers must be thread-safe to use this, as it utilises a background thread. 10 | See L{braille.BrailleDisplayDriver.isThreadSafe}. 11 | """ 12 | 13 | 14 | from .base import ( # noqa: F401 15 | IoBase, 16 | Serial, 17 | Bulk, 18 | boolToByte, 19 | intToByte, 20 | getByte 21 | ) 22 | from .hid import Hid # noqa: F401 23 | from .ioThread import IoThread 24 | 25 | bgThread: IoThread 26 | 27 | 28 | def initialize(): 29 | global bgThread 30 | bgThread = IoThread() 31 | bgThread.start() 32 | 33 | 34 | def terminate(): 35 | global bgThread 36 | bgThread.stop() 37 | bgThread = None 38 | -------------------------------------------------------------------------------- /source/locale/fi/gestures.ini: -------------------------------------------------------------------------------- 1 | [cursorManager.CursorManager] 2 | find = kb:control+f 3 | findNext = kb:f3 4 | findPrevious = kb:shift+f3 5 | 6 | [globalCommands.GlobalCommands] 7 | None = kb(laptop):NVDA+[, kb(laptop):NVDA+], kb(laptop):NVDA+control+[, kb(laptop):NVDA+control+], kb(laptop):shift+NVDA+[, kb(laptop):shift+NVDA+] 8 | leftMouseClick = kb(laptop):NVDA+ö 9 | toggleLeftMouseButton = kb(laptop):NVDA+control+ö 10 | rightMouseClick = kb(laptop):NVDA+ä 11 | toggleRightMouseButton = kb(laptop):NVDA+control+ä 12 | navigatorObject_previousInFlow = kb(laptop):shift+NVDA+i 13 | navigatorObject_nextInFlow = kb(laptop):shift+NVDA+o 14 | 15 | [NVDAObjects.window.winword.WordDocument] 16 | None = kb:control+[, kb:control+], kb:control+=, kb:control+shift+= 17 | increaseDecreaseFontSize = kb:control+<, kb:control+shift+< 18 | toggleSuperscriptSubscript = kb:control+shift+0, kb:control+plus 19 | 20 | [virtualBuffers.VirtualBuffer] 21 | refreshBuffer = kb:NVDA+escape 22 | -------------------------------------------------------------------------------- /tests/unit/test_tones.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2023 NV Access Limited, Babbage B.V., Leonard de Ruijter 5 | 6 | """Unit tests for the tones module. 7 | """ 8 | 9 | import unittest 10 | import tones 11 | from .extensionPointTestHelpers import deciderTester 12 | 13 | 14 | class TestTonesExtensionPoints(unittest.TestCase): 15 | """A test for the extension points on the tones module.""" 16 | 17 | def setUp(self) -> None: 18 | tones.initialize() 19 | 20 | def tearDown(self) -> None: 21 | tones.terminate() 22 | 23 | def test_decide_beep(self): 24 | kwargs = { 25 | "hz": 440.0, 26 | "length": 500, 27 | "left": 50, 28 | "right": 50, 29 | "isSpeechBeepCommand": False, 30 | } 31 | with deciderTester( 32 | self, 33 | tones.decide_beep, 34 | expectedDecision=False, 35 | **kwargs 36 | ): 37 | tones.beep(**kwargs) 38 | -------------------------------------------------------------------------------- /nvdaHelper/acrobatAccess_sconscript: -------------------------------------------------------------------------------- 1 | ### 2 | #This file is a part of the NVDA project. 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright 2006-2010 NVDA contributers. 5 | #This program is free software: you can redistribute it and/or modify 6 | #it under the terms of the GNU General Public License version 2.0, as published by 7 | #the Free Software Foundation. 8 | #This program is distributed in the hope that it will be useful, 9 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | #This license can be found at: 12 | #http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | ### 14 | 15 | Import('env') 16 | 17 | idlFile=env.Command("acrobatAccess.idl","#/miscDeps/include/acrobatAccess/acrobatAccess.idl",Copy("$TARGET","$SOURCE")) 18 | 19 | tlbFile,headerFile,iidSourceFile,proxySourceFile,dlldataSourceFile=env.TypeLibrary(source=idlFile) 20 | 21 | Return(['tlbFile','headerFile','iidSourceFile']) 22 | 23 | -------------------------------------------------------------------------------- /nvdaHelper/remoteLoader/sconscript: -------------------------------------------------------------------------------- 1 | ### 2 | #This file is a part of the NVDA project. 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright 2006-2010 NVDA contributers. 5 | #This program is free software: you can redistribute it and/or modify 6 | #it under the terms of the GNU General Public License version 2.0, as published by 7 | #the Free Software Foundation. 8 | #This program is distributed in the hope that it will be useful, 9 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | #This license can be found at: 12 | #http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | ### 14 | 15 | Import('env','remoteLib') 16 | 17 | env=env.Clone() 18 | env.Append(LINKFLAGS='/subsystem:windows') 19 | 20 | remoteLoaderProgram=env.Program( 21 | target='nvdaHelperRemoteLoader', 22 | source=[env['projectResFile'],'loader.cpp'], 23 | LIBS=[remoteLib[2],'kernel32'], 24 | ) 25 | 26 | Return('remoteLoaderProgram') 27 | -------------------------------------------------------------------------------- /source/appModules/instantbird.py: -------------------------------------------------------------------------------- 1 | #appModules/instantbird.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #This file is covered by the GNU General Public License. 4 | #See the file COPYING for more details. 5 | #Copyright (C) 2013 NV Access Limited 6 | 7 | """App module for Instantbird 8 | """ 9 | 10 | import appModuleHandler 11 | import NVDAObjects.IAccessible.mozilla 12 | import controlTypes 13 | 14 | class AppModule(appModuleHandler.AppModule): 15 | 16 | def event_NVDAObject_init(self, obj): 17 | if isinstance(obj, NVDAObjects.IAccessible.IAccessible) and obj.windowClassName == "MozillaWindowClass" and not isinstance(obj, NVDAObjects.IAccessible.mozilla.Mozilla) and obj.role == controlTypes.Role.UNKNOWN: 18 | # #2667: This is a Mozilla accessible that has already died. 19 | # Instantbird fires focus on a dead accessible first every time you focus a contact, 20 | # so block focus on these to eliminate annoyance. 21 | obj.shouldAllowIAccessibleFocusEvent = False 22 | -------------------------------------------------------------------------------- /tests/sconscript: -------------------------------------------------------------------------------- 1 | ### 2 | #This file is a part of the NVDA project. 3 | #URL: http://www.nvaccess.org/ 4 | #Copyright 2017 NV Access Limited. 5 | #This program is free software: you can redistribute it and/or modify 6 | #it under the terms of the GNU General Public License version 2.0, as published by 7 | #the Free Software Foundation. 8 | #This program is distributed in the hope that it will be useful, 9 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | #This license can be found at: 12 | #http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | ### 14 | 15 | import checkPot 16 | 17 | Import("env", "sourceDir", "pot") 18 | 19 | def checkPotAction(target, source, env): 20 | return checkPot.checkPot(source[0].abspath) 21 | checkPotTarget = env.Command("checkPot", pot, checkPotAction) 22 | env.Depends(checkPotTarget, pot) 23 | env.AlwaysBuild(checkPotTarget) 24 | env.Alias("checkPot", checkPotTarget) 25 | -------------------------------------------------------------------------------- /source/locale/pa/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Punjabi characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2011 World Light Information Limited and Hong Kong Blind Union. 5 | #This file is covered by the GNU General Public License. 6 | ੳ ਉੰਠ 7 | ਅ ਅਨਾਰ 8 | ੲ ਇਮਲੀ 9 | ਸ ਸਲੇਟ 10 | ਹ ਹਾਥੀ 11 | ਕ ਕਬੁੱਤਰ 12 | ਖ ਖ਼ਰਗੋਸ਼ 13 | ਗ ਗਮਲਾ 14 | ਘ ਘਰ 15 | ਙ ਕ ਵਾਲਾ ਨੇਜ਼ਲ 16 | ਚ ਚਾਕੂ 17 | ਛ ਛਤਰੀ 18 | ਜ ਜਹਾਜ 19 | ਝ ਝੰਡਾ 20 | ਞ ਚ ਵਾਲਾ ਨੇਜ਼ਲ 21 | ਟ ਟਮਾਟਰ 22 | ਠ ਠੇਲਾ 23 | ਡ ਡਮਰੂ 24 | ਢ ਢੱਕਣ 25 | ਣ ਣਾਣਾ ਪਾਣੀ ਵਾਲਾ 26 | ਤ ਤੋਤਾ 27 | ਥ ਥਰਮਸ 28 | ਦ ਦਵਾਤ 29 | ਧ ਧੋਬੀ 30 | ਨ ਨਲਕਾ 31 | ਪ ਪਤੰਗ 32 | ਫ ਫਲ 33 | ਬ ਬਸਤਾ 34 | ਭ ਭਾਲੂ 35 | ਮ ਮਛਲੀ 36 | ਯ ਯੱਕਾ 37 | ਰ ਰਸਤਾ 38 | ਲ ਲਾਟੂ 39 | ਵ ਵਸਤੂ 40 | ੜ ਪੜ ਵਾਲਾ ੜ 41 | 42 | ਸ਼ ਸ਼ਲਗਮ 43 | ਖ਼ ਖ਼ਤ 44 | ਗ਼ ਗ਼ਲਤੀ 45 | ਜ਼ ਜ਼ਮੀਰ 46 | ਫ਼ ਫ਼ਰ੍ਜ਼ 47 | ਲ਼ ਖ਼ਲ਼ਕਤ ਵਿਚ ਲ਼ 48 | 49 | ਾ ਕੰਨਾ 50 | ਿ ਸਿਹਾਰੀ 51 | ੀ ਬਿਹਾਰੀ 52 | ੁ ਔਂਕੜ 53 | ੂ ਦੁਲੈਂਕੜ 54 | ੇ ਲਾਵਾਂ 55 | ੈ ਦਲਾਵਾਂ 56 | ੋ ਹੋੜਾ 57 | ੌ ਕਨੌੜਾ 58 | -------------------------------------------------------------------------------- /user_docs/global.t2tconf: -------------------------------------------------------------------------------- 1 | %!Target: html 2 | %!Encoding: UTF-8 3 | 4 | % Remove the Table of Contents heading from the toc. 5 | %!PostProc(html): '^.*\\
.*\.*$' '' 6 | 7 | % h1 in html should really be the document title only. 8 | % Therefore, change h1 through h5 in the output to h2 through h6. 9 | %!PostProc(html): ^
(.*)
$
\1
10 | %!PostProc(html): ^

(.*)

$
\1
11 | %!PostProc(html): ^

(.*)

$

\1

12 | %!PostProc(html): ^

(.*)

$

\1

13 | %!PostProc(html): ^

(.*)

$

\1

14 | 15 | % Some of our files contain the UTF-8 BOM. 16 | % txt2tags doesn't care about encodings internally, 17 | % so it will just include the BOM at the start of the title. 18 | % Therefore, strip the BOM from the title. 19 | %!PostProc(html): \<(TITLE|H1)\>\xef\xbb\xbf <\1> 20 | 21 | %!Options: --style styles.css 22 | 23 | % This provides the macros NVDA_VERSION, NVDA_URL and NVDA_COPYRIGHT_YEARS. 24 | %!includeconf: build.t2tconf 25 | -------------------------------------------------------------------------------- /source/appModules/teamtalk4classic.py: -------------------------------------------------------------------------------- 1 | #appModules/teamtalk4classic.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #Copyright (C) 2010 NVDA Contributors 4 | #This file is covered by the GNU General Public License. 5 | #See the file COPYING for more details. 6 | 7 | import appModuleHandler 8 | from NVDAObjects.behaviors import ProgressBar 9 | 10 | class AppModule(appModuleHandler.AppModule): 11 | 12 | def event_NVDAObject_init(self,obj): 13 | # The richedit control displaying incoming chat does not return correct _isWindowUnicode flag. 14 | if obj.windowClassName=="RichEdit20A": 15 | obj._isWindowUnicode=False 16 | 17 | def chooseNVDAObjectOverlayClasses(self, obj, clsList): 18 | # There is a VU meter progress bar in the main window which we don't want to get anounced as all the other progress bars. 19 | if obj.windowClassName=="msctls_progress32" and obj.name==u'VU': 20 | try: 21 | clsList.remove(ProgressBar) 22 | except ValueError: 23 | pass 24 | -------------------------------------------------------------------------------- /source/appModules/code.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2020 NV Access Limited, Leonard de Ruijter 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | 6 | """ App module for Visual Studio Code. 7 | """ 8 | 9 | import appModuleHandler 10 | from NVDAObjects.IAccessible.chromium import Document 11 | from NVDAObjects import NVDAObject 12 | 13 | 14 | class VSCodeDocument(Document): 15 | """The only content in the root document node of Visual Studio code is the application object. 16 | Creating a tree interceptor on this object causes a major slow down of Code. 17 | Therefore, forcefully block tree interceptor creation. 18 | """ 19 | _get_treeInterceptorClass = NVDAObject._get_treeInterceptorClass 20 | 21 | 22 | class AppModule(appModuleHandler.AppModule): 23 | 24 | def chooseNVDAObjectOverlayClasses(self, obj, clsList): 25 | if Document in clsList and obj.IA2Attributes.get("tag") == "#document": 26 | clsList.insert(0, VSCodeDocument) 27 | -------------------------------------------------------------------------------- /source/appModules/fastlogentry.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2020 NV Access Limited, Łukasz Golonka 3 | # This file may be used under the terms of the GNU General Public License, version 2 or later. 4 | # For more details see: https://www.gnu.org/licenses/gpl-2.0.html 5 | 6 | import appModuleHandler 7 | from NVDAObjects.window import DisplayModelEditableText 8 | from NVDAObjects.window.edit import UnidentifiedEdit 9 | 10 | 11 | class TSynMemo(DisplayModelEditableText): 12 | 13 | name = None # Name is complete garbage as well. 14 | 15 | 16 | class AppModule(appModuleHandler.AppModule): 17 | 18 | def chooseNVDAObjectOverlayClasses(self, obj, clsList): 19 | windowClass = obj.windowClassName 20 | if windowClass == "TSynMemo": 21 | # #8996: Edit fields in Fast Log Entry can't use UnidentifiedEdit 22 | # because their WindowText contains complete garbage. 23 | try: 24 | clsList.remove(UnidentifiedEdit) 25 | except ValueError: 26 | pass 27 | clsList.insert(0, TSynMemo) 28 | -------------------------------------------------------------------------------- /source/locale/sr/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Serbian characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | 5 | 6 | a Avala 7 | b Beograd 8 | c Cetinje 9 | č Čačak 10 | ć Ćuprija 11 | d Drina 12 | đ Đakovica 13 | e Evropa 14 | f Futog 15 | g Golija 16 | h Heroj 17 | i Igalo 18 | j Jadran 19 | k Kosovo 20 | l Lovćen 21 | m Morava 22 | n Niš 23 | o Obilić 24 | p Pirot 25 | q Kvorum 26 | r Ruma 27 | s Sava 28 | š Šabac 29 | t Timok 30 | u Užice 31 | v Valjevo 32 | w Duplo ve 33 | x икс 34 | y Ipsilon 35 | z Zemun 36 | ž Žabljak 37 | а Авала 38 | б Београд 39 | в Ваљево 40 | г Голија 41 | д Дрина 42 | ђ Ђаковица 43 | е Европа 44 | ж Жабљак 45 | з Земун 46 | и Игало 47 | ј Јадран 48 | к Косово 49 | л Ловћен 50 | љ Љубовија 51 | м Морава 52 | н Ниш 53 | њ Његош 54 | о Обилић 55 | п Пирот 56 | р Рума 57 | с Сава 58 | т Тимок 59 | ћ Ћуприја 60 | у Ужице 61 | ф Футог 62 | х Херој 63 | ц Цетиње 64 | ч Чачак 65 | џ Џеп 66 | ш Шабац 67 | -------------------------------------------------------------------------------- /source/locale/tr/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+ğ 3 | rightMouseClick = kb(laptop):NVDA+ü 4 | toggleLeftMouseButton = kb(laptop):NVDA+control+ğ 5 | toggleRightMouseButton = kb(laptop):NVDA+control+ü 6 | [NVDAObjects.window.winword.WordDocument] 7 | none = kb:control+j, kb:control+e, kb:control+b, kb:control+shift+d, kb:control+t, kb:control+shift+t, kb:control+u, kb:control+shift+u 8 | changeParagraphLeftIndent = kb:control+j, kb:control+shift+u 9 | toggleBold = kb:control+k, kb:control+shift+k 10 | toggleUnderline = kb:control+shift+a, kb:control+shift+d 11 | toggleItalic = kb:control+shift+t, kb:control+t 12 | toggleAlignment = kb:control+d, kb:control+g 13 | [cursorManager.CursorManager] 14 | find = kb:j 15 | findNext = kb:ç 16 | findPrevious = kb:ö 17 | [NVDAObjects.window.excel.ExcelWorksheet] 18 | toggleBold = kb:control+k 19 | toggleItalic = kb:control+t 20 | toggleUnderscore = kb:control+shift+a -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to NVDA 2 | 3 | Please note: the NVDA project has a [Citizen and Contributor Code of Conduct](./CODE_OF_CONDUCT.md). 4 | NV Access expects that all contributors and other community members will read and abide by the rules set out in this document while participating or contributing to this project. 5 | 6 | The NVDA project is guided by a [product vision statement and set of principles](./projectDocs/product_vision.md). 7 | The vision and principles should be always considered when planning features and prioritizing work. 8 | 9 | There are several ways in which you can contribute to the NVDA project: 10 | - [Reporting issues](../projectDocs/issues/readme.md) 11 | - [Issue triage and investigation](../projectDocs/issues/triage.md) 12 | - [Testing](../projectDocs/testing/contributing.md) 13 | - [Translating NVDA](https://github.com/nvaccess/nvda/wiki/Translating) 14 | - [Code or documentation contributions](../projectDocs/dev/contributing.md) 15 | - [Creating add-ons](../projectDocs/dev/addons.md) 16 | -------------------------------------------------------------------------------- /source/appModules/ttermpro.py: -------------------------------------------------------------------------------- 1 | #appModules/ttermpro.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #This file is covered by the GNU General Public License. 4 | #See the file COPYING for more details. 5 | #Copyright (C) 2010 James Teh 6 | 7 | """App module for Tera Term 8 | """ 9 | 10 | import oleacc 11 | from NVDAObjects.behaviors import Terminal 12 | from NVDAObjects.window import DisplayModelEditableText, DisplayModelLiveText 13 | import appModuleHandler 14 | 15 | class AppModule(appModuleHandler.AppModule): 16 | 17 | def chooseNVDAObjectOverlayClasses(self, obj, clsList): 18 | if obj.windowClassName == "VTWin32" and obj.IAccessibleRole == oleacc.ROLE_SYSTEM_CLIENT: 19 | try: 20 | clsList.remove(DisplayModelEditableText) 21 | except ValueError: 22 | pass 23 | clsList[0:0] = (Terminal, DisplayModelLiveText) 24 | 25 | def event_nameChange(self,obj,nextHandler): 26 | # Don't report changes to the terminal title. 27 | if not isinstance(obj,Terminal): 28 | nextHandler() 29 | -------------------------------------------------------------------------------- /source/monkeyPatches/wxMonkeyPatches.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2021 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | 6 | 7 | def apply(mainFrame, winUser, wx): 8 | # In wxPython >= 4.1, 9 | # wx.CallAfter no longer executes callbacks while NVDA's main thread is within a popup menu or message box. 10 | # To work around this, 11 | # MonkeyPatch wx.CallAfter to 12 | # post a WM_NULL message to our top-level window after calling the original CallAfter, 13 | # which causes wx's event loop to wake up enough to execute the callback. 14 | old_wx_CallAfter = wx.CallAfter 15 | 16 | def wx_CallAfter_wrapper(func, *args, **kwargs): 17 | old_wx_CallAfter(func, *args, **kwargs) 18 | # mainFrame may be None as NVDA could be terminating. 19 | topHandle = mainFrame.Handle if mainFrame else None 20 | if topHandle: 21 | winUser.PostMessage(topHandle, winUser.WM_NULL, 0, 0) 22 | 23 | wx.CallAfter = wx_CallAfter_wrapper 24 | -------------------------------------------------------------------------------- /source/sourceEnv.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2013-2020 NV Access Limited, Leonard de Ruijter 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | 6 | """Set up the Python environment when running from source. 7 | """ 8 | 9 | import sys 10 | import os 11 | 12 | # Get the path to the top of the repo; i.e. where include and miscDeps are. 13 | TOP_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) 14 | 15 | # Directories containing Python modules included in git submodules. 16 | PYTHON_DIRS = ( 17 | os.path.join(TOP_DIR, "miscDeps", "python"), 18 | ) 19 | 20 | #Check for existance of each Python dir 21 | for path in PYTHON_DIRS: 22 | if not os.path.exists(path): 23 | raise OSError("Path %s does not exist. Perhaps try running git submodule update --init"%path) 24 | 25 | # sys.path[0] will always be the current dir, which should take precedence. 26 | # Insert our include paths after that. 27 | sys.path[1:1] = PYTHON_DIRS 28 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # NVDA's build system is SCons 2 | SCons==4.5.2 3 | 4 | # NVDA's runtime dependencies 5 | comtypes==1.2.0 6 | pyserial==3.5 7 | wxPython==4.2.1 8 | git+https://github.com/DiffSK/configobj@e2ba4457c4651fa54f8d59d8dcdd3da950e956b8#egg=configobj 9 | requests==2.31.0 10 | # Pillow is an implicit dependency and requires zlib and jpeg by default, but we don't need it 11 | Pillow==10.0.1 -C "zlib=disable" -C "jpeg=disable" 12 | 13 | #NVDA_DMP requires diff-match-patch 14 | fast_diff_match_patch==2.0.1 15 | 16 | # Packaging NVDA 17 | git+https://github.com/py2exe/py2exe@4e7b2b2c60face592e67cb1bc935172a20fa371d#egg=py2exe 18 | 19 | # Creating XML unit test reports 20 | unittest-xml-reporting==3.2.0 21 | 22 | # For building developer documentation 23 | sphinx==7.2.6 24 | sphinx_rtd_theme==1.3.0 25 | 26 | # Requirements for automated linting 27 | flake8 ~= 4.0.1 28 | flake8-tabs == 2.1.0 29 | 30 | # Requirements for system tests 31 | robotframework==6.1.1 32 | robotremoteserver==1.1.1 33 | robotframework-screencaplibrary==1.6.0 34 | -------------------------------------------------------------------------------- /source/locale/cs/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Czech characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | 5 | 6 | a Adam 7 | á Adam s čárkou 8 | ä Adam přehlasované 9 | b Božena 10 | c Cyril 11 | ć Cyril s čárkou 12 | č Čeněk 13 | d David 14 | ď Ďáblice 15 | e Emil 16 | é Emil s čárkou 17 | ě Emil s háčkem 18 | ë Emil přehlasované 19 | f František 20 | g Gustav 21 | h Helena 22 | i Ivan 23 | í Ivan s čárkou 24 | ï Ivan přehlasované 25 | j Josef 26 | k Karel 27 | l Ludvík 28 | ĺ Ludvík s čárkou 29 | ľ Ludvík s háčkem 30 | m Marie 31 | n Norbert 32 | ň Norbert s háčkem 33 | ň Nina 34 | o Otakar 35 | ó Otakar s čárkou 36 | ö Otakar přehlasované 37 | p Petr 38 | q Quido 39 | r Rudolf 40 | ŕ Rudolf s čárkou 41 | ř Řehoř 42 | s Svatopluk 43 | š Šimon 44 | t Tomáš 45 | ť Těšnov 46 | u Urban 47 | ú Urban s čárkou 48 | u Urban s kroužkem 49 | ü Urban přehlasované 50 | v Václav 51 | w Wiliam 52 | x Xaver 53 | y Ypsilon 54 | ý Ypsilon s čárkou 55 | z Zuzana 56 | ž Žofie 57 | -------------------------------------------------------------------------------- /source/appModules/thunderbird.py: -------------------------------------------------------------------------------- 1 | #appModules/thunderbird.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #Copyright (C) 2006-2012 NVDA Contributors 4 | #This file is covered by the GNU General Public License. 5 | #See the file COPYING for more details. 6 | 7 | import appModuleHandler 8 | import controlTypes 9 | import api 10 | import speech 11 | import winUser 12 | 13 | class AppModule(appModuleHandler.AppModule): 14 | 15 | def event_gainFocus(self, obj, nextHandler): 16 | if obj.role == controlTypes.Role.DOCUMENT and controlTypes.State.BUSY in obj.states and winUser.isWindowVisible(obj.windowHandle): 17 | statusBar = api.getStatusBar() 18 | if statusBar: 19 | try: 20 | # The document loading status is contained in the second field of the status bar. 21 | statusText = statusBar.firstChild.next.name 22 | except: 23 | # Fall back to reading the entire status bar. 24 | statusText = api.getStatusBarText(statusBar) 25 | speech.speakMessage(controlTypes.State.BUSY.displayString) 26 | speech.speakMessage(statusText) 27 | return 28 | nextHandler() 29 | -------------------------------------------------------------------------------- /appveyor/scripts/setSconsArgs.ps1: -------------------------------------------------------------------------------- 1 | $ErrorActionPreference = "Stop"; 2 | $sconsOutTargets = "launcher developerGuide changes userGuide keyCommands client" 3 | if(!$env:APPVEYOR_PULL_REQUEST_NUMBER) { 4 | $sconsOutTargets += " appx" 5 | } 6 | $sconsArgs = "version=$env:version" 7 | if ($env:release) { 8 | $sconsArgs += " release=1" 9 | } 10 | if ($env:versionType) { 11 | $sconsArgs += " updateVersionType=$env:versionType" 12 | } 13 | $sconsArgs += ' publisher="NV Access"' 14 | if(!$env:APPVEYOR_PULL_REQUEST_NUMBER) { 15 | $sconsArgs += " certFile=appveyor\authenticode.pfx certTimestampServer=http://timestamp.digicert.com" 16 | } 17 | $sconsArgs += " version_build=$env:APPVEYOR_BUILD_NUMBER" 18 | # We use cmd to run scons because PowerShell throws exceptions if warnings get dumped to stderr. 19 | # It's possible to work around this, but the workarounds have annoying side effects. 20 | Set-AppveyorBuildVariable "sconsOutTargets" $sconsOutTargets 21 | Set-AppveyorBuildVariable "sconsArgs" $sconsArgs 22 | Write-Host "scons args: $sconsArgs" 23 | Write-Host "scons output targets: $sconsOutTargets" 24 | -------------------------------------------------------------------------------- /tests/system/libraries/SystemTestSpy/__init__.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2020 NV Access Limited 3 | # This file may be used under the terms of the GNU General Public License, version 2 or later. 4 | # For more details see: https://www.gnu.org/licenses/gpl-2.0.html 5 | 6 | """This package is not a Robot Framework library itself, it contains: 7 | - GlobalPlugin and SynthDriver used to get information out of NVDA for use by the system tests 8 | - Module `configManager.py` used to install the GlobalPlugin, SynthDriver, and config for the system test. 9 | - Some shared code used by the above as well as other RobotFramework libraries. 10 | """ 11 | 12 | # Expose shared code. Lint error F401 imported but unused. Exposing like this makes importing easier, and 13 | # allows code to be re-organized without having to fix many import statements. 14 | from .blockUntilConditionMet import ( # noqa: F401 15 | _blockUntilConditionMet, 16 | DEFAULT_INTERVAL_BETWEEN_EVAL_SECONDS, 17 | ) 18 | from .getLib import _getLib # noqa: F401 19 | 20 | _nvdaSpyAlias = "nvdaSpyLib" 21 | -------------------------------------------------------------------------------- /source/synthDrivers/silence.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2006-2021 NV Access Limited 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | 6 | from collections import OrderedDict 7 | import synthDriverHandler 8 | from speech.commands import IndexCommand 9 | 10 | class SynthDriver(synthDriverHandler.SynthDriver): 11 | """A dummy synth driver used to disable speech in NVDA. 12 | """ 13 | name="silence" 14 | # Translators: Description for a speech synthesizer. 15 | description=_("No speech") 16 | 17 | @classmethod 18 | def check(cls): 19 | return True 20 | 21 | supportedSettings = frozenset() 22 | _availableVoices = OrderedDict({name: synthDriverHandler.VoiceInfo(name, description)}) 23 | 24 | def speak(self, speechSequence): 25 | self.lastIndex = None 26 | for item in speechSequence: 27 | if isinstance(item, IndexCommand): 28 | self.lastIndex = item.index 29 | 30 | def cancel(self): 31 | self.lastIndex = None 32 | 33 | def _get_voice(self): 34 | return self.name 35 | -------------------------------------------------------------------------------- /source/locale/te/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Telugu characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: http://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | అ అమ్మ 7 | ఆ ఆవు 8 | ఇ ఇల్లు 9 | ఈ ఈగ 10 | ఉ ఉడుత 11 | ఊ ఊయల 12 | ఋ ఋషి 13 | ౠ 14 | ఎ ఎలుక 15 | ఏ ఏనుగు 16 | ఐ ఐదు 17 | ఒ ఒంటె 18 | ఓ ఓడ 19 | ఔ ఔషధము 20 | ం అంకెలు 21 | ః దుఃఖము 22 | క కలము 23 | ఖ ఖరము 24 | గ గంట 25 | ఘ ఘటము 26 | ఙ 27 | చ చదరము 28 | ఛ ఛత్రము 29 | జ జడ 30 | ఝ ఝషము 31 | ఞ ఆజ్ఞ 32 | ట టమాట 33 | ఠ కంఠము 34 | డ డబ్బా 35 | ఢ ఢంకా 36 | ణ వీణ 37 | త తల 38 | థ రథము 39 | ద దండ 40 | ధ ధనము 41 | న నగ 42 | ప పలక 43 | ఫ ఫలము 44 | బ బడి 45 | భ భజన 46 | మ మంచము 47 | య యముడు 48 | ర రధము 49 | ల లత 50 | వ వల 51 | శ శంకము 52 | ష షరతు 53 | స సబ్బు 54 | హ హంస 55 | ళ తాళము 56 | క్ష క్షణము 57 | ఱ ఱంపము 58 | ా థీర్ఘము 59 | ి గుడి 60 | ీ గుడిథీర్ఘము 61 | ు కొమ్ము 62 | ూ కొమ్ముథీర్ఘము 63 | ృ సుడి 64 | ె ఎత్వము 65 | ే ఏత్వము 66 | ై ఐత్వము 67 | ొ ఒత్వము 68 | ో ఓత్వము 69 | ౌ ఔత్వము 70 | ం పూర్ణానుస్వారము 71 | ః విసర్గము 72 | ్ పొల్లు 73 | -------------------------------------------------------------------------------- /source/locale/mk/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Macedonian characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2011 World Light Information Limited and Hong Kong Blind Union. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Атанас 8 | b Бисера 9 | c Цвета 10 | d Дамјан 11 | e Елена 12 | f Филип 13 | g Гораст 14 | h Хурем 15 | i Ивана 16 | j Јована 17 | k Калина 18 | l Лазе 19 | m Марија 20 | n Никола 21 | o Осман 22 | p Петар 23 | q Кју 24 | r Роберт 25 | s Снежана 26 | t Тамара 27 | u Урош 28 | v Виктор 29 | w Дуплове 30 | Икс 31 | y Ипсилон 32 | z Зоран 33 | а Атанас 34 | б Бисера 35 | в Виктор 36 | г Гораст 37 | д Дамјан 38 | ѓ Ѓурѓа 39 | е Елена 40 | ж Жарко 41 | з Зоран 42 | ѕ Ѕвонко 43 | и Ивана 44 | ј Јована 45 | к Калина 46 | л Лазе 47 | љ Љубомир 48 | м Марија 49 | н Никола 50 | њ Његош 51 | о Осман 52 | п Петар 53 | р Роберт 54 | с Снежана 55 | т Тамара 56 | ќ Ќамил 57 | у Урош 58 | ф Филип 59 | х Хурем 60 | ц Цвета 61 | ч Чедомир 62 | џ Џевдет 63 | ш Шабан 64 | -------------------------------------------------------------------------------- /site_scons/site_tools/gettextTool.py: -------------------------------------------------------------------------------- 1 | ### 2 | #This file is a part of the NVDA project. 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright 2010-2012 NV Access Limited 5 | #This program is free software: you can redistribute it and/or modify 6 | #it under the terms of the GNU General Public License version 2.0, as published by 7 | #the Free Software Foundation. 8 | #This program is distributed in the hope that it will be useful, 9 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | #This license can be found at: 12 | #http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | ### 14 | 15 | import os 16 | import sys 17 | 18 | # Get the path to msgfmt. 19 | MSGFMT = os.path.abspath(os.path.join("miscDeps", "tools", "msgfmt.exe")) 20 | 21 | def exists(env): 22 | return True 23 | 24 | def generate(env): 25 | env['BUILDERS']['gettextMoFile']=env.Builder( 26 | action=env.Action([[MSGFMT,"-o","$TARGET","$SOURCE"]], 27 | lambda t,s,e: 'Compiling gettext template %s'%s[0].path), 28 | suffix='.mo', 29 | src_suffix='.po' 30 | ) 31 | -------------------------------------------------------------------------------- /tests/system/settingsCache/2020.4/Braille.txt: -------------------------------------------------------------------------------- 1 | Braille property page 2 | Braille display grouping 3 | Braille display edit read only multi line Alt plus d Automatic 4 | Change... button Alt plus h 5 | Output table: combo box Unified English Braille Code grade 1 collapsed Alt plus o 6 | Input table: combo box Unified English Braille Code grade 1 collapsed Alt plus i 7 | Expand to computer braille for the word at the cursor check box checked Alt plus x 8 | Show cursor check box checked Alt plus s 9 | Blink cursor check box checked 10 | Cursor blink rate (ms) edit selected 500 11 | Cursor shape for focus: combo box Dots 7 and 8 collapsed Alt plus f 12 | Cursor shape for review: combo box Dot 8 collapsed Alt plus r 13 | Show messages combo box Use timeout collapsed 14 | Message timeout (sec) edit Alt plus t selected 4 15 | Tether Braille: combo box automatically collapsed Alt plus r 16 | Read by paragraph check box not checked Alt plus p 17 | Avoid splitting words when possible check box checked Alt plus w 18 | Focus context presentation: combo box Fill display for context changes collapsed 19 | OK button -------------------------------------------------------------------------------- /source/NVDAObjects/IAccessible/SysMonthCal32.py: -------------------------------------------------------------------------------- 1 | #NVDAObjects/IAccessible/SysMonthCal32.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #Copyright (C) 2006-2007 NVDA Contributors 4 | #This file is covered by the GNU General Public License. 5 | #See the file COPYING for more details. 6 | 7 | import controlTypes 8 | from . import IAccessible 9 | 10 | class SysMonthCal32(IAccessible): 11 | 12 | def _get_role(self): 13 | return controlTypes.Role.CALENDAR 14 | 15 | def _get_name(self): 16 | return "" 17 | 18 | def _get_value(self): 19 | return super(SysMonthCal32,self).name 20 | 21 | def script_valueChange(self,gesture): 22 | gesture.send() 23 | self.event_valueChange() 24 | 25 | __valueChangeGestures = ( 26 | "kb:upArrow", 27 | "kb:downArrow", 28 | "kb:leftArrow", 29 | "kb:rightArrow", 30 | "kb:home", 31 | "kb:end", 32 | "kb:control+home", 33 | "kb:control+end", 34 | "kb:pageDown", 35 | "kb:pageUp", 36 | ) 37 | 38 | def initOverlayClass(self): 39 | for gesture in self.__valueChangeGestures: 40 | self.bindGesture(gesture, "valueChange") 41 | -------------------------------------------------------------------------------- /source/locale/ar/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Arabic characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2011-2013 NVDA contributers 5 | #This file is covered by the GNU General Public License. 6 | #for Arabic localization, please see www.arabic-nvda.org 7 | 8 | # the standard international chars: 9 | a Alfa 10 | b Bravo 11 | c Charlie 12 | d Delta 13 | e Echo 14 | f Foxtrot 15 | g Golf 16 | h Hotel 17 | i India 18 | j Juliet 19 | k Kilo 20 | l Lima 21 | m Mike 22 | n November 23 | o Oscar 24 | p Papa 25 | q Quebec 26 | r Romeo 27 | s Sierra 28 | t Tango 29 | u Uniform 30 | v Victor 31 | w Whiskey 32 | x Xray 33 | y Yankee 34 | z Zulu 35 | 36 | # Arabic chars: 37 | أ أرنب 38 | ا القمر 39 | إ إنسان 40 | آ آدم 41 | ب بطة 42 | ت تاج 43 | ث ثعلب 44 | ج جمل 45 | ح حج 46 | خ خبز 47 | د ديك 48 | ذ ذئب 49 | ر رجل 50 | ز زهر 51 | س ساعة 52 | ش شمس 53 | ص صائد 54 | ض ضابط 55 | ط طفل 56 | ظ ظفر 57 | ع عين 58 | غ غار 59 | ف فيل 60 | ق قمر 61 | ك كلب 62 | ل لحم 63 | م مسجد 64 | ن نهر 65 | ه هرم 66 | و وجه 67 | ي يد 68 | 69 | -------------------------------------------------------------------------------- /site_scons/site_tools/t2t.py: -------------------------------------------------------------------------------- 1 | ### 2 | #This file is a part of the NVDA project. 3 | #URL: http://www.nvda-project.org/ 4 | #Copyright 2010 James Teh . 5 | #This program is free software: you can redistribute it and/or modify 6 | #it under the terms of the GNU General Public License version 2.0, as published by 7 | #the Free Software Foundation. 8 | #This program is distributed in the hope that it will be useful, 9 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | #This license can be found at: 12 | #http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | ### 14 | 15 | def txt2tags_actionFunc(target,source,env): 16 | import txt2tags 17 | txt2tags.exec_command_line([str(source[0])]) 18 | 19 | def exists(env): 20 | try: 21 | import txt2tags 22 | return True 23 | except ImportError: 24 | return False 25 | 26 | def generate(env): 27 | env['BUILDERS']['txt2tags']=env.Builder( 28 | action=env.Action(txt2tags_actionFunc,lambda t,s,e: 'Converting %s to html'%s[0].path), 29 | suffix='.html', 30 | src_suffix='.t2t' 31 | ) 32 | -------------------------------------------------------------------------------- /source/appModules/dllhost.py: -------------------------------------------------------------------------------- 1 | # -*- coding: UTF-8 -*- 2 | # A part of NonVisual Desktop Access (NVDA) 3 | # Copyright (C) 2018-2019 NV Access Limited, Łukasz Golonka 4 | # This file may be used under the terms of the GNU General Public License, version 2 or later. 5 | # For more details see: https://www.gnu.org/licenses/gpl-2.0.html 6 | 7 | """ Under older builds of Windows 10 (from RTM release to Creators Update) dllhost is used to display a properties window. 8 | Read-Only edit boxes in it can contain dates that include unwanted left-to-right and right-to-left indicator characters. 9 | This simply imports a proper class from the explorer app module, and maps it to a edit control. 10 | """ 11 | 12 | import appModuleHandler 13 | import controlTypes 14 | from NVDAObjects.window.edit import Edit 15 | from .explorer import ReadOnlyEditBox 16 | 17 | class AppModule(appModuleHandler.AppModule): 18 | 19 | def chooseNVDAObjectOverlayClasses(self, obj, clsList): 20 | windowClass = obj.windowClassName 21 | if windowClass == "Edit" and Edit in clsList and controlTypes.State.READONLY in obj.states: 22 | clsList.insert(0, ReadOnlyEditBox) 23 | -------------------------------------------------------------------------------- /source/controlTypes/outputReason.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2007-2021 NV Access Limited, Babbage B.V. 5 | 6 | from enum import Enum, auto 7 | 8 | 9 | class OutputReason(Enum): 10 | """Specify the reason that a given piece of output was generated. 11 | """ 12 | #: An object to be reported due to a focus change or similar. 13 | FOCUS = auto() 14 | #: An ancestor of the focus object to be reported due to a focus change or similar. 15 | FOCUSENTERED = auto() 16 | #: An item under the mouse. 17 | MOUSE = auto() 18 | #: A response to a user query. 19 | QUERY = auto() 20 | #: Reporting a change to an object. 21 | CHANGE = auto() 22 | #: A generic, screen reader specific message. 23 | MESSAGE = auto() 24 | #: Text reported as part of a say all. 25 | SAYALL = auto() 26 | #: Content reported due to caret movement or similar. 27 | CARET = auto() 28 | #: No output, but any state should be cached as if output had occurred. 29 | ONLYCACHE = auto() 30 | 31 | QUICKNAV = auto() 32 | -------------------------------------------------------------------------------- /nvdaHelper/local/UIAUtils.cpp: -------------------------------------------------------------------------------- 1 | #include "UIAUtils.h" 2 | #include 3 | 4 | using namespace winrt::Windows::UI::UIAutomation::Core; 5 | 6 | PROPERTYID registerUIAProperty(GUID* guid, LPCWSTR programmaticName, UIAutomationType propertyType) { 7 | HRESULT res; 8 | IUIAutomationRegistrar* registrar=NULL; 9 | if(CoCreateInstance(CLSID_CUIAutomationRegistrar,NULL,CLSCTX_INPROC_SERVER,IID_IUIAutomationRegistrar,(void**)®istrar)!=S_OK) { 10 | LOG_DEBUGWARNING(L"Could not create instance of IUIAutomationRegistrar"); 11 | return 0; 12 | } 13 | UIAutomationPropertyInfo info={*guid,programmaticName,propertyType}; 14 | PROPERTYID propertyId=0; 15 | res=registrar->RegisterProperty(&info,&propertyId); 16 | if(res!=S_OK) { 17 | LOG_DEBUGWARNING(L"IUIAutomationRegistrar::RegisterProperty failed with "<Release(); 21 | return propertyId; 22 | } 23 | 24 | int registerUIAAnnotationType(GUID* guid) { 25 | if(!guid) { 26 | LOG_DEBUGWARNING(L"NULL GUID given"); 27 | return 0; 28 | } 29 | auto res = CoreAutomationRegistrar::RegisterAnnotationType(*guid); 30 | return res.LocalId; 31 | } 32 | -------------------------------------------------------------------------------- /source/locale/de/gestures.ini: -------------------------------------------------------------------------------- 1 | [globalCommands.GlobalCommands] 2 | leftMouseClick = kb(laptop):NVDA+ü 3 | toggleLeftMouseButton = kb(laptop):NVDA+control+ü 4 | rightMouseClick = kb(laptop):NVDA+plus 5 | toggleRightMouseButton = kb(laptop):NVDA+control+plus 6 | navigatorObject_previousInFlow = kb(laptop):nvda+shift+ü 7 | navigatorObject_nextInFlow = kb(laptop):nvda+shift+plus 8 | 9 | [NVDAObjects.window.winword.WordDocument] 10 | # Gilt für Word und Outlook gleichermaßen. Falls sich die Tastenkombinationen zwischen Word und Outlook unterscheiden, verwendet man [appModules.winword.WinwordWordDocument] und [appModules.outlook.BaseOutlookWordDocument] 11 | None = kb:control+i, kb:control+u, "kb:control+shift+," , kb:control+alt+1, kb:control+alt+2, kb:control+alt+3 12 | increaseDecreaseFontSize = kb:control+<, kb:control+shift+< 13 | toggleAlignment = kb:control+b 14 | toggleBold = kb:control+shift+f 15 | toggleItalic = kb:control+shift+k 16 | toggleUnderline = kb:control+shift+u, kb:control+shift+d 17 | toggleSuperscriptSubscript = kb:control+plus, "kb:control+#" 18 | increaseDecreaseOutlineLevel = kb:alt+1, kb:alt+2, kb:alt+3, kb:alt+4, kb:control+j 19 | -------------------------------------------------------------------------------- /appveyor/scripts/logCiTiming.ps1: -------------------------------------------------------------------------------- 1 | # Input: ../timing.csv 2 | # Expect two cols: 3 | # - Build-stage name 4 | # - Time [Get-Date -o] (Round trip format) 5 | # Process: add elapsed minutes between entries 6 | # Output: 7 | # - buildStageTimingWithElapsed.csv 8 | # - CI Timing message to Appveyor messages. 9 | $inputFile = "../timing.csv" 10 | $processedTimesFile = "buildStageTimingWithElapsed.csv" 11 | 12 | $entries = Import-Csv -Path $inputFile -Header Stage, Time 13 | $lastTime = Get-Date -Date $entries[0].Time 14 | 15 | foreach ($e in $entries) { 16 | $nextTime = Get-Date -Date $e.Time 17 | $elapsedMin = ($nextTime - $lastTime).TotalMinutes 18 | $e | Add-Member -NotePropertyName ElapsedMin -NotePropertyValue $elapsedMin 19 | $lastTime = $nextTime 20 | } 21 | 22 | $entries | Export-Csv -Path $processedTimesFile 23 | 24 | $mesgs = ( 25 | $entries.foreach({ 26 | ($_.Stage, $_.ElapsedMin.tostring('N1')) -join " " 27 | }) 28 | ) -join ", `n" 29 | 30 | Add-AppveyorMessage ("CI timing (mins): `n" + $mesgs) 31 | 32 | if (Test-Path -Path $processedTimesFile){ 33 | Push-AppveyorArtifact $processedTimesFile -FileName $processedTimesFile 34 | } 35 | -------------------------------------------------------------------------------- /projectDocs/issues/readme.md: -------------------------------------------------------------------------------- 1 | ## Reporting issues or feature requests 2 | 3 | Issues can be [reported via GitHub](https://github.com/nvaccess/nvda/issues/new/choose). 4 | Please read the [issue template guide](./githubIssueTemplateExplanationAndExamples.md) for help filling out the appropriate template. 5 | For advanced reporters, consider reading our [issue triage guide](./triage.md) to ensure the issue can easily be worked on. 6 | If you don't have a clear idea of the issue, and you are unable to fill out the template, open a [GitHub discussion instead](https://github.com/nvaccess/nvda/discussions). 7 | 8 | Do not report security issues via GitHub, instead follow our [security policy](../../security.md). 9 | 10 | Issues with translations should be reported to the [NVDA Translators list](https://groups.io/g/nvda-translations). 11 | 12 | If you are reporting an issue with an application or website, please consider reporting the issue to the authors of the application/website first. 13 | 14 | If you are a developer reporting an issue with your application/website, please include a minimal reproducible sample and details of the specification not being handled correctly. 15 | -------------------------------------------------------------------------------- /source/locale/fa/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Persian (Farsi) characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | a Alfa 7 | b Bravo 8 | c Charlie 9 | d Delta 10 | e Echo 11 | f Foxtrot 12 | g Golf 13 | h Hotel 14 | i India 15 | j Juliet 16 | k Kilo 17 | l Lima 18 | m Mike 19 | n November 20 | o Oscar 21 | p Papa 22 | q Quebec 23 | r Romeo 24 | s Sierra 25 | t Tango 26 | u Uniform 27 | v Victor 28 | w Whiskey 29 | x Xray 30 | y Yankee 31 | z Zulu 32 | 33 | # Arabic chars: 34 | أ أطفال عربي 35 | إ إنسان عربي 36 | ك كلب عربي 37 | ي يد عربي 38 | 39 | # Persian chars: 40 | ِ اسفند 41 | ُ اتاق 42 | َ اسب 43 | آ آب 44 | ا ایران 45 | ب بابا 46 | پ پلیس 47 | ت تلفن 48 | ث ثریا 49 | ج جوجه 50 | چ چراغ 51 | ح حوله 52 | خ خروس 53 | د دختر 54 | ذ ذکر 55 | ر روزنامه 56 | ز زنبور 57 | ژ ژاله 58 | س سیب 59 | ش شما 60 | ص صابون 61 | ض ضبط 62 | ط طناب 63 | ظ ظهر 64 | ع عشق 65 | غ غلط 66 | ف فرش 67 | ق قاشق 68 | ک کلید 69 | گ گربه 70 | ل لیوان 71 | م مادر 72 | ن نان 73 | و وطن 74 | ه هوا 75 | ی یاس‫ 76 | -------------------------------------------------------------------------------- /source/appModules/securecrt.py: -------------------------------------------------------------------------------- 1 | #appModules/securecrt.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #This file is covered by the GNU General Public License. 4 | #See the file COPYING for more details. 5 | #Copyright (C) 2010-2017 NV Access Limited, Noel Romey 6 | 7 | """App module for SecureCRT 8 | """ 9 | 10 | import re 11 | import oleacc 12 | from NVDAObjects.behaviors import Terminal 13 | from NVDAObjects.window import DisplayModelEditableText, DisplayModelLiveText 14 | import appModuleHandler 15 | 16 | # Regexp which matches the terminal window class in all existing versions 17 | # (and hopefully future ones). 18 | # For example, it matches "AfxFrameOrView80u", "AfxFrameOrView90u" and "AfxFrameOrView100u". 19 | RE_TERMINAL_WINCLASS = re.compile (r"AfxFrameOrView\d{2,}u") 20 | 21 | class AppModule(appModuleHandler.AppModule): 22 | 23 | def chooseNVDAObjectOverlayClasses(self, obj, clsList): 24 | if RE_TERMINAL_WINCLASS.match (obj.windowClassName) and obj.IAccessibleRole == oleacc.ROLE_SYSTEM_CLIENT: 25 | try: 26 | clsList.remove(DisplayModelEditableText) 27 | except ValueError: 28 | pass 29 | clsList[0:0] = (Terminal, DisplayModelLiveText) 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.mo 2 | source/comInterfaces/*.py 3 | !source/comInterfaces/__init__.py 4 | # These are manually generated and updated, so don't delete them 5 | !source/comInterfaces/UIAutomationClient.py 6 | !source/comInterfaces/_944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0.py 7 | *.log 8 | source/userConfig 9 | build 10 | build_debug 11 | dist 12 | *.dll 13 | *.exe 14 | *.manifest 15 | source/synthDrivers/espeak-ng-data 16 | source/lib 17 | source/lib64 18 | source/typelibs 19 | source/louis 20 | *.obj 21 | *.exp 22 | *.lib 23 | *_I.c 24 | *_P.c 25 | *_C.c 26 | *_S.c 27 | dlldata.c 28 | *.pdb 29 | .sconsign.dblite 30 | user_docs/*/*.html 31 | user_docs/*/*.css 32 | user_docs/*/keyCommands.t2t 33 | user_docs/build.t2tConf 34 | extras/controllerClient/x86/nvdaController.h 35 | extras/controllerClient/x64 36 | extras/controllerClient/arm64 37 | source/_buildVersion.py 38 | output 39 | testOutput 40 | launcher/nvda_logo.wav 41 | uninstaller/UAC.nsh 42 | *.pyc 43 | *.pyo 44 | *.dmp 45 | tests/unit/nvda.ini 46 | tests/system/settingsCache/* 47 | !tests/system/settingsCache/2020.4/*.txt 48 | source/locale/*/cldr.dic 49 | .vscode 50 | .vs 51 | .venv 52 | nvdaHelper/docs/ 53 | -------------------------------------------------------------------------------- /tests/unit/test_brailleTables.py: -------------------------------------------------------------------------------- 1 | #tests/unit/test_brailleTables.py 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #This file is covered by the GNU General Public License. 4 | #See the file COPYING for more details. 5 | #Copyright (C) 2018-2019 NV Access Limited, Babbage B.V. 6 | 7 | """Unit tests for the brailleTables module. 8 | """ 9 | 10 | import unittest 11 | import brailleTables 12 | import os.path 13 | 14 | class TestFBrailleTables(unittest.TestCase): 15 | """Tests for braille table files and their existence.""" 16 | 17 | def test_tableExistence(self): 18 | """Tests whether all defined tables exist.""" 19 | tables = brailleTables.listTables() 20 | for table in tables: 21 | self.assertTrue( 22 | os.path.isfile(os.path.join(brailleTables.TABLES_DIR, table.fileName)), 23 | msg="{table} table not found".format(table=table.displayName) 24 | ) 25 | 26 | def test_renamedTableExistence(self): 27 | """Tests whether all defined renamed tables are part of the actual list of tables.""" 28 | tableNames = [table.fileName for table in brailleTables.listTables()] 29 | for name in brailleTables.RENAMED_TABLES.values(): 30 | self.assertIn(name, tableNames) 31 | -------------------------------------------------------------------------------- /projectDocs/testing/readme.md: -------------------------------------------------------------------------------- 1 | ### Important links 2 | * [How to contribute to NVDA by testing](./contributing.md) 3 | * [Reporting issues on GitHub](../issues/readme.md) 4 | * [Triaging issues on GitHub](../issues/triage.md) 5 | * The NVDA repository [Wiki](https://github.com/nvaccess/nvda/wiki) contains more guides and documentation. 6 | * [NVDA development snapshots](https://www.nvaccess.org/files/nvda/snapshots/): Automatically generated builds of the project in its current state of development 7 | 8 | ### Documentation 9 | * [NVDA User Guide](https://www.nvaccess.org/files/nvda/documentation/userGuide.html) 10 | * [Changes in the latest release](https://www.nvaccess.org/files/nvda/documentation/changes.html) 11 | * [Manual test plans](../../tests/manual/README.md) 12 | * [Automated tests for developers](./automated.md) 13 | * [Release process](../community/releaseProcess.md) 14 | 15 | ### Community communication channels 16 | * [NVDA Users Mailing List](https://nvda.groups.io/g/nvda) 17 | * [NVDA Developers Mailing List](https://groups.io/g/nvda-devel) 18 | * [Other sources including groups and profiles on social media channels, language-specific websites and mailing lists etc.](https://github.com/nvaccess/nvda/wiki/Connect) 19 | -------------------------------------------------------------------------------- /source/locale/ckb/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Central kurdish characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: https://www.nvda-project.org/ 4 | #Copyright (c) 2010-2011 World Light Information Limited and Hong Kong Blind Union. 5 | #This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Charlie 10 | d Delta 11 | e Echo 12 | f Foxtrot 13 | g Golf 14 | h Hotel 15 | i India 16 | j Juliet 17 | k Kilo 18 | l Lima 19 | m Mike 20 | n November 21 | o Oscar 22 | p Papa 23 | q Quebec 24 | r Romeo 25 | s Sierra 26 | t Tango 27 | u Uniform 28 | v Victor 29 | w Whiskey 30 | x Xray 31 | y Yankee 32 | z Zulu 33 | 34 | # kurdish chars: 35 | ئ ئەستێرە 36 | ب باران 37 | ت تاڤگە 38 | پ پشیلە 39 | ج جوان 40 | چ چیا 41 | ح حەڵوا 42 | د دار 43 | ڕ ڕۆژ 44 | ز زەوی 45 | ژ ژوور 46 | س سێو 47 | ش شووشە 48 | ع عارەب 49 | غ غاردان 50 | ف فڕفڕۆکە 51 | ق قاز 52 | ڤ ڤیان 53 | ک کەو 54 | گ گوڵ 55 | ل لالەنگی 56 | م ماسی 57 | ن نان 58 | ه هەڵاڵە 59 | و ورچ 60 | ی یاری 61 | 62 | #these letters can't come at the first of words they only come in middle or at the end of words 63 | ا دارا 64 | ە دەرەوە 65 | ر دار 66 | ڵ گوڵاڵە 67 | ێ هێلانە 68 | -------------------------------------------------------------------------------- /source/utils/caseInsensitiveCollections.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # Copyright (C) 2023 NV Access Limited 3 | # This file may be used under the terms of the GNU General Public License, version 2 or later. 4 | # For more details see: https://www.gnu.org/licenses/gpl-2.0.html 5 | 6 | from typing import ( 7 | Iterable, 8 | ) 9 | 10 | 11 | class CaseInsensitiveSet(set): 12 | def __init__(self, *args: Iterable[str]): 13 | if len(args) > 1: 14 | raise TypeError( 15 | f"{type(self).__name__} expected at most 1 argument, " 16 | f"got {len(args)}" 17 | ) 18 | values = args[0] if args else () 19 | for v in values: 20 | self.add(v) 21 | 22 | def add(self, __element: str) -> None: 23 | __element = __element.casefold() 24 | return super().add(__element) 25 | 26 | def discard(self, __element: str) -> None: 27 | __element = __element.casefold() 28 | return super().discard(__element) 29 | 30 | def remove(self, __element: str) -> None: 31 | __element = __element.casefold() 32 | return super().remove(__element) 33 | 34 | def __contains__(self, __o: object) -> bool: 35 | if isinstance(__o, str): 36 | __o = __o.casefold() 37 | return super().__contains__(__o) 38 | -------------------------------------------------------------------------------- /tests/unit/test_bdDetect.py: -------------------------------------------------------------------------------- 1 | # A part of NonVisual Desktop Access (NVDA) 2 | # This file is covered by the GNU General Public License. 3 | # See the file COPYING for more details. 4 | # Copyright (C) 2023 NV Access Limited, Babbage B.V., Leonard de Ruijter 5 | 6 | """Unit tests for the bdDetect module. 7 | """ 8 | 9 | import unittest 10 | import bdDetect 11 | from .extensionPointTestHelpers import chainTester 12 | import braille 13 | from utils.blockUntilConditionMet import blockUntilConditionMet 14 | 15 | 16 | class TestBdDetectExtensionPoints(unittest.TestCase): 17 | """A test for the extension points on the bdDetect module.""" 18 | 19 | def test_scanForDevices(self): 20 | kwargs = dict(usb=False, bluetooth=False, limitToDevices=["noBraille"],) 21 | with chainTester( 22 | self, 23 | bdDetect.scanForDevices, 24 | [("noBraille", bdDetect.DeviceMatch("", "", "", {}))], 25 | **kwargs 26 | ): 27 | braille.handler._enableDetection(**kwargs) 28 | # wait for the detector to be terminated. 29 | success, _endTimeOrNone = blockUntilConditionMet( 30 | getValue=lambda: braille.handler._detector, 31 | giveUpAfterSeconds=3., 32 | shouldStopEvaluator=lambda detector: detector is None, 33 | ) 34 | self.assertTrue(success) 35 | -------------------------------------------------------------------------------- /nvdaHelper/local/nvdaHelperLocal.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2010 NVDA contributers. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | #ifndef NVDAHELPERLOCAL_H 16 | #define NVDAHELPERLOCAL_H 17 | #include 18 | 19 | handle_t createRemoteBindingHandle(wchar_t* uuidString); 20 | LRESULT cancellableSendMessageTimeout(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT fuFlags, UINT uTimeout, PDWORD_PTR lpdwResult); 21 | /* 22 | * Initializes the NVDAHelper local library 23 | * @param secureMode true specifies that the NVDA process initializing NVDAHelper is in secure mode 24 | */ 25 | void nvdaHelperLocal_initialize(bool secureMode); 26 | void nvdaHelperLocal_terminate(); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /source/appModules/microsoftedgecp.py: -------------------------------------------------------------------------------- 1 | #A part of NonVisual Desktop Access (NVDA) 2 | #This file is covered by the GNU General Public License. 3 | #See the file COPYING for more details. 4 | #Copyright (C) 2017 NV Access Limited 5 | 6 | """appModule for Microsoft Edge content processes""" 7 | 8 | import appModuleHandler 9 | import controlTypes 10 | import winUser 11 | from NVDAObjects.IAccessible import IAccessible 12 | 13 | class CoreComponentInputSourcePane(IAccessible): 14 | shouldAllowIAccessibleFocusEvent=False 15 | 16 | class AppModule(appModuleHandler.AppModule): 17 | 18 | def chooseNVDAObjectOverlayClasses(self,obj,clsList): 19 | # #6948: Ignore MSAA focus event on CoreComponentInputSource pane 20 | # as this happens on a broken object sometimes after getting a valid UIA focus event on the document 21 | # This would cause "Web runtime component" to be spoken twice, 22 | # And browse mode to be come unusable as this object is outside the document. 23 | if isinstance(obj,IAccessible) and obj.windowClassName=='Windows.UI.Core.CoreComponentInputSource' and obj.event_objectID==winUser.OBJID_CLIENT and obj.event_childID==0 and obj.role==controlTypes.Role.PANE: 24 | clsList.insert(0,CoreComponentInputSourcePane) 25 | return clsList 26 | -------------------------------------------------------------------------------- /source/locale/pt_BR/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | # Brazilian Portuguese characterDescriptions.dic 2 | # A part of NonVisual Desktop Access (NVDA) 3 | # URL: https://www.nvaccess.org/ 4 | # Copyright (c) 2010-2023 NVDA Contributors. 5 | # This file is covered by the GNU General Public License. 6 | 7 | a Alfa 8 | b Bravo 9 | c Carlos 10 | d Delta 11 | e Eco 12 | f Fox 13 | g Golf 14 | h Hotel 15 | i Índia 16 | j Julieta 17 | k Kilo 18 | l Lima 19 | m Maique 20 | n Novembro 21 | o Oscar 22 | p Papa 23 | q Quebeque 24 | r Romeu 25 | s Serra 26 | t Tango 27 | u Uniforme 28 | v Vítor 29 | w Wisque 30 | x XRaio 31 | y Yanque 32 | z Zulu 33 | à a grave 34 | á a agudo 35 | â a circunflexo 36 | ã a til 37 | ä a trema 38 | æ a éh 39 | ç c cedilha 40 | è éh grave 41 | é éh agudo 42 | ê éh circunflexo 43 | ë éh trema 44 | ì i grave 45 | í i agudo 46 | î i circunflexo 47 | ï i trema 48 | ñ n til 49 | ò óh grave 50 | ó óh agudo 51 | ô óh circunflexo 52 | õ óh til 53 | ö óh trema 54 | ø óh cortado 55 | ù u grave 56 | ú u agudo 57 | û u circunflexo 58 | ü u trema 59 | ý ípsilon agudo 60 | ÿ ípsilon trema 61 | ĉ c circunflexo 62 | ĝ g circunflexo 63 | ĥ h circunflexo 64 | ĵ j circunflexo 65 | œ óh éh 66 | ŝ s circunflexo 67 | ŭ u breve 68 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | 15 | 16 | ### Is your feature request related to a problem? Please describe. 17 | 18 | ### Describe the solution you'd like 19 | 20 | ### Describe alternatives you've considered 21 | 22 | ### Additional context 23 | -------------------------------------------------------------------------------- /nvdaHelper/interfaces/nvdaController/nvdaController.acf: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2023 NV Access Limited, Leonard de Ruijter. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Lesser General Public License version 2.1, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html 13 | */ 14 | 15 | [ 16 | implicit_handle(handle_t nvdaControllerBindingHandle) 17 | ] 18 | interface NvdaController { 19 | [fault_status,comm_status] testIfRunning(); 20 | [fault_status,comm_status] speakText(); 21 | [fault_status,comm_status] cancelSpeech(); 22 | [fault_status,comm_status] brailleMessage(); 23 | } 24 | 25 | [ 26 | implicit_handle(handle_t nvdaController2BindingHandle) 27 | ] 28 | interface NvdaController2 { 29 | [fault_status,comm_status] getProcessId(); 30 | [fault_status,comm_status] speakSsml(); 31 | [fault_status,comm_status] onSsmlMarkReached(); 32 | } 33 | -------------------------------------------------------------------------------- /source/locale/ml/characterDescriptions.dic: -------------------------------------------------------------------------------- 1 | #Malayalam characterDescriptions.dic 2 | #A part of NonVisual Desktop Access (NVDA) 3 | #URL: http://www.nvda-project.org/ 4 | #This file is covered by the GNU General Public License. 5 | 6 | അ അധ്യാപകന്‍ 7 | ആ ആകാശം 8 | ഇ ഇഞ്ചി 9 | ഈ ഈശ്വരന്‍ 10 | ഉ ഉത്തരം 11 | ഊ ഊഞ്ഞാല്‍ 12 | ഋ ഋഗ്വേദം 13 | എ എട്ടുകാലി 14 | ഏ ഏകത 15 | ഐ ഐതിഹ്യം 16 | ഒ ഒത്തുതീര്‍പ്പ് 17 | ഓ ഓണം 18 | ഔ ഔഷധം 19 | ക കടല്‍ 20 | ഖ ഖജനാവ് 21 | ഗ ഗണിതം 22 | ഘ ഘടികാരം 23 | ങ 24 | ച ചക്രവര്‍ത്തി 25 | ഛ ഛായാഗ്രഹണം 26 | ജ ജനകീയഭരണം 27 | ഝ ഝട 28 | ഞ ഞങ്ങള്‍ 29 | ട ടട്ടനി 30 | ഠ ഠക്കുരം 31 | ഡ ഡാംഭികന്‍ 32 | ഢ ഢങ്കിക 33 | ണ 34 | ത തക്കാളി 35 | ഥ ഥര്‍വണം 36 | ദ ദയ 37 | ധ ധനം 38 | ന നക്ഷത്രം 39 | പ പുസ്തകം 40 | ഫ ഫലം 41 | ബ ബന്ധുത്വം 42 | ഭ ഭയം 43 | മ മരുഭുമി 44 | യ യജ്ഞം 45 | ര രാജ്യം 46 | ല ലയനം 47 | വ വായനശാല 48 | ശ ശനി 49 | ഷ ഷഡ്ഭുജം 50 | സ സംഗീതം 51 | ഹ ഹംസം 52 | ള 53 | ഴ 54 | റ റാണി 55 | ് ചന്ദ്രക്കല 56 | ി ചെറിയ ഇ യുഡെ ദീറ്കം 57 | ു ചെറിയ ഉ യുഡെ ദീറ്കം 58 | െ ചെറിയ എ യുഡെ ദീറ്കം 59 | ൊ ചെറിയ ഒ യുഡെ ദീറ്കം 60 | ാ വലിയ ആ യുഡെ ദീറ്കം 61 | ീ വലിയ ഈ യുഡെ ദീറ്കം 62 | ൂ വലിയ ഊ യുഡെ ദീറ്കം 63 | േ വലിയ ഏ യുഡെ ദീറ്കം 64 | ോ വലിയ ഓ യുഡെ ദീറ്കം 65 | ൈ ഐ യുഡെ ദീറ്കം 66 | ൌ ഔ യുഡെ ദീറ്കം 67 | ം അമ്ബുജം 68 | ൃ ഋ യുഡെ ദീറ്കം 69 | 70 | 71 | -------------------------------------------------------------------------------- /source/vision/__init__.py: -------------------------------------------------------------------------------- 1 | # vision/__init__.py 2 | # A part of NonVisual Desktop Access (NVDA) 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING for more details. 5 | # Copyright (C) 2018-2019 NV Access Limited, Babbage B.V. 6 | 7 | """Framework to facilitate changes in how content is displayed on screen. 8 | 9 | One or more assistant functions can be implemented in vision enhancement providers. 10 | Add-ons can provide their own provider 11 | using modules in the visionEnhancementProviders package containing a L{VisionEnhancementProvider} class. 12 | """ 13 | from .visionHandler import VisionHandler 14 | import visionEnhancementProviders 15 | import config 16 | from typing import Optional 17 | 18 | handler: Optional[VisionHandler] = None 19 | 20 | 21 | def initialize() -> None: 22 | global handler 23 | handler = VisionHandler() 24 | 25 | 26 | def pumpAll() -> None: 27 | """Runs tasks at the end of each core cycle.""" 28 | if handler and handler.extensionPoints: 29 | handler.extensionPoints.post_coreCycle.notify() 30 | 31 | 32 | def terminate() -> None: 33 | global handler 34 | handler.terminate() 35 | handler = None 36 | 37 | 38 | def _isDebug() -> bool: 39 | return config.conf["debugLog"]["vision"] 40 | -------------------------------------------------------------------------------- /nvdaHelper/remoteLoader/loader.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is a part of the NVDA project. 3 | URL: http://www.nvda-project.org/ 4 | Copyright 2006-2010 NVDA contributers. 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License version 2.0, as published by 7 | the Free Software Foundation. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | This license can be found at: 12 | http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 13 | */ 14 | 15 | #include 16 | #include 17 | #define WIN32_LEAN_AND_MEAN 18 | #include 19 | #include 20 | 21 | int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR cmdline, int flags) { 22 | int res=0; 23 | #ifndef NDEBUG 24 | Beep(440,100); 25 | #endif 26 | res=injection_initialize(); 27 | assert(res!=0); //nvdaHelper_initialize 28 | // Wait for input or EOF. 29 | getc(stdin); 30 | res=injection_terminate(); 31 | assert(res!=0); //nvdaHelper_terminate 32 | #ifndef NDEBUG 33 | Beep(880,100); 34 | #endif 35 | return 0; 36 | } 37 | --------------------------------------------------------------------------------