Summary
The brailliantB braille display driver has two related issues that affect the HumanWare Brailliant BI 40X (and other 8-dot models):
- Bug:
dot8 (the physical Enter key) is not mapped to kb:enter, even though the NVDA 2026.1.1 user guide explicitly documents this binding.
- Missing:
dot7 (the physical Backspace key) has no kb:backspace binding.
- Missing: The six command keys (
c1–c6) have no individual gesture bindings, despite HumanWare's own documentation specifying their intended functions.
Steps to reproduce
- Connect a HumanWare Brailliant BI 40X (or any 8-dot Brailliant model) to NVDA.
- Press the Enter key (right little finger on Perkins keyboard =
dot8).
- Nothing happens in NVDA — no Enter key is sent to the focused application.
- Press any individual command key (
c1–c6 alone).
- Nothing happens — no NVDA action is triggered.
Expected vs. actual behavior
| Key pressed |
Expected (per user guide / HumanWare docs) |
Actual |
dot8 (Enter) |
kb:enter — documented in NVDA 2026.1.1 user guide, section "Key assignments for All models" |
No action (only stickAction is mapped to kb:enter, which is the BI 14 joystick only) |
dot7 (Backspace) |
kb:backspace |
No action |
c1 alone |
braille_previousLine (HumanWare: "Previous item, C1") |
No action |
c2 alone |
braille_scrollBack (HumanWare: "Pan left, C2") |
No action |
c3 alone |
braille_nextLine (HumanWare: "Next item, C3") |
No action |
c5 alone |
braille_scrollForward (HumanWare: "Pan right, C5") |
No action |
Root cause
In source/brailleDisplayDrivers/brailliantB.py, the gestureMap has:
"kb:enter": ("br(brailliantB):stickAction"),
The stickAction gesture is the BI 14 joystick click — the BI 14 is the only model with a joystick. All other models (BI 32, BI 40, B 80, BI 40X, BI 20X) have a physical Enter key whose HID key ID maps to dot8 in KEY_NAMES. This gesture was never added to the map.
Evidence from the NVDA user guide (2026.1.1, section HumanWareBrailliantKeyAssignmentForAllModels):
<td>Eingabetaste</td>
<td>Punkt8</td>
The user guide already documents dot8 → Enter for all models, but the code does not implement it.
Physical key layout of the Brailliant BI 40X (from HumanWare User Guide v2.6)
"The keys under your left hand represent Dots 1, 2, 3, and Backspace (= dot7), where Dot 1 is located under your index finger and Backspace under your little finger. The keys under your right hand represent Dots 4, 5, 6, and Enter (= dot8), where Dot 4 is located under your index finger and Enter under your little finger."
"On the left, starting from the back, are C1, C2 and C3, which is the one nearest you. On the right side, you will find C4, C5 and C6 nearest you."
"Pan left and right: Left or Right thumb key or C2 (pan left) and C5 (pan right)"
"Previous item: Previous thumb key, C1 or Space + Dot 1"
"Next item: Next thumb key, C3 or Space + Dot 4"
Environment
- NVDA version: 2026.1.1
- Braille display: HumanWare Brailliant BI 40X, firmware 2.6.0 build 5120
- Driver:
brailliantB
Proposed fix
See the accompanying pull request. Summary of changes to gestureMap:
# BUGFIX: dot8 = physical Enter key on 8-dot models (BI 40X, BI 32, BI 40, B80, BI 20X)
"kb:enter": ("br(brailliantB):dot8", "br(brailliantB):stickAction"),
# NEW: dot7 = physical Backspace key on 8-dot models
"kb:backspace": ("br(brailliantB):dot7",),
# Individual c-key bindings per HumanWare BI X Series documentation
"braille_previousLine": ("br(brailliantB):up", "br(brailliantB):c1"),
"braille_scrollBack": ("br(brailliantB):left", "br(brailliantB):c2"),
"braille_nextLine": ("br(brailliantB):down", "br(brailliantB):c3"),
"braille_toggleTether": ("br(brailliantB):up+down", "br(brailliantB):c4"),
"braille_scrollForward":("br(brailliantB):right", "br(brailliantB):c5"),
"showGui": (..., "br(brailliantB):c6"),
The dot8/dot7 fix applies to all 8-dot Brailliant models. The stickAction binding for BI 14 is preserved. The c-key bindings are additive and do not conflict with existing multi-key combinations.
Summary
The
brailliantBbraille display driver has two related issues that affect the HumanWare Brailliant BI 40X (and other 8-dot models):dot8(the physical Enter key) is not mapped tokb:enter, even though the NVDA 2026.1.1 user guide explicitly documents this binding.dot7(the physical Backspace key) has nokb:backspacebinding.c1–c6) have no individual gesture bindings, despite HumanWare's own documentation specifying their intended functions.Steps to reproduce
dot8).c1–c6alone).Expected vs. actual behavior
dot8(Enter)kb:enter— documented in NVDA 2026.1.1 user guide, section "Key assignments for All models"stickActionis mapped tokb:enter, which is the BI 14 joystick only)dot7(Backspace)kb:backspacec1alonebraille_previousLine(HumanWare: "Previous item, C1")c2alonebraille_scrollBack(HumanWare: "Pan left, C2")c3alonebraille_nextLine(HumanWare: "Next item, C3")c5alonebraille_scrollForward(HumanWare: "Pan right, C5")Root cause
In
source/brailleDisplayDrivers/brailliantB.py, thegestureMaphas:The
stickActiongesture is the BI 14 joystick click — the BI 14 is the only model with a joystick. All other models (BI 32, BI 40, B 80, BI 40X, BI 20X) have a physical Enter key whose HID key ID maps todot8inKEY_NAMES. This gesture was never added to the map.Evidence from the NVDA user guide (2026.1.1, section
HumanWareBrailliantKeyAssignmentForAllModels):The user guide already documents
dot8 → Enterfor all models, but the code does not implement it.Physical key layout of the Brailliant BI 40X (from HumanWare User Guide v2.6)
Environment
brailliantBProposed fix
See the accompanying pull request. Summary of changes to
gestureMap:The
dot8/dot7fix applies to all 8-dot Brailliant models. ThestickActionbinding for BI 14 is preserved. The c-key bindings are additive and do not conflict with existing multi-key combinations.