Skip to content
Draft
Show file tree
Hide file tree
Changes from 85 commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
5b411ab
Add ability to scroll automatically with braille
nvdaes Oct 21, 2025
ab1056e
Add ability to scroll automatically in braille
nvdaes Oct 21, 2025
098bedc
Pre-commit auto-fix
pre-commit-ci[bot] Oct 21, 2025
b997c66
Beep instead of speaking message when scrolling is enabled, to avoid …
nvdaes Oct 22, 2025
7e89c2c
Merge branch 'brailleScroll' of https://github.com/nvdaes/nvda into b…
nvdaes Oct 22, 2025
d380d88
Added edit box to set the interval in seconds for autoScroll
nvdaes Oct 22, 2025
01e4f87
Convert to milliseconds autoScrollTimeout
nvdaes Oct 22, 2025
79d83f9
Add combo box for autoScroll intervals
nvdaes Oct 24, 2025
c3c7e47
Merge branch 'master' into brailleScroll
nvdaes Oct 24, 2025
f033be7
Save autoScroll interval option
nvdaes Oct 24, 2025
5b6fca5
Pre-commit auto-fix
pre-commit-ci[bot] Oct 24, 2025
572f1af
Use option for autoScrollInterval in config
nvdaes Oct 24, 2025
e1e8b70
Add commands to increase and decrease autoScroll
nvdaes Oct 25, 2025
7ab4eb2
Pre-commit auto-fix
pre-commit-ci[bot] Oct 25, 2025
3d60cd1
Update coment
nvdaes Oct 25, 2025
43335b5
Merge remote-tracking branch 'origin/master' into brailleScroll
nvdaes Oct 25, 2025
6873bae
Use oneShot in autoScroll
nvdaes Oct 25, 2025
17d52c6
Fix pyright analysis locally
nvdaes Oct 25, 2025
3463e1d
Merge remote-tracking branch 'origin/master' into brailleScroll
nvdaes Oct 30, 2025
a1a748c
Remove combo box to select how to calculate the autoScroll interval
nvdaes Oct 30, 2025
22515bb
Pre-commit auto-fix
pre-commit-ci[bot] Oct 30, 2025
5a26e26
Fix max and min timeout
nvdaes Oct 30, 2025
96bab6d
Merge branch 'brailleScroll' of https://github.com/nvdaes/nvda into b…
nvdaes Oct 30, 2025
ca22023
Pre-commit auto-fix
pre-commit-ci[bot] Oct 30, 2025
6920874
Merge branch 'master' into brailleScroll
nvdaes Nov 17, 2025
59b1694
Merge branch 'master' into brailleScroll
nvdaes Nov 18, 2025
a1b816b
Update braille.py
nvdaes Nov 18, 2025
55cd1bb
Use autoScrollRate and timeout when appropriate
nvdaes Nov 18, 2025
2b4d750
Pre-commit auto-fix
pre-commit-ci[bot] Nov 18, 2025
619c02c
Update variables in globalCommands
nvdaes Nov 18, 2025
3dce11a
Merge branch 'brailleScroll' of https://github.com/nvdaes/nvda into b…
nvdaes Nov 18, 2025
e1acf80
Update braille
nvdaes Nov 18, 2025
a2c7611
Fixes
nvdaes Nov 18, 2025
a4e11b5
Pre-commit auto-fix
pre-commit-ci[bot] Nov 18, 2025
9032f60
Merge branch 'master' into brailleScroll
nvdaes Nov 20, 2025
ff6880d
Update user guide
nvdaes Nov 20, 2025
a23a05a
Rename option
nvdaes Nov 20, 2025
bc64da2
Update user guide
nvdaes Nov 20, 2025
3207953
Disable autoScroll when the session is locked
nvdaes Nov 20, 2025
00ab1ae
Update user guide
nvdaes Nov 20, 2025
3efcc0e
Update changelog
nvdaes Nov 20, 2025
f3a2041
Apply suggestions from code review
nvdaes Nov 21, 2025
0734bb6
Apply suggestions from code review
nvdaes Nov 25, 2025
a6a142a
Pre-commit auto-fix
pre-commit-ci[bot] Nov 25, 2025
367a301
Address code review
nvdaes Nov 25, 2025
dbcffc5
Pre-commit auto-fix
pre-commit-ci[bot] Nov 25, 2025
a8f2459
Improve toggling scroll handling message timeout
nvdaes Nov 25, 2025
f8630ea
Merge branch 'brailleScroll' of https://github.com/nvdaes/nvda into b…
nvdaes Nov 25, 2025
87f6ec8
Apply suggestions from code review
nvdaes Dec 5, 2025
3d754c3
Merge
nvdaes Dec 5, 2025
b3052eb
Restore liblouis
nvdaes Dec 5, 2025
72cc841
Increase maximum for scroll rate
nvdaes Dec 5, 2025
c19039d
Allow scrolling when braille follows speech
nvdaes Dec 5, 2025
8f5eb26
Merge branch 'master' into brailleScroll
nvdaes Dec 5, 2025
b2a18f1
Merge branch 'master' into brailleScroll
nvdaes Dec 8, 2025
f3758fb
Use float for braille autoScroll rate
nvdaes Dec 8, 2025
b4c28b1
Use slider
nvdaes Dec 8, 2025
ece83ae
Pre-commit auto-fix
pre-commit-ci[bot] Dec 8, 2025
f5c6402
Update commands to change scroll rate
nvdaes Dec 8, 2025
004b3f1
Merge
nvdaes Dec 8, 2025
696ae2d
Pre-commit auto-fix
pre-commit-ci[bot] Dec 8, 2025
1604a3a
Improve command
nvdaes Dec 8, 2025
16acdf4
Merge
nvdaes Dec 8, 2025
811e48b
Pre-commit auto-fix
pre-commit-ci[bot] Dec 8, 2025
1b9a677
Fix lint
nvdaes Dec 8, 2025
8dfe987
Merge branch 'brailleScroll' of https://github.com/nvdaes/nvda into b…
nvdaes Dec 8, 2025
d7977d1
Add comments to explain why we are multiplying and dividing by 5 in s…
nvdaes Dec 8, 2025
9c419c9
Pre-commit auto-fix
pre-commit-ci[bot] Dec 8, 2025
73c2406
Merge master
nvdaes Dec 9, 2025
f466215
Merge master
nvdaes Dec 9, 2025
2b81e48
Reset changelog
nvdaes Dec 9, 2025
62520ec
Update changelog
nvdaes Dec 9, 2025
eb12323
Remove crash file
nvdaes Dec 9, 2025
662cbc6
Fix an issue where autoScroll couldn't be toggled using braille speec…
nvdaes Dec 9, 2025
039764d
Pre-commit auto-fix
pre-commit-ci[bot] Dec 9, 2025
4b2444f
Update user guide
nvdaes Dec 9, 2025
9a5182d
Merge
nvdaes Dec 9, 2025
0255812
Merge branch 'master' into brailleScroll
nvdaes Dec 10, 2025
057dd7a
Merge branch 'master' into brailleScroll
nvdaes Dec 12, 2025
c7464ac
Add spin double
nvdaes Dec 12, 2025
c7c0c86
Pre-commit auto-fix
pre-commit-ci[bot] Dec 12, 2025
5f61788
Improve control
nvdaes Dec 12, 2025
1e9af48
Merge branch 'master' into brailleScroll
nvdaes Dec 16, 2025
d152666
Revert "Add spin double"
nvdaes Dec 16, 2025
899b083
Improve slider for braille scroll
nvdaes Dec 27, 2025
6102d0e
Merge branch 'master' into brailleScroll
nvdaes Jan 12, 2026
e614982
Update globalCommands
nvdaes Jan 12, 2026
597abaf
Pre-commit auto-fix
pre-commit-ci[bot] Jan 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 48 additions & 1 deletion source/braille.py
Original file line number Diff line number Diff line change
Expand Up @@ -1712,10 +1712,11 @@ def nextLine(self):
try:
dest.obj.turnPage()
except RuntimeError:
pass
handler.autoScroll(enable=False)
else:
dest = dest.obj.makeTextInfo(textInfos.POSITION_FIRST)
else: # no page turn support
handler.autoScroll(enable=False)
shouldCollapseToEnd = True
dest.collapse(shouldCollapseToEnd)
self._setCursor(dest)
Expand Down Expand Up @@ -2483,6 +2484,7 @@ def __init__(self):
self._cursorBlinkUp = True
self._cells = []
self._cursorBlinkTimer = None
self._autoScrollCallLater: wx.CallLater | None = None
config.post_configProfileSwitch.register(self.handlePostConfigProfileSwitch)
if config.conf["braille"]["tetherTo"] == TetherTo.AUTO.value:
self._tether = TetherTo.FOCUS.value
Expand Down Expand Up @@ -2518,6 +2520,7 @@ def terminate(self):
if self._cursorBlinkTimer:
self._cursorBlinkTimer.Stop()
self._cursorBlinkTimer = None
self.autoScroll(enable=False)
config.post_configProfileSwitch.unregister(self.handlePostConfigProfileSwitch)
post_secureDesktopStateChange.unregister(self._onSecureDesktopStateChanged)
post_sessionLockStateChanged.unregister(self._onSessionLockStateChanged)
Expand All @@ -2533,12 +2536,14 @@ def terminate(self):

def _clearAll(self) -> None:
"""Clear the braille buffers and update the braille display."""
self.autoScroll(enable=False)
self.mainBuffer.clear()
if self.buffer is self.messageBuffer:
self._dismissMessage(False)
self.update()

def _onSecureDesktopStateChanged(self, isSecureDesktop: bool):
self.autoScroll(enable=False)
self.mainBuffer.clear()
if not easeOfAccess.isRegistered():
if isSecureDesktop:
Expand Down Expand Up @@ -2992,13 +2997,20 @@ def scrollForward(self):
self.buffer.scrollForward()
if self.buffer is self.messageBuffer:
self._resetMessageTimer()
if self._autoScrollCallLater:
# Reset the timer.
self._resetAutoScroll()

def scrollBack(self):
self.buffer.scrollBack()
if self.buffer is self.messageBuffer:
self._resetMessageTimer()
if self._autoScrollCallLater:
# Reset the timer.
self._resetAutoScroll()

def routeTo(self, windowPos):
self.autoScroll(enable=False)
self.buffer.routeTo(windowPos)
if self.buffer is self.messageBuffer:
self._dismissMessage()
Expand All @@ -3023,6 +3035,7 @@ def message(self, text):
):
return
_pre_showBrailleMessage.notify()
self.autoScroll(enable=False)
if self.buffer is self.messageBuffer:
self.buffer.clear()
else:
Expand Down Expand Up @@ -3063,6 +3076,39 @@ def _dismissMessage(self, shouldUpdate: bool = True):
self.update()
_post_dismissBrailleMessage.notify()

def autoScroll(self, enable: bool) -> None:
"""
Enable or disable automatic scroll.

:param enable: ``True`` if automatic scroll should be enabled, ``False`` otherwise.
"""

if not self.enabled:
return
if enable and self._autoScrollCallLater is None:
self._autoScrollCallLater = wx.CallLater(self._calculateAutoScrollTimeout(), self.scrollForward)
elif not enable and self._autoScrollCallLater is not None:
self._autoScrollCallLater.Stop()
self._autoScrollCallLater = None

def _calculateAutoScrollTimeout(self) -> int:
"""
Calculate the timeout for automatic scroll.

:return: The number of milliseconds to wait until the next scroll.
"""

autoScrollRate = config.conf["braille"]["autoScrollRate"]
return int((self.displaySize / autoScrollRate) * 1000)

def _resetAutoScroll(self) -> None:
"""
Reset autoScroll.
"""

self.autoScroll(enable=False)
self.autoScroll(enable=True)

def handleGainFocus(self, obj: "NVDAObject", shouldAutoTether: bool = True) -> None:
if not self.enabled or config.conf["braille"]["mode"] == BrailleMode.SPEECH_OUTPUT.value:
return
Expand All @@ -3086,6 +3132,7 @@ def handleGainFocus(self, obj: "NVDAObject", shouldAutoTether: bool = True) -> N
)

def _doNewObject(self, regions):
self.autoScroll(enable=False)
self.mainBuffer.clear()
focusToHardLeftSet = False
for region in regions:
Expand Down
2 changes: 2 additions & 0 deletions source/config/configSpec.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@
showMessages = integer(0, 2, default=1)
# Timeout after the message will disappear from braille display
messageTimeout = integer(default=4, min=1, max=20)
# Rate for automatic scroll (cells/sec)
autoScrollRate = float(default=10, min=1, max=20)
tetherTo = option("auto", "focus", "review", default="auto")
reviewRoutingMovesSystemCaret = featureFlag(\
optionsEnum="ReviewRoutingMovesSystemCaretFlag", behaviorOfDefault="NEVER")
Expand Down
57 changes: 57 additions & 0 deletions source/globalCommands.py
Original file line number Diff line number Diff line change
Expand Up @@ -844,6 +844,63 @@ def script_toggleReportSpellingErrorsInBraille(self, gesture: inputCore.InputGes
# Translators: Message presented when turning off reporting spelling errors or grammar in braille.
ui.message(_("Report errors in braille off"))

@script(
# Translators: Input help mode message for command to toggle braille automatic scroll.
description=_("Toggles braille automatic scroll"),
category=SCRCAT_BRAILLE,
)
def script_toggleBrailleAutoScroll(self, gesture: inputCore.InputGesture):
shouldEnableAutoScroll = braille.handler._autoScrollCallLater is None
timeout = 0
if shouldEnableAutoScroll:
# Translators: Message reported when automatic scrolling has been enabled in braille.
ui.message(_("Automatic scrolling enabled"))
if not (
config.conf["braille"]["showMessages"] == ShowMessages.DISABLED
or config.conf["braille"]["mode"] == BrailleMode.SPEECH_OUTPUT.value
):
timeout = config.conf["braille"]["messageTimeout"] * 1000
else:
# Translators: Message reported when automatic scrolling has been disabled in braille.
ui.message(_("Automatic scrolling disabled"))
core.callLater(timeout, braille.handler.autoScroll, shouldEnableAutoScroll)

@script(
# Translators: Input help mode message for command to increase the rate for braille automatic scroll.
description=_("Increases the rate for braille automatic scroll"),
category=SCRCAT_BRAILLE,
)
def script_increaseBrailleAutoScrollRate(self, gesture: inputCore.InputGesture):
maxRate = int(
config.conf.getConfigValidation(
("braille", "autoScrollRate"),
).kwargs["max"],
)
if config.conf["braille"]["autoScrollRate"] + 0.5 <= maxRate:
config.conf["braille"]["autoScrollRate"] += 0.5
else:
config.conf["braille"]["autoScrollRate"] = maxRate
rate = f"{config.conf['braille']['autoScrollRate']:.1f}"
ui.message(rate)
Copy link

Copilot AI Dec 27, 2025

Choose a reason for hiding this comment

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

The UI message for rate changes only displays the numeric value without units or context (e.g., "10.0"). This could be confusing for users who don't know what the number represents. Consider adding a translatable message that includes the unit, such as "10.0 cells per second" to match the terminology used in the documentation.

Copilot uses AI. Check for mistakes.
Copy link
Member

Choose a reason for hiding this comment

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

Agreed. We could also go with "rate {rate}" (like with speech rate)


@script(
# Translators: Input help mode message for command to decrease the rate for braille automatic scroll.
description=_("Decreases the rate for braille automatic scroll"),
category=SCRCAT_BRAILLE,
)
def script_decreaseBrailleAutoScrollRate(self, gesture: inputCore.InputGesture):
minRate = int(
config.conf.getConfigValidation(
("braille", "autoScrollRate"),
).kwargs["min"],
)
if config.conf["braille"]["autoScrollRate"] - 0.5 >= minRate:
config.conf["braille"]["autoScrollRate"] -= 0.5
else:
config.conf["braille"]["autoScrollRate"] = minRate
rate = f"{config.conf['braille']['autoScrollRate']:.1f}"
ui.message(rate)
Copy link

Copilot AI Dec 27, 2025

Choose a reason for hiding this comment

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

The UI message for rate changes only displays the numeric value without units or context (e.g., "10.0"). This could be confusing for users who don't know what the number represents. Consider adding a translatable message that includes the unit, such as "10.0 cells per second" to match the terminology used in the documentation.

Copilot uses AI. Check for mistakes.
Copy link
Member

Choose a reason for hiding this comment

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

See above


@script(
# Translators: Input help mode message for toggle report pages command.
description=_("Toggles on and off the reporting of pages"),
Expand Down
16 changes: 16 additions & 0 deletions source/gui/settingsDialogs.py
Original file line number Diff line number Diff line change
Expand Up @@ -3449,6 +3449,8 @@ class DocumentNavigationPanel(SettingsPanel):
helpId = "DocumentNavigation"

def makeSettings(self, settingsSizer: wx.BoxSizer) -> None:
shouldDebugGui = gui._isDebug()
startTime = time.time() if shouldDebugGui else 0
Comment on lines +3452 to +3453
Copy link

Copilot AI Dec 27, 2025

Choose a reason for hiding this comment

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

These debug timing lines appear to be added unintentionally to the DocumentNavigationPanel. This panel is unrelated to the braille auto-scroll feature. The debug timing code should only be in BrailleSettingsSubPanel where it's actually used (line 5102 and 5474).

Suggested change
shouldDebugGui = gui._isDebug()
startTime = time.time() if shouldDebugGui else 0

Copilot uses AI. Check for mistakes.
Copy link
Member

Choose a reason for hiding this comment

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

Were these lines introduced intentionally?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

No, they are accidental changes. Sorry.

Copy link

Copilot AI Dec 27, 2025

Choose a reason for hiding this comment

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

Variable startTime is not used.

Suggested change
startTime = time.time() if shouldDebugGui else 0

Copilot uses AI. Check for mistakes.
sHelper = guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
# Translators: This is a label for the paragraph navigation style in the document navigation dialog
paragraphStyleLabel = _("&Paragraph style:")
Expand Down Expand Up @@ -5456,6 +5458,18 @@ def makeSettings(self, settingsSizer):
)
self.bindHelpEvent("BrailleSettingsInterruptSpeech", self.brailleInterruptSpeechCombo)

# Translators: The label for a setting in braille settings to change the rate for autoscroll.
autoScrollRateText = _("Auto&matic scroll rate")
self.autoScrollRateSlider: nvdaControls.EnhancedInputSlider = sHelper.addLabeledControl(
autoScrollRateText,
nvdaControls.EnhancedInputSlider,
minValue=5,
maxValue=100,
)
self.autoScrollRateSlider.SetValue(int(config.conf["braille"]["autoScrollRate"] * 5))
self.autoScrollRateSlider.SetPageSize(2)
self.bindHelpEvent("BrailleSettingsAutoScrollRate", self.autoScrollRateSlider)

if gui._isDebug():
log.debug("Finished making settings, now at %.2f seconds from start" % (time.time() - startTime))

Expand Down Expand Up @@ -5486,6 +5500,8 @@ def onSave(self):
]
config.conf["braille"]["showMessages"] = self.showMessagesList.GetSelection()
config.conf["braille"]["messageTimeout"] = self.messageTimeoutEdit.GetValue()
# Values are multiplied by 5, so we can set a smaller difference between consecutive values.
config.conf["braille"]["autoScrollRate"] = self.autoScrollRateSlider.GetValue() / 5
tetherChoice = [x.value for x in TetherTo][self.tetherList.GetSelection()]
if tetherChoice == TetherTo.AUTO.value:
config.conf["braille"]["tetherTo"] = TetherTo.AUTO.value
Expand Down
3 changes: 3 additions & 0 deletions user_docs/en/changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

### New Features

* Added ability to scroll forward braille automatically. (#18573, @nvdaes)
Copy link

Copilot AI Dec 27, 2025

Choose a reason for hiding this comment

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

The phrasing "scroll forward braille automatically" is grammatically awkward. It should be "automatically scroll braille forward" or "scroll braille forward automatically" to be more natural and consistent with standard English phrasing.

Suggested change
* Added ability to scroll forward braille automatically. (#18573, @nvdaes)
* Added the ability to automatically scroll braille forward. (#18573, @nvdaes)

Copilot uses AI. Check for mistakes.
Copy link
Member

Choose a reason for hiding this comment

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

What do you think of this wording?

Suggested change
* Added ability to scroll forward braille automatically. (#18573, @nvdaes)
* Added the ability to automatically scroll the braille display. (#18573, @nvdaes)

* A new command, assigned to `NVDA+x`, has been introduced to repeat the last information spoken by NVDA; pressing it twice shows it in a browseable message. (#625, @CyrilleB79)
* Added an unassigned command to toggle keyboard layout. (#19211, @CyrilleB79)

Expand All @@ -21,6 +22,8 @@

Please refer to [the developer guide](https://download.nvaccess.org/documentation/developerGuide.html#API) for information on NVDA's API deprecation and removal process.

* Added an `autoScroll` method to `braille.handler`. (#18573, @nvdaes)

#### Deprecations

<!-- Beyond this point, Markdown should not be linted, as we don't modify old change log sections. -->
Expand Down
14 changes: 14 additions & 0 deletions user_docs/en/userGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -2398,6 +2398,20 @@ Enabling this option will cause NVDA to speak lines or paragraphs reached using

To toggle this option from anywhere, please assign a custom gesture to "speakOnNavigatingByUnit" in the "Braille" section of the [Input Gestures dialog](#InputGestures).

##### Automatic Scroll Rate {#BrailleAutoScrollRate}
Copy link

Copilot AI Dec 27, 2025

Choose a reason for hiding this comment

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

The help ID in the documentation should match the help event binding in the code. The code binds to "BrailleSettingsAutoScrollRate" (line 5471 in settingsDialogs.py), but the documentation anchor uses "BrailleAutoScrollRate". Based on the pattern used for other braille settings in the user guide (like BrailleSettingsWordWrap, BrailleSettingsInterruptSpeech), this should be "BrailleSettingsAutoScrollRate".

Suggested change
##### Automatic Scroll Rate {#BrailleAutoScrollRate}
##### Automatic Scroll Rate {#BrailleSettingsAutoScrollRate}

Copilot uses AI. Check for mistakes.

This slider controls the rate of automatic braille display scrolling, measured in cells per second.
The minimum value (0 %) will be 1 cell per second, and the maximum value (100 %), 20 cells per second.
For example, with the default value of 10 cells/sec, if a braille display with 40 cells is used, the number of seconds between automatic scrolls will be 4.
If the display had 20 cells, each line of braille would be shown for 2 seconds.

While the automatic scroll option is enabled, you can still use the scroll back command to read previous contents again, and scroll forward, for example, to skip a blank line, or if the line been read is too short.
Copy link

Copilot AI Dec 27, 2025

Choose a reason for hiding this comment

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

Grammatical error: "if the line been read" should be "if the line being read" (if referring to the current reading action) or "if the line has been read" (if referring to a completed action). Based on the context, "if the line being read" seems more appropriate.

Suggested change
While the automatic scroll option is enabled, you can still use the scroll back command to read previous contents again, and scroll forward, for example, to skip a blank line, or if the line been read is too short.
While the automatic scroll option is enabled, you can still use the scroll back command to read previous contents again, and scroll forward, for example, to skip a blank line, or if the line being read is too short.

Copilot uses AI. Check for mistakes.

Automatic scrolling will be disabled if a routing key is pressed, if a message is presented in braille, if a new object is displayed, when entering a secure screen, when the session is locked, or when the end of the window is reached.

Commands can be assigned to toggle the automatic scroll option, and to increase or decrease the scroll rate, from the "Braille" section of the [Input Gestures dialog](#InputGestures).
When using commands to decrease or increase the scroll rate, instead of the slider, NVDA will report the number of cells for second, not the percentage shown in the slider.
Copy link

Copilot AI Dec 27, 2025

Choose a reason for hiding this comment

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

Grammatical error: "cells for second" should be "cells per second" to match the terminology used elsewhere in the documentation (e.g., line 2403).

Suggested change
When using commands to decrease or increase the scroll rate, instead of the slider, NVDA will report the number of cells for second, not the percentage shown in the slider.
When using commands to decrease or increase the scroll rate, instead of the slider, NVDA will report the number of cells per second, not the percentage shown in the slider.

Copilot uses AI. Check for mistakes.

##### Avoid splitting words when possible {#BrailleSettingsWordWrap}

If this is enabled, a word which is too large to fit at the end of the braille display will not be split.
Expand Down
Loading