Ticket #58 (new enhancement)

Opened 9 months ago

Last modified 5 months ago

Create a "Flat review" mode

Reported by: cnorman Owned by:
Priority: major Milestone:
Component: Core Version: trunk
Keywords: Flat, Review, screen, virtual focus Cc:
Blocking: Blocked By: #22

Description

In most windows screen readers, they create the "Virtual focus" mode, or be it, possibly under a different name.

The (opensource) screen reader Orca has a "Flat review" mode, where the user uses the keys on the number pad to navigate the screen, 7 is previous line, 8 speaks the currentline, 9 speaks the nextline down, 6 thenext word, 5 the current word, 4 the previous word, and 1, 2, and 3 are the same with characters, I think this would be a great feature for NVDA, to be able to read the hole screen from the number pad. Also, there whould be a feature for laptops, which works on the u, i, o, j, k, l, m, and . keys. I also think there should be two sets of key bindings, but that's a different ticket.

Change History

Changed 9 months ago by pvagner

  • version changed from 0.5 to trunk

Under windows creating flat representation of a window means hooking display functions or creating video intercept driver.
Currently there are some experients happening you may like to see ticket 40. Anyway I think it will take some time to make it really usable.
Display hooks seems to be good compromis for NVDA because it is still know to help with such issues and in most cases does not require administrative privileges to install.

Changed 9 months ago by aleksey_s

  • priority changed from trivial to major

let me disagree with you. you can use msaa info to create flat review of whole window as well, ofcourse not all possible info will be available, but even in this case it might be very usefull. msaa provides info also about real coords of controls, however we must use msaa even we will make display hooks, so user might know how control it is when reviewing virtual model as in jaws.

Changed 9 months ago by pvagner

yes you are right it is possible to do such calculations with info provided by MSAA. But given the fact object navigation is working well it will show no benefit. Therefore in extreme cases this might be seen as a duplicate feature.

Changed 9 months ago by aleksey_s

again, i am disagree. my opinion is that flat navigation will be more usefull and confortable. however, all people i recommend nvda, if they even do not know jaws feel theyselves not comfort with undersdanding and using navigation model as in nvda. problem is that most controls are ungrouped and there can be e.g. text after buttons and before it (as in mycomputer properties etc). so implementing flat review for me is very priority feature.

Changed 9 months ago by mdcurran

  • milestone 0.6 deleted

As much as I eventually want to see some kind of screen layout that can be reviewed, I don't think this should be waited on by 0.6. There are too many other bugs. However, as I said, I do believe this is important, but just not for 0.6.

Changed 5 months ago by aleksey_s

i guess, this might be implemented with virtual buffers concept. so user press some keystroke and goes into virtual representation of current window, even with some specific keystrokes working inside it as in current buffers. is it such problematicaly to do it or developers things it is unnecessary?
however, i thing we do not need to abuse display hooks here. my opinion is that the display hooks nvda must use to receive text of specific controls (or if nvda can not recognize some as control but hook library reports there are portion of text - nvda must create object whatever), and creating flat review by taking position and other info from each nvda object.

Changed 5 months ago by aleksey_s

  • blockedby set to 22

Changed 5 months ago by pvagner

I have got quite a lot of request to do something like this from the czech and slovak community. Therefore I have to adapt to all the thoughts and ideas flying here because I don't have better approach my-self.
How do you see this interfacing to the virtual buffers. Should this be written in python or in c++?

Note: See TracTickets for help on using tickets.