Add Remote Braille IPC to the host and both SDKs

remote.braille requests and events carry a typed op under a
braille-stream lease: the controller's width and gestures for a
controlled reader, rendered cells back to its child, and cells, local
geometry and display gestures for a controller. Direction is validated
per role; a full mailbox revokes the lease. No display owner is
attached yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Chase CichorzandClaude Opus 5.5 committed 2026-11-06 16:06:38 -05:00
1 parent 477d860fb8
commit 2651b5e9bd
10 files changed
+476 -3

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
# Remote Braille IPC
Protocol 1.1 carries Remote Braille through one child-to-host method,
`remote.braille`, and one host-to-child event kind of the same name. Both need
the current process session's live lease with the separately approved
`braille-stream` grant; requests share the operation sequence. Every message
carries one `braille` object whose `op` selects its form:
| `op` | Direction and role | Fields |
| --- | --- | --- |
| `size` | controlled child to host | `width` 0–4,096: the controller's display; 0 stops export |
| `gesture` | controlled child to host; host to controller child | `gesture` `pan-left`, `pan-right` or `route`, with `index` for route |
| `cells` | host to controlled child; controller child to host | `cells`: 1–4,096 final dot values 0–255, never text |
| `geometry` | controller child to host (no width); host reply event with `width` | 0 means no local display |
The request reply acknowledges admission into a 16-item reader mailbox; a full
mailbox revokes the lease. Without an attached reader owner the method returns
owner-unavailable. No AT-SPI identity, object path, routing map or native
handle crosses this boundary: routes are cell indexes into the latest exported
frame only. `Session.EnableRemoteBraille`, `PublishRemoteBraille`, the Go
`RemoteBraille` types and validators and the Python `valid_remote_braille` and
`valid_remote_braille_request` validators implement the contract. Go/Python
SDK-process tests cover each direction, role denial, invalid values,
saturation and revocation.