Options to toggle the braille cursor on/off and change its shape #5198

Closed
nvaccessAuto opened this Issue Jul 5, 2015 · 26 comments

4 participants

@nvaccessAuto

Reported by dkager on 2015-07-05 15:11
It would be useful to have a way to turn off the braille cursor. Here "cursor" means both the blinking dots 7 and 8 as well as the permanent highlighting marking with the same dot pattern. This improves the reading experience if the user doesn't need to edit anything and may also be a work-around for issue #5158. In general I also find it easier to read with the cursor off even in editable text as long as I can influence where the cursor will end up myself, i.e. using cursor routing keys to position it before editing.

Things I'm not sure about:

  • Should it be possible to toggle the cursor and highlighting separately, or using a single command? I'd be OK with the latter.
  • Should this be an option in Braille Settings or only a script command? Just a command seems good enough because it is unlikely that someone will want to turn off the cursor globally, although I think this should be made possible by storing this setting in config. But in general, this feature would be most useful through a braille display key binding.

I'd welcome all feedback on this.
Blocking #5206

@nvaccessAuto

Comment 1 by jteh on 2015-07-05 22:42
I assume this is something that other screen readers do have? That would set a solid precedent.

I think the command should toggle both the cursor and selection.

Personally, I don't think this option should be saved in config. This seems more like a temporary thing than something you would want permanently saved. In that case, there also shouldn't be a GUI option.

That said, if it is something you/some others actually tend to have disabled more than you do enabled, then it should be saved to config and it should have a GUI option.

Note that being a workaround for #5158 is not an acceptable reason for this to be implemented IMO. I'm trying to get Adobe to fix the issue underlying #5158, but if they don't, I'll hack around it in our Digital Editions app module.

@nvaccessAuto

Comment 2 by Brendon22 (in reply to comment 1) on 2015-07-06 00:16
Replying to jteh:

I assume this is something that other screen readers do have?

Yes, they do.

That would set a solid precedent.

I think the command should toggle both the cursor and selection.

They have seprit options for each of these settings.

Personally, I don't think this option should be saved in config. This seems more like a temporary thing than something you would want permanently saved. In that case, there also shouldn't be a GUI option.

That said, if it is something you/some others actually tend to have disabled more than you do enabled, then it should be saved to config and it should have a GUI option.

I would want it to be a permanently saved setting.

Note that being a workaround for #5158 is not an acceptable reason for this to be implemented IMO. I'm trying to get Adobe to fix the issue underlying #5158, but if they don't, I'll hack around it in our Digital Editions app module.

@nvaccessAuto

Comment 3 by dkager (in reply to comment 1) on 2015-07-06 13:49
Replying to jteh:

I assume this is something that other screen readers do have?

Yes.

I think the command should toggle both the cursor and selection.

I agree. Contrary to comment:2, SuperNova also uses one command to toggle both.

That said, if it is something you/some others actually tend to have disabled more than you do enabled, then it should be saved to config and it should have a GUI option.

I do indeed have the cursor turned off most of the time.

Note that being a workaround for #5158 is not an acceptable reason for this to be implemented IMO.

Yah. I meant that point more as "in case such a situation comes up, there is a quick fix". Another use case would be selecting text that uses dots 7 and/or 8 in braille, which you can't see when highlighting is turned on. But my real motivation is wanting to read text without any blinking dots.

@nvaccessAuto

Comment 4 by bdorer on 2015-07-07 20:43
I'd like to enhance this ticket to allow users to configure wheather the cursor is represented by 78 or 12345678. The last one was requested on the German NVDA mailing list. Should I create a new ticket for this?

@nvaccessAuto

Comment 5 by jteh (in reply to comment 4) on 2015-07-08 04:29
Replying to bdorer:

I'd like to enhance this ticket to allow users to configure wheather the cursor is represented by 78 or 12345678.

But 12345678 completely obscures the character under the cursor. Is this really what is wanted?

@nvaccessAuto

Comment 6 by dkager (in reply to comment 5) on 2015-07-08 09:09
Replying to jteh:

Replying to bdorer:

I'd like to enhance this ticket to allow users to configure wheather the cursor is represented by 78 or 12345678.

But 12345678 completely obscures the character under the cursor. Is this really what is wanted?

Looking at SuperNova, I can set:

  • Dot 8
  • Dots 7 & 8
  • All dots

I can also toggle blinking on/off. Of course with blinking turned off the all dots option mightn't be the most useful one. This implies the selection cursor should remain as dots 7 and 8 or maybe only dot 8, although the latter is often used to indicate special attributes so could be confusing. Incidentally, dots 7 and 8 already obscure the capital sign in most 8-dot braille tables.

Another use case for changing the cursor shape would be if you could set different shapes for focus and review, which I think Window-Eyes and JAWS let you do. But personally I prefer SuperNova's approach of not showing any at all cursor when you review the screen with braille commands. Since the mouse isn't moved as you review the screen, the extra cursor represents mostly an internal concept.

@nvaccessAuto

Comment 7 by jteh (in reply to comment 6) on 2015-07-09 04:57
Replying to dkager:

I can also toggle blinking on/off. Of course with blinking turned off the all dots option mightn't be the most useful one.

Oh, heh. I forgot about blinking. So you can see the actual character when the cursor blinks off. Right. I guess this could be done in this ticket if you're willing, since it will touch the same area of code. The question is what the quick command will do. Will it cycle between these options or just turn it on/off? If the latter, we'll actually need two configuration options.

personally I prefer SuperNova's approach of not showing any at all cursor when you review the screen with braille commands. Since the mouse isn't moved as you review the screen, the extra cursor represents mostly an internal concept.

I disagree. In NVDA, you can do some important stuff with the review cursor; e.g. report formatting, report character description, move mouse, etc. I know you want to bind some of these to routing keys, but we're not going to be able to bind all of them. This is one of the reasons I'm so reluctant to combine tethering review and focus or drop tether ot review, etc., though this is getting out of scope for this ticket.

@nvaccessAuto

Comment 8 by dkager (in reply to comment 7) on 2015-07-09 13:33
Replying to jteh:

Replying to dkager:

I can also toggle blinking on/off. Of course with blinking turned off the all dots option mightn't be the most useful one.

Oh, heh. I forgot about blinking. So you can see the actual character when the cursor blinks off. Right. I guess this could be done in this ticket if you're willing, since it will touch the same area of code. The question is what the quick command will do. Will it cycle between these options or just turn it on/off? If the latter, we'll actually need two configuration options.

SuperNova lets you change both independently, but in terms of code the 'no cursor' option is really a variant of the others, i.e. no dots at all. I don't know if adding two options would clutter the Braille Settings dialog too much. Your call. We shouldn't senselessly mimic other screen readers. But the advantage of having two options is that you don't need to cycle through all shapes to toggle the cursor. You just set the shape, then toggle on/off.

personally I prefer SuperNova's approach of not showing any at all cursor when you review the screen with braille commands. Since the mouse isn't moved as you review the screen, the extra cursor represents mostly an internal concept.

I disagree. In NVDA, you can do some important stuff with the review cursor; e.g. report formatting, report character description, move mouse, etc. I know you want to bind some of these to routing keys, but we're not going to be able to bind all of them. This is one of the reasons I'm so reluctant to combine tethering review and focus or drop tether ot review, etc., though this is getting out of scope for this ticket.

Ideally these actions should be performed with the cursor routing keys. This means you shouldn't have to position the cursor somewhere before querying for formatting information. However, having a cursor isn't a problem once you can turn it off. I'm only saying that there is a difference between speech and braille. This deserves its own ticket at some point.

@nvaccessAuto

Comment 9 by dkager (in reply to comment 4) on 2015-07-09 17:44
Replying to bdorer:

I'd like to enhance this ticket to allow users to configure wheather the cursor is represented by 78 or 12345678.

I'm assuming this is only related to the 'blinking cursor', not the selection cursor? I'd say the latter should always be dots 7 & 8.

@nvaccessAuto

Comment 10 by bdorer on 2015-07-09 20:52
yes, selection with all dots isn't useful. in any case.

@nvaccessAuto

Comment 11 by jteh on 2015-07-09 23:59
Two options is fine, but the list of shapes should be disabled (thus removing it from the tab order) when showing of the cursor is disabled.

@nvaccessAuto

Comment 12 by dkager on 2015-07-10 18:22
For @jteh, another quick question:
Is there a benefit in using getters and setters, such as _get_tether versus accessing config.conf["braille"]["blah"] directly? The latter allows to immediately update the display as the cursor shape or status changes, but this isn't really relevant because closing the Braille Settings dialog will trigger a braille update anyway.

@nvaccessAuto

Comment 13 by dkager on 2015-07-11 11:34
Initial version is here. Works for me, but I haven't done extensive testing yet. This adds two options with corresponding scripts:

  • Toggle braille cursor on/off, the original enhancement.
  • Change braille cursor shape, as suggested in comment:4. @bdorer let me know if this suffices.
@nvaccessAuto

Comment 15 by jteh (in reply to comment 12) on 2015-07-13 01:33
Replying to dkager:

Is there a benefit in using getters and setters, such as _get_tether versus accessing config.conf["braille"]["blah"] directly?

That depends. For tether, see _set_tether; we need special logic to occur when tether is changed. For cursor shape, this probably isn't necessary and you can just access the value directly.

The latter allows to immediately update the display as the cursor shape or status changes, but this isn't really relevant because closing the Braille Settings dialog will trigger a braille update anyway.

Yes, but changing it via a script triggered by, say, a braille display key (which I believe you wanted) won't cause a braille reset or even a focus change. Again, for cursor shape, this probably doesn't matter, but it certainly matters for tethering.

@nvaccessAuto

Comment 16 by dkager (in reply to comment 15) on 2015-07-14 15:18
Replying to jteh:

Replying to dkager:

The latter allows to immediately update the display as the cursor shape or status changes, but this isn't really relevant because closing the Braille Settings dialog will trigger a braille update anyway.

Yes, but changing it via a script triggered by, say, a braille display key (which I believe you wanted) won't cause a braille reset or even a focus change. Again, for cursor shape, this probably doesn't matter, but it certainly matters for tethering.

I made the scripts report a message, to conform to the other scripts. That triggers a braille display update and so the changes will be applied. This won't work if you simply change the config value on-the-fly. In other words, the cursor timer won't be stopped until the next display update. IMO this is good enough, but if it causes issues it can easily be expanded to use getters/setters.

@nvaccessAuto

Comment 18 by bdorer (in reply to comment 13) on 2015-10-06 21:21
Replying to dkager:

Initial version is here. Works for me, but I haven't done extensive testing yet. This adds two options with corresponding scripts:

  • Toggle braille cursor on/off, the original enhancement.

  • Change braille cursor shape, as suggested in comment:4. @bdorer let me know if this suffices.

Thanks. Both options are working here.

@nvaccessAuto

Comment 19 by jteh on 2015-10-21 05:23
Changes:
Milestone changed from None to 2016.1

@nvaccessAuto

Comment 20 by dkager on 2015-10-21 06:38
Changes:
Changed title from "Option to toggle the braille cursor on/off" to "Options to toggle the braille cursor on/off and change its shape"

@jcsteh jcsteh was assigned by nvaccessAuto Nov 10, 2015
@nvaccessAuto nvaccessAuto added this to the 2016.1 milestone Nov 10, 2015
@dkager dkager added a commit to dkager/nvda that referenced this issue Nov 14, 2015
@dkager dkager Alva BC6: Add two more bindings for controlling the cursor shape and …
…state. Requires #5198.
bf79d9e
@jcsteh jcsteh added a commit that referenced this issue Nov 26, 2015
@dkager dkager You can turn off the braille cursor and change its shape using the ne…
…w Show cursor and Cursor shape options in the Braille Settings dialog.

Fixes #5198.
5e5e374
@dkager

Replying to this comment.

I think the command should toggle both the cursor and selection.
I agree. Contrary to comment:2, SuperNova also uses one command to toggle both.
I disagree. With myself. Let's try again:

  • Underlining the focus item with dots 7 and 8, e.g. a desktop icon or menu item, can get in the way really quickly. I can definitely appreciate an option to turn this off. Fortunately, this is how NVDA works, no tweaks needed.
  • If on the other hand you select some text, you probably want to know exactly what you are doing even though you don't have the cursor showing in braille.

Maybe I'm too black-and-white here. Maybe selections and cursors are the same thing where this enhancement is concerned. They are in SuperNova, but obviously that doesn't mean they're right. In the case of SuperNova it's easy to select stuff by holding down the Shift key and pressing braille cursor routing keys. If you do it that way you clearly already know what you just selected. The same could be said for using Ctrl+Shift+arrows to select text. If someone actually wants to turn off indication of the selection it should be done in this enhancement and I'll quit confusing people.

Long story short, I'm OK with implementing either option but I'd like some more feedback on it.

@jcsteh

I'm happy to go with consensus here; I don't have a strong opinion. I do think that if someone does want to be able to disable selection for text, we shouldn't have a separate command.

If on the other hand you select some text, you probably want to know exactly what you are doing even though you don't have the cursor showing in braille.

This seems inconsistent. You don't care about the cursor, which means you're just reading for content. But you say you do care about selection. Why is selection special when you're just reading for content? Furthermore, how can you make a selection without knowing where the cursor is? I guess you could use cursor routing and just presume the cursor moved, but that seems odd to me.

@dkager

Furthermore, how can you make a selection without knowing where the cursor is? I guess you could use cursor routing and just presume the cursor moved, but that seems odd to me.
That is indeed what I do, which of course doesn't make it any less odd.

There are two situations related to this question:

  1. The user wants to disable the braille cursor indicator but still see the selection indicator. In this case, they can simply turn the cursor back on for a while, it's easy enough with the script. This is certainly good enough for me.
  2. The user wants to disable the selection indicator and presumably also the cursor. If we don't implement this here this won't be possible at all. I would say a separate option is both too fine-grained and a bit confusing.

Keeping the above in mind the most future-proof solution is to also disable the selection indicator. Now for the technical side... :)

@leonardder

What comes to mind here is that it could be confusing that enabling/disabling the cursor also applies to the selection indicator, while cursor shape and blinking on/off only applies to the cursor itself. I see the point of setting dots 12345678 for a cursor, but this is non-prefered behavior for the selection indicator imo. Or am I missing something here?

@dkager

What @leonardder said also makes sense. Is a selection a cursor or vice versa, or is it a different concept?

Not including the selection indicator saves a bit of work, so I think I'll wait a while with trying to implement that until we are decided on this point.

@jcsteh

While I agree there could be confusion regarding the term cursor if it also relates to selection, we can solve this easily enough by being explicit in the option name: Show cursor/selection indicator (or similar).

It seems we probably aren't going to get enough solid feedback at this stage. Therefore, I suggest we proceed with selection not being affected by show cursor, since it's more work to implement this and that'd be silly if no one cares. We can always add it later.

I have one caveat, though: if it turns out that people do want to disable selection, I would want this to be controlled by the same option. We can clarify the option name to make this clear.

Sound fair?

@dkager

Sounds good. If people end up wanting to disable the selection indicator I'll happily look at it. Barring that I think all that stands in the way of incubation is a small documentation change:

==== Show Cursor ====
This option allows the braille cursor to be turned on and off.
It applies to all cursors, the selection indicator is not affected by this option.

Instead of "all cursors" it is maybe better to say something like "all focus and review cursors" or "the cursors in focus and review mode".

@jcsteh jcsteh added a commit that referenced this issue Dec 1, 2015
@dkager dkager You can turn off the braille cursor and change its shape using the ne…
…w Show cursor and Cursor shape options in the Braille Settings dialog.

Fixes #5198.
451a91f
@nvaccessAuto

Incubated in c7394ff.

@jcsteh jcsteh added a commit that closed this issue Dec 16, 2015
@dkager dkager You can turn off the braille cursor and change its shape using the ne…
…w Show cursor and Cursor shape options in the Braille Settings dialog.

Fixes #5198, #5492 (PR).
0087ef0
@jcsteh jcsteh closed this in 0087ef0 Dec 16, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment