Re : Re: [nvda-addons] delayed character descriptions. #addonrequestreview


Hello David

I have installed the add-on adn made some tests. Here are my feedbacks:

1. Setting the delay to 1ms cause errors. You may investigate and limit the minimum value to a higher value.
Below is the log of the error:
Input: kb(desktop):rightArrow
IO - speech._speakSpellingGen (17:08:42.651):
Speaking character u'e'
DEBUG - queueHandler.registerGeneratorObject (17:08:42.651):
Adding generator 17
IO - speech._speakSpellingGen (17:08:42.667):
Speaking character u'\xe9co'
ERROR - queueHandler.pumpAll (17:08:42.667):
error in generator 17
Traceback (most recent call last):
  File "queueHandler.pyo", line 75, in pumpAll
ValueError: generator already executing

2. Max delay value :
IMO, setting it to 20s is much too high and the user may hear character description at a moment he/she does not remember anymore the last gesture he has executed. He/she may think that sometimes NVDA speaks without any reason...
A value of 5000ms should be far enough.

3. Speech interruption
If you move with arrow and press just after the control key, the char description will be heard, whereas I expect NVDA to be silent.
Sometimes if I press control while NVDA is speaking the description, I even get the following error :
Input: kb(desktop):numpad2
IO - speech._speakSpellingGen (17:21:34.282):
Speaking character u'w'
DEBUG - queueHandler.registerGeneratorObject (17:21:34.282):
Adding generator 142
DEBUG - queueHandler.pumpAll (17:21:34.298):
generator 142 finished
IO - speech._speakSpellingGen (17:21:36.301):
Speaking character u'Whisky'
DEBUG - queueHandler.registerGeneratorObject (17:21:36.301):
Adding generator 143
ERROR - queueHandler.flushQueue (17:21:36.301):
Error in func cancelSpeech from eventQueue
Traceback (most recent call last):
  File "queueHandler.pyo", line 53, in flushQueue
  File "speech.pyo", line 100, in cancelSpeech
ValueError: generator already executing
DEBUG - queueHandler.pumpAll (17:21:36.316):
generator 143 finished

4. Documentation
* The technical information is mixed in the user documentation (textInfo)
IMO you should remove it or at least put it in a separated paragraph at the end and not at the beginning. You could add the technical information in a separated documentation file in your repo if required.
* You may format it as the other documentations on the websites, with Author, compatibility and download link above.

According to me this add-on should be added to the website. This feature may interest people.



----- Mail d'origine -----
De: DaVid <dhf360@...>
Envoyé: Thu, 05 Sep 2019 00:27:44 +0200 (CEST)
Objet: Re: [nvda-addons] delayed character descriptions. #addonrequestreview

Thanks. I solved the integer edit control on just one line! :)

About describing characters, I delegate it to NVDA's functionality. In
the current version if the character description doesn't exist for the
current language, then will be ignored.
I updated the documentation also and added a readme.
The latest release (0.3a1) is available here:


2019-09-04 11:49 GMT-06:00, Noelia Ruiz <nrm1977@...>:
> Hi, for the dialog, you can use a spin control setting min, max and
> initial values. You have examples in NVDA or, for example, in
> clipContentsDesigner add-on. This could be good, since you may not want
> that someone sets a value of 1000000 seconds :)
> For determining the use cases in which the add-on could work, I don't
> know. It deppends on what can be useful. You may specify that this would
> work when right or left arrows are pressed, or when the character under
> the review cursor is reviewed, etc.
> Also, in case this is useful for the community, you may want to describe
> also symbols, not just alphanumeric characters. Just an idea.
> And for profiles, you may want to use code from other add-ons or
> contained in NVDA's core, for ease of maintainance, though for now your
> code works well. See for an example of NVDA's core.
> Regards
> El 04/09/2019 a las 19:39, DaVid escribió:
>> Thanks. I should've sent it to testing, not reviewing. Sorry.
>> About points 2 and 3 they were solved in the latest commit, not
>> available in the latest release. I need to integrate it with appveyor
>> but I prefer to determine if this add-on is useful for the community
>> to mantain it.
>> point 1: what is the correct way to deal with this?
>> I extended the isValid method. I send an error message if the settings
>> are invalid and return False. Else True.
>> I set the kill focus to notify the user if the field has a wrong
>> value,as another check. But NVDA doesn't speak the message, so I send
>> a low frequency beep also.
>> Point 4: I don't know how to clarify it.
>> I based on textInfos.UNIT_CHARACTER, but I don't know all the cases
>> when NVDA sends this argument. I can track NVDA's code to know those
>> cases, but It could change in future NVDA versions.
>> Add-on developers can send it also, then the event will be activated.
>> I could write "based on textInfos.UNIT_CHARACTER argument", but this
>> is a very technical info so I don't know if is a good idea...
>> Regards,
>> DaVid.
>> 2019-09-04 9:56 GMT-06:00, Noelia Ruiz <nrm1977@...>:
>>> Hi, I was not sure regarding to post or not basic review results for
>>> this add-on, since the documentation found when open add-on help for
>>> the binary to be installed seems to correspond to other add-on. I
>>> understand that we all make mistakes, and this is perfectly accepted.
>>> But recently I mentioned another bug in documentation, just lack about
>>> important scripts, and we need to install binaries or check them
>>> before requesting a review at least in these basic things, imo. This
>>> is not urgent and we can perform a basic test before requesting a
>>> review, not for mistakes difficult to detect, of course. And
>>> especially if several add-ons have the same issue, reviewers and users
>>> in general can decide to ignore them.
>>> But these are my results:
>>> - License and copyright: pass. This is released under GPL 3, but NVDA
>>> accepts GPL 2 or later, as recommended in copyright headers article:
>>> - Security: pass
>>> - Documentation: fail.
>>> - User experience: fail.
>>> I haven't reviewed the repo, since a binary was provided for
>>> installation and firstly I have installed it for review.
>>> Examples of failures (maybe others):
>>> 1. Users can enter values like alphanumeric characters in the edit box
>>> and this can produce mistakes when trying to press OK (tested now on
>>> Windows 7).
>>> 2. If for any reasons plugins are reloaded, the panel appears multiple
>>> times in settings and this can be confusing.
>>> 3. Milliseconds are mentioned in the add-on description and in code,
>>> but values are expressed in seconds (for instance, 1.0).
>>> 4. The add-on description seems to mean that descriptions are read for
>>> the last read character, not just when users run a command used for
>>> this. This is a small difference, but though documentation cannot
>>> include all features and use cases, I think that this should be
>>> clarified, since I have been confused thinking that if I press down
>>> arrow and the line contains an unique character, the description could
>>> be read too.
>>> I will wait at least one or two weeks before reviewing this add-on if
>>> you request this for a different version. I will do this for add-ons
>>> when documentation or similar things seem to show that they need more
>>> testing before request a review. Other reviewers can do it before.
>>> This is to perform reviews better without burning out if too many
>>> add-ons are sent too fast (smile).
>>> Regards
>>> 2019-09-03 15:25 GMT+02:00, DaVid <dhf360@...>:
>>>> Hi there.
>>>> This week I wrote this add-on and I decided to send it for review.
>>>> This add-on announces the character description after some time if the
>>>> last read text was a character. Default time is 1 second, but you can
>>>> change it on the add-on settings.
>>>> This feature was copied from talkback on android, and a friend told me
>>>> that voice over on iOs has it also.
>>>> Get the add-on here:
>>>> and the github repo here:
>>>> Regards,
>>>> David.