Plugin Help please!

Nathaniel Schmidt

Hi all,


If anyone can help, I would be grateful.  I am currently trying to update some plugin code I wrote the bulk of back in 2011, periodically updating it with a couple of other contributors up until about 2014.  I am hoping to ultimately package it as an addon and submit it to the community page, in the hope that people may find it useful.  I stopped coding while I was doing undergrad studies so I am a bit out-of-practice.  The plugin used to work with earlier versions of NVDA but no longer does.  In the past it has been used by at least two other people that I know of apart from myself (one of them may still be on the nvda-dev mailing list), so I feel that it may be a reasonable coding courtesy to try to update the code as much as possible, though it is no longer useful to me personally.  So won't be too worried if problems cannot be overcome.  FYI, I am using Windows 10 with NVDA 2019.2.1, Python 3.8 and comtypes 1.1.7.


The plugin was initially a global plugin (an admittedly sloppy but superficially convenient choice for its purposes) that would use registered COM objects, allowing Windows screen-readers to communicate with a cross-platform Python package called Latex-Access, developed by Alastair Irving at  The package's main purpose is to translate lines of LaTeX syntax into Nemeth and UEB Braille, as well as speech, making it quicker and easier to read and understand equations and expressions.  It also contains a matrix browser for viewing matrices in a table-like fashion.  In addition, it contains a preprocessor for interpreting and expressing custom-defined LaTeX expressions.  It would be somewhat useful for those studying, or teaching, mathematics at a secondary or tertiary educational level and who use the LaTeX document preparation system for their work, or reviewing the work of others.


The final checked-out file in Subversion is not up-to-date, as the project manager seems to have potentially gone off the grid and I can no longer remember the password to my old SourceForge account attached to my old email, so I am unable to make commits.  So a Dropbox link is below:


The plugin is in the process of being ported from a global plugin to an app module, which an end-user should be able to rename at their leisure, to the executable file of any text-editor of their choice.  This should mostly be a smooth transition in each instance, as the scripts are designed to work within accessible edit controls.  Currently the plugin only supports controls which notify of text selection changes but this could be altered in future.  I realise that some of the key bindings are likely to clash with commands from other editors; I am happy to change them for the community but for now, the primary desire has been to stick with the conventions subjectively, implicitly set out by the project manager who wrote the JAWS scripts.  To keep things simple, I have set the appModule to use notepad.


The problem currently at the forefront is unintended and unexplained triggering of scripts.  One in particular, "script_inputMatrix", is causing havoc by being triggered by just about every possible keypress relevant to typing input and I am struggling to trace the exact cause of the problem.  The debug log output is as follows:



IO - inputCore.InputManager.executeGesture (15:46:18.426):

Input: kb(laptop):control+m

ERROR - (15:46:18.454):

errors in this core pump cycle

Traceback (most recent call last):

  File "core.pyo", line 489, in run

  File "IAccessibleHandler.pyo", line 903, in pumpAll

  File "IAccessibleHandler.pyo", line 620, in processGenericWinEvent

  File "appModuleHandler.pyo", line 134, in update

  File "appModuleHandler.pyo", line 119, in getAppModuleFromProcessID

  File "appModuleHandler.pyo", line 97, in getAppNameFromProcessID

  File "C:\Users\natha\AppData\Roaming\nvda\scratchpad\appModules\", line 190

    ui.message (_(msg))


SyntaxError: invalid syntax

DEBUGWARNING - NVDAObjects.UIA.UIA._prefetchUIACacheForPropertyIDs (15:46:19.369):

IUIAutomationElement.buildUpdatedCache failed given IDs of set([30019, 30022, 30086, 30025, 30036, 30070, 30103, 30008, 30009, 30010, 30046, 30079])



Sometimes the same error repeats twice with only one keypress but I have no idea why.  I have two questions resulting from this output:


(1) What, precisely, is the syntax error? I feel stupid in asking but I can't figure it out.  I’m sure it's probably right in front of me.  The only thing that springs to mind is that maybe the gettext function has trouble with the explicit call to the str class, forcing some integers to be converted to strings but that is not exactly a syntax error.


(2) The general flow of the debug log (especially consecutive occurrences of the same error after general input and output) tells me that the script in question is being categorically triggered after just about every keypress.  How and why could this be happening? Is there something wrong in the appModules subclass method of EditableText._caretScriptPostMovedHelper? I fully realise that python does not call methods of the same name in bass classes unless the subclass explicitly calls them; however, I do not see how this makes a difference in this instance because I have rehashed all of the code anyway and have placed my own code inside it.


Is anyone willing or able to help me with this dilemma? If anyone wants to use the latex-access scripts with Python 3 then in order to register the COM objects, you will have to go into and enclose the statement "import cPickle as pickle" with the following:



                import cPickle as pickle


                import pickle


Python 3 tries to automatically load the accelerator module first so one cannot explicitly call the faster module written in C.


Also, as an aside, I know that Braille support is currently rather primitive.  I don’t really understand the brailleHandler code at the moment, so my capacity to manipulate its data is quite limited.


Thanks in advance and kind regards,


Nathaniel Schmidt

Join to automatically receive all group messages.