Repository: nvaccess/nvda

Issue:
when displaying repeated underscores in braille, only one is shown
NVDA displays only one underscore in braille when it should show multiple ones. I've not found this behavior with other symbols.

### Steps to reproduce:
With a display connected (I'm using an Orbit 20), type

\_\_init\_\_()

or anything else where two or more underscores are placed side by side. The app does not seem to matter.

### Actual behavior:
Braille shows only one underscore, but speech says the correct number.

### Expected behavior:
Braille should show as many underscores as there are, as it does for other symbols.

### System configuration
#### NVDA installed/portable/running from source:
installed

#### NVDA version:
2019.1.1

#### Windows version:
Windows 10, 1809

#### Name and version of other software in use when reproducing the issue:
Notepad Plus Plus, Firefox, Windows "run" dialog, connected SSH session, etc. Software doesn't seem to matter.

#### Other information about your system:
Using an Orbit Reader 20 as the connected display.

### Other questions
#### Does the issue still occur after restarting your PC?
Yes.

#### Have you tried any other versions of NVDA? If so, please report their behaviors.
2019.1. I didn't notice this before that, but I could have simply missed it.



Discussion:
Coul dyou please answer one essential question, namely what braille table you're using? Does the issue persist if you choose another output braille table?
Right, sorry. I'm using UEB grade 2 as my output table. You have a point--in English grade 2 and in Spanish computer braille, the problem does not seem to happen. It appears to be something specific to UEB output.
In that case, I'd file a bug against liblouis in Github.

This issue will be closed by updating Liblouis to 3.11.0. See liblouis/liblouis#792

Resolving patch:
diff --git a/source/brailleTables.py b/source/brailleTables.py
--- a/source/brailleTables.py
+++ b/source/brailleTables.py
@@ -160,6 +160,9 @@ def listTables():
 addTable("en-GB-g2.ctb", _("English (U.K.) grade 2"), contracted=True)
 # Translators: The name of a braille table displayed in the
 # braille settings dialog.
+addTable("en-nabcc.utb", _("English North American Braille Computer Code"))
+# Translators: The name of a braille table displayed in the
+# braille settings dialog.
 addTable("en-ueb-g1.ctb", _("Unified English Braille Code grade 1"))
 # Translators: The name of a braille table displayed in the
 # braille settings dialog.
@@ -301,10 +304,13 @@ def listTables():
 addTable("mr-in-g1.utb", _("Marathi grade 1"))
 # Translators: The name of a braille table displayed in the
 # braille settings dialog.
-addTable("nl-BE-g0.utb", _("Dutch (Belgium)"))
+addTable("nl-BE-g0.utb", _("Dutch (Belgium) 6 dot"))
+# Translators: The name of a braille table displayed in the
+# braille settings dialog.
+addTable("nl-NL-g0.utb", _("Dutch (Netherlands) 6 dot"))
 # Translators: The name of a braille table displayed in the
 # braille settings dialog.
-addTable("nl-NL-g0.utb", _("Dutch (Netherlands)"))
+addTable("nl-comp8.utb", _("Dutch 8 dot"))
 # Translators: The name of a braille table displayed in the
 # braille settings dialog.
 addTable("no-no-8dot.utb", _("Norwegian 8 dot computer braille"))


Test patch: