Skip to content

Add a significant amount of new braille role and state abreviations and change checked and pressed states to unicode (#7188)#7248

Merged
jcsteh merged 15 commits into
nvaccess:masterfrom
BabbageCom:i7188
Aug 1, 2017
Merged

Add a significant amount of new braille role and state abreviations and change checked and pressed states to unicode (#7188)#7248
jcsteh merged 15 commits into
nvaccess:masterfrom
BabbageCom:i7188

Conversation

@LeonarddeR

@LeonarddeR LeonarddeR commented Jun 3, 2017

Copy link
Copy Markdown
Collaborator

cc @dkager

Link to issue number:

Fixes #7188

Summary of the issue:

In current braille output, many object roles (e.g. window) and states (e.g. pressed) are unabbreviated. This means that roles and states often take a significant, redundant space on the braille display.

Description of how this pull request fixes the issue:

This pr adds the following:

  1. It reorders the role and state labels as how the roles and states are defined in controlTypes. Without that, it was a headache to check what roles and states were covered and which ones were not.

  2. A whole lot of new role and state abbreviations made up by @dkager and me, after some discussion, so our ideas match. Only additions, no changes, except the changes below

  3. We changed tb for table to tbl, since tb is ambiguous (e.g. can be tab as well)

  4. We changed the representations of the separator role and checked/not checked states to unicode braille patterns, in order for them to be identical across braille tables. Rationale in Shorten more roles and states in braille #7188 (comment) . States are now:

    • Separator: ⠤⠤⠤⠤⠤
    • checked/pressed: ⢎⣿⡱
    • Half checked: ⢎⣭⡱
    • Not checked/not pressed: ⢎⣉⡱

Testing performed:

For the unicode changes, we tested occurences of these new patterns. We haven't been able to test every new role and state though. May be @dkager can elaborate some more on this?

Anyhow, I'd suggest for this pr to be incubating in next somewhat longer than usual, since not everyone uses braille and I think that i'd be good if other's share their thoughts and ideas as well.

Known issues with pull request:

  1. No user guide changes have been made yet. I think we'd first agree about the changes before we incorporate them into the user guide
  2. As this adds a massive amount of abbreviations, UX for braille users might be siginificantly different from what they know and learnt in the past. I think we should also debate whether we want an option to make role/state abbreviations optional.

What's New Entries

In Changes:

- Many more control types and states have been abbreviated for braille. Please see "Control Type, State and Landmark Abbreviations" under Braille in the User Guide for a complete list. (#7188)

Leonard de Ruijter added 2 commits June 2, 2017 06:54
…ls to be in the order of how they are defined in controlTypes. No functional change.
* Change the checked and pressed states to unicode braille to be uniform across all braille tables

Includes additions by @dkager
@LeonarddeR

LeonarddeR commented Jun 23, 2017

Copy link
Copy Markdown
Collaborator Author

@josephsl and @derekriemer, I'd like your thoughts about the new states we added. Of course everyone else is welcome to review this and provide suggestions, alternatives or additions. I think I can speak for @dkager as well if I say that we'd like to have as much as possible consensus about this before we ask NV Access to look at this.

@derekriemer

derekriemer commented Jun 25, 2017 via email

Copy link
Copy Markdown
Collaborator

@jcsteh

jcsteh commented Jul 10, 2017

Copy link
Copy Markdown
Contributor

@leonardder commented on 3 Jun 2017, 19:58 GMT+10:

  1. No user guide changes have been made yet. I think we'd first agree about the changes before we incorporate them into the user guide

Fair enough, though I'd want the User Guide updated before this gets reviewed/incubated.

I think we should also debate whether we want an option to make role/state abbreviations optional.

While the experience is different, the goal (I hope) is that these abbreviations should be reasonably intuitive in context. So, my vote would be against such an option. We've never had it in the past, and though I understand this adds a lot more, I think it's better for users to learn the new abbreviations, rather than becoming less efficient than they were before by disabling all of them (even the we ones we had previously).

@dkager

dkager commented Jul 10, 2017

Copy link
Copy Markdown
Contributor

So except for user guide updates this is ready for review. @LeonarddeR are you doing the update?

@jcsteh

jcsteh commented Jul 10, 2017 via email

Copy link
Copy Markdown
Contributor

@dkager

dkager commented Jul 10, 2017

Copy link
Copy Markdown
Contributor

Fixed. @LeonarddeR please double-check.

@jcsteh jcsteh left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still merge conflicts. Maybe that just happened again today. :(

Comment thread source/braille.py
# tree view.
controlTypes.ROLE_TREEVIEW: _("tv"),
# Translators: Displayed in braille for an object which is a
# tree view item.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's worth noting that this should rarely appear because we don't show the role for tree view items unless they provide no other info. Is it still worth including?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe it can occur in applications sprayed with ARIA.

Comment thread source/braille.py Outdated
controlTypes.ROLE_TOOLBAR: _("tlbar"),
# Translators: Displayed in braille for an object which is a
# drop down button.
controlTypes.ROLE_DROPDOWNBUTTON: _("ddbtn"),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if drbtn might be a bit more intuitive? I know dd stands for dropdown, but when all else fails, I try to sound it out. Drbtn seems to click more quickly in my head because of the "dr" sound, but I get that this is subjective.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking back at it now, I agree that drbtn is more intuitive. It would be nice to keep the buttons to 4 letters, e.g. rbtn, but I think dbtn is too vague.

Comment thread source/braille.py Outdated
controlTypes.ROLE_SECTION: _("sect"),
# Translators: Displayed in braille for an object which is a
# toggle button.
controlTypes.ROLE_TOGGLEBUTTON: _("tbtn"),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would tgbtn be more intutive?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similarly, I would now say that tbtn is too vague too, so agreed.

Comment thread source/braille.py Outdated
controlTypes.ROLE_TOGGLEBUTTON: _("tbtn"),
# Translators: Displayed in braille for an object which is a
# split button.
controlTypes.ROLE_SPLITBUTTON: _("sptbtn"),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would splbtn be more intuitive?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably. I thought that's actually what we used, but we must have had an even brighter idea at some point. :)
Keeping in line with drbtn and tgbtn, would spbtn be an option? Probably not, because it could be confused with spin button. So splbtn then?

Comment thread source/braille.py Outdated
# Displayed in braille when an object (e.g. a toggle button) is pressed.
controlTypes.STATE_PRESSED: u"⢎⣿⡱",
# Displayed in braille when an object (e.g. a check box) is checked.
controlTypes.STATE_CHECKED: u"⢎⣿⡱",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked and pressed are the same I think? I guess this means more or less the same thing, but speech does differentiate. Should braille differentiate too?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See also the discussion with @feerrenrut in the issue (#7188).

Comment thread source/braille.py Outdated
# Displayed in braille when an object (e.g. a check box) is checked.
controlTypes.STATE_CHECKED: u"⢎⣿⡱",
# Displayed in braille when an object (e.g. a check box) is half checked.
controlTypes.STATE_HALFCHECKED: u"⢎⣭⡱",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm a little concerned this looks a bit like a Latin x, so users transitioning might be confused. Since we're doing ⢎⣿⡱ for checked, how about ⢎⡇⡱ or ⢎⢸⡱ for half?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jcsteh Would you be OK with ⣏⣸⣹ for half checked? I like the bottom line of the cell (dots 7 and 8) to be consistently filled to make clear that it is one shape. Same for unchecked.

Comment thread source/braille.py Outdated
# Translators: Displayed in braille when an object (e.g. an editable text field) is read-only.
controlTypes.STATE_READONLY: _("ro"),
# Displayed in braille when an object (e.g. a tree view item) is expanded.
controlTypes.STATE_EXPANDED: "-",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see you made this untranslatable, but it's not Unicode. Is it possible that a dash might not work as expected in some language? What we're really wanting here is a minus sign, but most tables probably don't define the Unicode minus properly and I'm concerned about dash and minus somehow being interpreted very differently.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very bold idea, but we could do Unicode shapes for those too, assuming 1 or 2 braille cells can sort of represent the visual symbols (what are the visual symbols?).
I believe UEB has rules regarding the hyphen and capitals, but only if no whitespace surrounds it.

Comment thread source/braille.py Outdated
controlTypes.STATE_COLLAPSED: "+",
# Translators: Displayed in braille when an object has a popup (usually a sub-menu).
controlTypes.STATE_HASPOPUP: _("submnu"),
# Displayed in braille when a protected control or a document is encountered.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trailing tab.

Comment thread source/braille.py Outdated
# Translators: Displayed in braille when an object is not selected.
controlTypes.STATE_SELECTED: _("nsel"),
# Displayed in braille when an object (e.g. a toggle button) is not pressed.
controlTypes.STATE_PRESSED: u"⢎⣉⡱",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See above re checked/pressed.

Comment thread source/braille.py Outdated
# Displayed in braille when an object (e.g. a toggle button) is not pressed.
controlTypes.STATE_PRESSED: u"⢎⣉⡱",
# Displayed in braille when an object (e.g. a check box) is not checked.
controlTypes.STATE_CHECKED: u"⢎⣉⡱",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As above, I'm concerned about this looking like an x. Any reason not to do ⢎ ⡱ (space in the middle)?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To me ⣉ looks distinctly taller than x.
SuperNova uses ⣏⣀⣹ to represent an empty checkbox. Maybe that makes it clearer that it is an empty box rather than an x? In the case of NVDA we could stick to the more 'rounded' box ⢎⣀⡱ which I think is a bit easier on the fingers.

@dkager

dkager commented Jul 11, 2017

Copy link
Copy Markdown
Contributor

@LeonarddeR Please review.

@LeonarddeR

Copy link
Copy Markdown
Collaborator Author

@dkager commented on 11 jul. 2017 11:47 CEST:

@LeonarddeR Please review.

This is ok. It seems you removed some whitespace issues from the BrailleDisplayDriver class, but he, why not?

Note that collapsed and expanded states are still left untranslatable.

@dkager

dkager commented Jul 12, 2017

Copy link
Copy Markdown
Contributor

It seems you removed some whitespace issues from the BrailleDisplayDriver class, but he, why not?

I did? Must be Git being smart.

Note that collapsed and expanded states are still left untranslatable.

I think *** is still translatable. Note that this is not Unicode braille.
@LeonarddeR Could you either make this untranslatable, or make + and - translatable again? As I said before, I wouldn't mind experimenting with Unicode shapes for plus and minus either. But I think most braille users prefer a real + over a braille pattern that looks a bit like a plus.

@LeonarddeR

LeonarddeR commented Jul 12, 2017 via email

Copy link
Copy Markdown
Collaborator Author

@dkager

dkager commented Jul 12, 2017

Copy link
Copy Markdown
Contributor

Suggestion for treeview state shapes:

  • Collapsed: ⢾⡷ (very blocky plus)
  • Expanded: ⠤⠤ (minus)

Pro: in Dutch, the plus and the exclamation point have the same braille pattern, though for the plus there are some extra whitespace rules. Readers could confuse the treeview collapsed plus for an exclamation point indicating an error. Unicode shapes are unambiguous.
Con: all those new shapes tend to overwhelm.

@jcsteh

jcsteh commented Jul 13, 2017 via email

Copy link
Copy Markdown
Contributor

@dkager

dkager commented Jul 13, 2017

Copy link
Copy Markdown
Contributor

That answers all feedback/questions I had.
Radio buttons are a bit of an edge case now because they are visually round but in braille they get boxy shapes. We can look at merging role and state for checkable items later. Apart from that I think we came up with the most intuitive abbreviations while keeping them truly short.

Comment thread source/braille.py Outdated
# graphic.
controlTypes.ROLE_GRAPHIC: _("gra"),
# block quote.
controlTypes.ROLE_BLOCKQUOTE: _("blq"),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One more detail: I would prefer blqt or bqt, because to me 'qt' is more intuitive than 'q'. Reading the two alternatives now I would settle for bqt.

@dkager

dkager commented Jul 14, 2017

Copy link
Copy Markdown
Contributor

OK, now I'm totally happy.

Comment thread user_docs/en/userGuide.t2t Outdated
| tvitem | tree view item |
| lv N | a tree view item has a hierarchical level N|
| wnd | window |
| ``-----`` | separator |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Separator is defined in the code as ⠤⠤⠤⠤⠤, which makes sense to me... but this is inconsistent here in the User Guide.

| ⣏⣿⣹ | displayed when an object (e.g. a checkbox) is checked |
| ⣏⣸⣹ | displayed when an object (e.g. a checkbox) is half checked |
| ⢎⣀⡱ | displayed when an object (e.g. a toggle button) is not pressed |
| ⣏⣀⣹ | displayed when an object (e.g. a checkbox) is not checked |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While i understand why these are ordered like this in the code, I think it makes sense to keep checked, half checked and not checked together in the User Guide, rather than being interspersed with the pressed states.

@jcsteh

jcsteh commented Aug 1, 2017

Copy link
Copy Markdown
Contributor

Merging this one two days early, since it needs to go in now if we want it to get into 2017.3 and I can't see any reason to hold it back.

@jcsteh jcsteh merged commit 2fdb94f into nvaccess:master Aug 1, 2017
@nvaccessAuto nvaccessAuto added this to the 2017.3 milestone Aug 1, 2017
@LeonarddeR LeonarddeR added the BabbageWork Pull requests filed on behalf of Babbage B.V. label Oct 11, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BabbageWork Pull requests filed on behalf of Babbage B.V.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Shorten more roles and states in braille

5 participants