[nvda-addons] A layered approach to binding keyboard gestures for add-ons (for next releases)

  • From: Joseph Lee <joseph.lee22590@xxxxxxxxx>
  • To: nvda-addons@xxxxxxxxxxxxx
  • Date: Mon, 05 Aug 2013 06:34:20 -0700

Dear add-on writers, reviewers and users,
We're glad to see so many add-ons being added to the site for release and/or for code review. I think many of these add-ons are approaching release time, which would be a great time to further promote our work. Just wanted to bring this one important proposal to this forum to hear your opinions and possible implementation for some of our add-ons for next release (not the upcoming one, but the one after that): There exists a ticket for NVDA core which asks for a way to customize NVDA keyboard and other gestures. This is similar to other screen readers where one can assign screen reader commands to other gestures. Also, a few NVDA devs (who are on this list) noted that there might exist conflicts between NVDA core versus add-ons and among add-ons theups for taking availible keyboard gesture, thereby increasing the likelyhood of using odd and difficult finger movements for performing some commands. As a solution, some proposed a layered command approach where a user would press certain command and the functions of the add-on can be accessed by pressing a second key. For example, for some app modules, one can press a command to read recent messages, then press 1 through 5 to read recent messages (number 1 being the most recent message). Some of us actually do (did) have a prototype and working example of this concept.
The benefits of this approach are:
* Allows reclamation of keyboard gestures to be used for future NVDA core and/or add-on features. * Easy to remember command sets - all the user have to remember are the add-on layer mode command and the actual second level command for performing tasks.
Possible disadvantages are:
* Adds extra considerations for those who might be planning to support gesture reassignment. * Language layout differences may be a factor when coming up with layer mode commands and associated second level commands. * Some minor to major code rewrite to support layered command approach.
In theory, there are two possible implementation of layered mode:
* Global flag - one or more global flags are used to see if layered mode is active. * Loop - a while or for loop to work with second level layered command sets. The universal exit conditions for layered mode are: if the layer command is pressed, if a key other than ones used in layered (second level) mode command is pressed or another NVDA gesture is executed. As this is a major change for many of us, I (and other devs) would like to seek your opinions and other proposals, and if you're willing to investigate layered approach, some other comments, suggestions or enhancements to the above layer mode implementations. Since some add-ons are planned for release in a short time, I'd like to suggest that we work on this on the release following the currently scheduled ones.
Thanks, and look forward to your thoughts.
Sincerely,
Joseph Lee
----------------------------------------------------------------

NVDA add-ons Central: A list for discussing NVDA add-ons

To post a message, send an email to nvda-addons@xxxxxxxxxxxxx.

To unsubscribe, send an email with the subject line of "unsubscribe" (without 
quotes) to nvda-addons-request@xxxxxxxxxxxxx.

If you have questions for list moderators, please send a message to 
nvda-addons-moderators@xxxxxxxxxxxxx.

Community addons can be found here: http://addons.nvda-project.org

Other related posts: