nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.11k stars 637 forks source link

Add Braille device button emulation to Braille viewer #13917

Open seanbudd opened 2 years ago

seanbudd commented 2 years ago

Is your feature request related to a problem? Please describe.

Without a Braille device, Braille gestures cannot be tested using NVDA. This is because of how inputCore.registerGestureSource works.

Describe the solution you'd like

Braille gestures are configured on a braille device level, and as such, emulating input gestures is not possible with keyboard commands. To test braille consistently, it would be helpful to have a braille display driver to emulate braille keys using the Braille viewer.

Describe alternatives you've considered

Adding the ability to map Braille input gestures to keyboard commands.

Additional context

seanbudd commented 2 years ago

script_braille_scrollForward was emulated on #13131 using the following patch, which triggers the script after a delay when the braille viewer is opened:

diff --git a/source/brailleViewer/brailleViewerGui.py b/source/brailleViewer/brailleViewerGui.py
index 33f3ead0a..a8bf947dc 100644
--- a/source/brailleViewer/brailleViewerGui.py
+++ b/source/brailleViewer/brailleViewerGui.py
@@ -451,6 +451,9 @@ class BrailleViewerFrame(
            self._newCellCount = currentCellCount

        self._triggerGuiUpdate()
+       import core
+       from globalCommands import commands
+       core.callLater(2000, commands.script_braille_scrollForward, "")

    def _triggerGuiUpdate(self):
        continuousTimerRunning = self._timer.IsRunning() and not self._timer.IsOneShot()