Skip to content

Add ability to scroll automatically in braille#19126

Merged
SaschaCowley merged 154 commits intonvaccess:masterfrom
nvdaes:brailleScroll
Apr 9, 2026
Merged

Add ability to scroll automatically in braille#19126
SaschaCowley merged 154 commits intonvaccess:masterfrom
nvdaes:brailleScroll

Conversation

@nvdaes
Copy link
Copy Markdown
Collaborator

@nvdaes nvdaes commented Oct 21, 2025

  • Add ability to scroll automatically with braille
  • Add ability to scroll automatically in braille

Link to issue number:

Fixes #18573

Summary of the issue:

Users may wish to scroll braille automatically.

Description of user facing changes:

  • Added an unassigned command to toggle scrolling braille automatically.
  • Added unasigned commands to decrease and increase the autoScroll rate.
  • In the braille settings subpanel, added a slider to set the autoScroll rate, measured in cells/seconds.

Description of developer facing changes:

The BrailleHandler class has a new method named autoScroll with an enable parameter, to toggle braille automatic -scroll.

Description of development approach:

Added an autoScroll`` method in the BrailleHandlerclass to toggle automatic scroll. This will usewx.CallLaterto call theautoScrollForwardmethod. Code has been added to stop autoScroll when the caret reaches the end of a document (the cursor is not moved), when a message is displayed in braille, when a new object is handled, on secure screens, and when the session is locked, via the_clearAll` method.
Also, if automatic scroll is enabled, when scrolling back or forward, autoScroll will be disabled and enabled to reset the timer and scroll forward again.

Testing strategy:

Tested locally.

Known issues with pull request:

None.

Code Review Checklist:

  • Documentation:
    • Change log entry
    • User Documentation
    • Developer / Technical Documentation
    • Context sensitive help for GUI changes
  • Testing:
    • Unit tests
    • System (end to end) tests
    • Manual testing
  • UX of all users considered:
    • Speech
    • Braille
    • Low Vision
    • Different web browsers
    • Localization in other languages / culture than English
  • API is compatible with existing add-ons.
  • Security precautions taken.

@nvdaes nvdaes mentioned this pull request Oct 21, 2025
@codeofdusk
Copy link
Copy Markdown
Contributor

Some displays have capacitive sensors that can detect when you reach the end of the line of Braille and optionally advance automatically, so supporting this use case is also worth thinking about.

CC @FelixGruetzmacher, @LeonarddeR.

@LeonarddeR
Copy link
Copy Markdown
Collaborator

For now, the default reading speed is 10 chars/sec.

This means that the speed would be dependant on the braille display size, but that doesn't seem to be the case in your code yet. I like the assumed characters per sec approach though. That would mean you can increase scrolling speed when a line only contains a few characters.

@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Oct 22, 2025

Leonard wrote:

I like the assumed characters per sec approach

I write the code for that approach, but later I removed it due to feedback from people who is concerned about ability to understand this concept, thinking for example in older people, or people with cognitive difficulties. Seems that the BrailleExtender add-on used the seconds approach, not chars/sec.
We may create a combo box to decide between seconds or char/sec, or adding a checkbox asking if this should be proportional to the display size or the number of cells used.
cc: @gerald-hartig since this may be controversial.

@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Oct 23, 2025

For now I'll try to create a combo box. I thought abou using the number of used cells, not the display size, too. But perhaps this produces an uncomfortable feeling if someone doesn't know if all relevant information has been read, if interval about scrollings is variable. So a combo box is more flexible than a checkbox, to add several options if desired.
In the spanish community, where there are users testing this, a combo box has been suggested for this.

@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Oct 25, 2025

@SaschaCowley , I think that the failure of Pyright is not related to the code. Seems that the analysis is not performed due to something related to the cache.

@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Oct 25, 2025

Sorry @SaschaCowley , forget my comment about Pyright. I've analyzed the code locally and have fixed it (now no I don't get errors and the check here has passed).

@SaschaCowley SaschaCowley added the conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review. label Oct 28, 2025
@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Oct 29, 2025

I see that this has been labelled with ConceptApproved, so I'll continue working on this. I think that adding a combo box for cells/seconds and seconds can be confusing, since in one case the value increases the rate, and in the other one the delay is increased. So I'm thinking in adding just a value, but trying to reflect the conversion between cells/seconds to seconds deppending on the display size. I have found people who doesn't understand the concept of cells/seconds, at least the first time. But I think that it has more sense that jst seconds, since the same value can be applied regardless to the display size, for example if someone connects a different braille display.

@nvdaes nvdaes marked this pull request as ready for review March 5, 2026 17:55
Comment thread user_docs/en/userGuide.md Outdated
Copy link
Copy Markdown
Member

@SaschaCowley SaschaCowley left a comment

Choose a reason for hiding this comment

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

Just two things that will stop the settings dialog working, and then I think this is good to go

Comment thread source/gui/settingsDialogs.py Outdated
Comment thread source/gui/settingsDialogs.py Outdated
@nvdaes
Copy link
Copy Markdown
Collaborator Author

nvdaes commented Mar 20, 2026

@SaschaCowley Thanks for your review. I've applied your suggestions and the dialog appears to work now.

Comment thread source/config/configSpec.py
# Conflicts:
#	user_docs/en/changes.md
@SaschaCowley SaschaCowley enabled auto-merge (squash) April 2, 2026 06:04
Copy link
Copy Markdown
Member

@Qchristensen Qchristensen left a comment

Choose a reason for hiding this comment

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

Docs read well.

@SaschaCowley SaschaCowley merged commit 49119c9 into nvaccess:master Apr 9, 2026
76 of 79 checks passed
@github-actions github-actions Bot added this to the 2026.2 milestone Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review. merge-early Merge Early in a developer cycle

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Braille text autoscroll

8 participants