Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Virtual buffer: An option to put container entry/leaving announcement (e.g. list of N items) on a separate line #3997

Open
nvaccessAuto opened this issue Mar 19, 2014 · 15 comments

Comments

@nvaccessAuto
Copy link

Reported by ashleycox on 2014-03-19 17:27
Hopefully this ticket isn't a duplicate - I couldn't find anything in the ticket system. Here's a couple of snips from some recent eMails I sent to the NVDA list; I thought I'd bring this up in a ticket.

Quote:
3rd example - browse mode, reading webpages. Most screenreaders separate the announcement of a web element (for example a list, landmark, table, etc) with the first item. So, for example:
list of 3 items
item1
item2
item3
list end

NVDA, on the other hand, puts the element announcement on the same line as the first item:
list with 3 items item1
item2
item3
out of list

This can make NVDA pretty cumbersome on the web - particularly when you have lists nested in lists, inside landmarks etc. For example:

Example A:

navigation landmark list with 2 items list with 3 items nesting level 1 item 1
item2
item3
out of list
item2
out of list list with 2 items item1
item 2
out of list out of list out of landmark

Example B:

navigation landmark
list with 2 items
list with 3 items nesting level 1
item 1
item2
item3
out of list
item2
out of list
list with 2 items item1
item 2
out of list
out of list
out of landmark

The first example demonstrates how NVDA currently reads - however, The second example is clearly more productive when you want to hear information quickly when scannign a list (for example a navigation bar), but still want the elements to be announced.

Imagine for example, reading 3 nested lists with example A... compared to example B, it's slow. It's even more annoying with block quotes, landmarks that have immediate text, etc. With example B, where everything is announced on its own line, the user has the opportunity to skip passed the element announcement if required without missing any information, and without having to disable the announcements altogether. Plus, with example B, it's much easier to keep track of where you are within elements that have multiple elements nested inside them.

yes, you can turn off the announcements, but being a web developer, I want these items announced. It would be nice to see an option called, for example, 'insert blank lines in browse mode' to separate these things out - would make reading with NVDA so much easier.

Blocking #5309

@nvaccessAuto
Copy link
Author

Comment 1 by RobertSpangler on 2014-03-19 19:00
This is something that I requested a long time ago. Unless the thinking on this has changed, I was told that it was done this way by design and it would be too complex to make this change. Jamie can weigh in with more details but this was the answer I got, basically.

@nvaccessAuto
Copy link
Author

Comment 2 by briang1 on 2014-03-20 08:00
Probably just me being thick here, but I assume unchecking use screen layout when supported in the browse mode dialogue does not do what you want?

@nvaccessAuto
Copy link
Author

Comment 3 by ashleycox (in reply to comment 2) on 2014-03-20 10:31
Replying to briang1:

Probably just me being thick here, but I assume unchecking use screen layout when supported in the browse mode dialogue does not do what you want?

You're right - disabling this does put items on their own lines... however, the announcement of the element (e.g the list, blockquote, etc) is on the same line as the first item. This is annoying - as you have to always hear the element being announced before the first item.

@nvaccessAuto
Copy link
Author

Comment 4 by nvdakor on 2014-03-20 11:16
Hi,
I think I know what's going on: so you want container elemtn type to be on a separate line?
From design point of view, this may bnot be necessary, but for informational purposes, this would be a good option.
Morphing the ticket title to reflect the scope here (hope you don't mind, Jamie).
Changes:
Changed title from "Option to add blank lines in browse mode, to separate elements from content." to "Virtual buffer: An option to put container entry/leaving announcement (e.g. list of N items) on a separate line"

@nvaccessAuto
Copy link
Author

Comment 5 by ashleycox (in reply to comment 4) on 2014-03-20 11:30
Replying to nvdakor:

Hi,

I think I know what's going on: so you want container elemtn type to be on a separate line?

From design point of view, this may bnot be necessary, but for informational purposes, this would be a good option.

Morphing the ticket title to reflect the scope here (hope you don't mind, Jamie).

Yes, that's exactly it. So, instead of this:
list with 3 items item 1
item2
item3
out of list
to this:
list with 3 items
item1
item2
item3
out of list

or this:
block quote this is some text
to:
block quote
this is some text

@nvaccessAuto
Copy link
Author

Comment 6 by jteh on 2014-03-20 16:08
The problem is that this inserts blank lines into the text where there aren't any. Also, it would get pretty annoying where a large number of containers start at once.

Your argument is that you would be able to skip over this information more easily by simply pressing down arrow to silence the announcement of the container. You can already do this by pressing NVDA+upArrow to read the current line (or downArrow and then upArrow). Because you aren't entering the container, it won't read the container the second time.

@nvaccessAuto
Copy link
Author

Comment 7 by ashleycox (in reply to comment 6) on 2014-03-20 17:00
Replying to jteh:

The problem is that this inserts blank lines into the text where there aren't any. Also, it would get pretty annoying where a large number of containers start at once.

Your argument is that you would be able to skip over this information more easily by simply pressing down arrow to silence the announcement of the container. You can already do this by pressing NVDA+upArrow to read the current line (or downArrow and then upArrow). Because you aren't entering the container, it won't read the container the second time.

You're correct... this does work. However, it's more unnecessary keystrokes - I can scan a page much more quickly using down arrow than I can if I constantly have to press NVDA+up arrow. The 'down arrow then up arrow' method is the one I currently use, but it's annoying.
Also, when developing websites, it's handy to be able to break up this information to check, for example, that you haven't missed any list end tags... it happens. Even if we don't change NVDA's default behaviour, it would be nice to have the option for those of us who want to use it - I think a lot of people would. Almost everyone to whom I've introduced NVDA finds this a massive annoyance.

@nvaccessAuto
Copy link
Author

Comment 8 by RobertSpangler on 2014-03-20 17:10
Just to add my word of support here: I find it to be rather annoying, too. I understand that it may be challenging to change this from a development perspective, so perhaps more input should be sought from the community.

@nvaccessAuto
Copy link
Author

Comment 9 by jteh on 2014-03-20 17:18
If you're intentionally silencing content, down then up doesn't reduce efficiency much because you still have to wait to hear if you're entering a container. It'd be different if you were repetitively hitting down arrow without listening to the content at all. I'd argue that with this change, there are more presses of down arrow to get to the actual content, which is just as annoying, especially where there are multiple containers (imagine nested lists, lists inside tables, etc.).

Note that if this is done, it will actually produce blank lines and spaces in the text. This will be particularly evident when moving by character or when copying text.

From a technical standpoint, it's pretty difficult to do. NVDA separates presentation from content and the rendering process doesn't know what NVDA will actually report, so it doesn't know where to render the blank space you desire.

There's some discussion at the moment as to whether we can move the container announcements after the content, rather than before. However, this doesn't solve your desire to hear "out of list" on a separate line. Even if you argue that most users want to hear content separately from the start of containers, hearing the end of containers separately is not something I imagine most users will care about.

@nvaccessAuto
Copy link
Author

Comment 10 by ashleycox (in reply to comment 9) on 2014-03-20 18:07
Replying to jteh:

If you're intentionally silencing content, down then up doesn't reduce efficiency much because you still have to wait to hear if you're entering a container. It'd be different if you were repetitively hitting down arrow without listening to the content at all. I'd argue that with this change, there are more presses of down arrow to get to the actual content, which is just as annoying, especially where there are multiple containers (imagine nested lists, lists inside tables, etc.).

Note that if this is done, it will actually produce blank lines and spaces in the text. This will be particularly evident when moving by character or when copying text.

From a technical standpoint, it's pretty difficult to do. NVDA separates presentation from content and the rendering process doesn't know what NVDA will actually report, so it doesn't know where to render the blank space you desire.

There's some discussion at the moment as to whether we can move the container announcements after the content, rather than before. However, this doesn't solve your desire to hear "out of list" on a separate line. Even if you argue that most users want to hear content separately from the start of containers, hearing the end of containers separately is not something I imagine most users will care about.

You're not always trying to 'silence' content; imagine for example, a page with no headings, and tons of landmarks and lists... with the key text (the article or whatever) right in the middle. There are plenty of these online...
If you know what you're searching for, then use the find command. If, however, you don't, the natural way is to go to the top of the page, and hold down arrow for a bit... speed reading, if you will. You then stop periodically. However, if you should happen to land on the start of a list or a landmark, you have to wait to hear that before hearing the content itself... so you've wasted time hearing "list with 1 items list with 2 items nesting level 1" before you find out you're in the wrong place.

Moving the announcement of the element after the content would be OK but still somewhat annoying. It would definitely take some getting used too, as that's not how you would expect it to read.

Not sure if you've ever used voiceover on the mac, or even the dreaded JFW... it's just a more efficient way of browsing, particularly on unstructured pages.

Would it really be necessary to insert blank lines in the actual text itself to make this work? Would it not be simpler to, somehow, make blank lines appear to the rendering process but not alter the text at all? Apologies if this is a stupid question; I've not had a chance to take an in-depth look at the NVDA source as yet.

@nvaccessAuto
Copy link
Author

Comment 11 by nvdakor on 2014-03-20 18:56
Hi,
A few things:

  1. If this is implemented and if the user copies and pastes the web content to a document, there might arise a situation where the user might become confused as to where the extra "formatting" info came from. Although it might be useful for demos, it actually would be slightly confusing, especially when a user pastes a group of nested containers and if the announcement is pasted along with the text itself (the user will need to edit the resulting text).
  2. We do have a workaround for working with containers: skip to next/previous container (command shift+comma). This command allows a user to skip a container (or a master container which contains other containers) so that one can jump to text more quickly then say, arrowing through the page.
  3. Adding container announcements in the virtual buffer itself might be a bit tedious (from what I can tell and I imagine it to be so). In theory, this is possible, provided that the virtual buffer creation process includes such a mechanism where after encountering a container (list, block quote, table and frame), it would go back and insert the container announcement before and after such a container is "written". However, this becomes difficult when we have nested containers. I can see two reasons: first, NVDA needs to process the outer container as well as the inner container, but the routine for processing the outer container needs to wait until processing the innner ones (and on and on; the rule is to process the innermost container first, then work outwards; imagine working with more than two levels, then this degenerates into a nested loop iteration algorithm); second, what if the nested container contains only one element? NVDA needs to insert the announcements in the virtual buffer text just for this single container (rending a virtual buffer document is quite a consuming process, as NVDA needs to deal with various website 3code configurations, web standards, nonstandard elements, etc.; recent work concentrated on enhanced support for some web elements, which constantly changes, including container representations).
    A general rule of thumb is that although there are features that the user may wish to see it implemented, technology (for now) says it cannot be done.
    Thanks. As Robert said, let's gather some input from others.

@nvaccessAuto
Copy link
Author

Comment 13 by leonardo.gleison on 2015-08-25 16:05
In my opinion it is very necessary.

the reading process is simplified using this navigation method.

In my organisation, this theme is very discuss by informatic teachers and causes various conflicts in migration process from other screen readers.

if it is can modify this in the future, very good.

@bhavyashah
Copy link

I sort of agree. This may be a dealbreaker for novice users, for whom the increasingly complicated web plus the default screen layout in NVDA may already pose a challenge. I believe the announcement of the container at the end has not yet been implemented, making this ticket all the more pertinent and relevant even at present. As I have proposed in the past, we may want to get discussion around such slightly subjective suggestions on to the NVDA Users list so as to get feedback from new and intermediate NVDA users themselves. Thoughts?

@Adriani90
Copy link
Collaborator

Why not making this an optional setting in brows mode settings? I agree actually with both sides. I see the advantages of this function but also the disadvantages. Most people whowant this function are comming from Jaws to NVDA and they are used to it. While I think it is not a revolutionary function in terms of efficiency, I guess it would be good for people who might want to influence the speed of reporting container information. On the other side, I think for most people this information is not very important at all. And pressing down arrow multiple times in a nested lists area is also not the most efficient way to do.
But what about another idea? Regarding speech refactoring, list and listt end could be reported by a specific tone. Then, a script could be added to report how many elements are in the current container. I think this should not be very hard to implement. In such cases, if you want to know how many element you have in the list, you press a keystroke. And you hear a tone when you enter a list and when you leave it. If there are nested lists, the tone could be played multiple times.

@LeonarddeR
Copy link
Collaborator

Knowing this code a bit, I believe that it is pretty cumbersome to implement while introducing not that much benefit. I'd rather see unnecessary exit announcements reduced as being discussed in #10443.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants