AbstractStaticisReports whether a device describes itself as a braille display.
The device's top-level collections
StaticlayoutReads where a braille display keeps its cells and its keys.
The rows come out top to bottom: in the order the descriptor declares its Braille Row collections, which is the order a screen reader fills them. WebHID lists a report's items under the top-level collection in the order they are declared, which gives each cell field its place in its report, but it does not keep the reports themselves in order; the row collections are what say which field is which row. Cells declared outside any row collection follow, by report ID.
The device's top-level collections
The layout, or null when the device has no braille cells
StaticoutputBuilds the output reports that put a set of cells on the display.
Where the display keeps its cells
Every cell on the display, row after row, bit 0 being dot 1
The data of each report, without its ID, by report ID
StaticoutputFinds a run of single-bit output fields declared under one usage.
The standard has cells and nothing finer, so a display that offers more -- a Monarch can be written pin by pin -- declares it under a usage of its own.
The device's top-level collections
The extended usage the run is declared under
Where the run is, or null when the device has none
StaticbitBuilds the output report that sets a run of single-bit fields.
Where the run is
The values, eight to a byte, the first in the lowest bit
The report's data, without its ID
StaticpressedThe keys an input report says are down.
Where the display keeps its keys
The report's ID
The report's bytes, without the ID
Every key held down
Reads the layout of a braille display that speaks the USB HID braille standard, and writes and reads its reports.
The standard leaves the report layout to the device: which report each row of cells goes in, where in it, and how the keys are packed. A screen reader asks the operating system, which parses the report descriptor; a page asks WebHID, which hands over the same parse as collections of items. Everything here is read from those, so a display that numbers its reports differently, or puts its rows in one report or in several, is driven the same way.