Skip to content

brailliantB: dot8 (Enter) not mapped to kb:enter despite user guide documentation; c1-c6 single keys unmapped on Brailliant BI 40X #20366

Description

@fla-rion

Summary

The brailliantB braille display driver has two related issues that affect the HumanWare Brailliant BI 40X (and other 8-dot models):

  1. 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.
  2. Missing: dot7 (the physical Backspace key) has no kb:backspace binding.
  3. Missing: The six command keys (c1–c6) have no individual gesture bindings, despite HumanWare's own documentation specifying their intended functions.

Steps to reproduce

  1. Connect a HumanWare Brailliant BI 40X (or any 8-dot Brailliant model) to NVDA.
  2. Press the Enter key (right little finger on Perkins keyboard = dot8).
  3. Nothing happens in NVDA — no Enter key is sent to the focused application.
  4. Press any individual command key (c1–c6 alone).
  5. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    blocked/needs-infoThe issue can not be progressed until more information is provided.needs-triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions