Macros

Pattern that matches an unknown ConsumerControlButton member.
Pattern that matches an unknown DeviceType member.
Pattern that matches an unknown LedType member.
Pattern that matches an unknown SensorReportingState member.
Pattern that matches an unknown SensorType member.
Pattern that matches an unknown TouchConfigurationInputMode member.
Pattern that matches an unknown TouchType member.
Pattern that matches an unknown UnitType member.
Pattern that matches an unknown VendorGoogleProductId member.
Pattern that matches an unknown VendorId member.

Structs

An Axis is defined as a range and a unit.
A Fuchsia ConsumerControl represents a device thats purpose is to change values on the host. Typical controls are Volume, Power, Media Playback. (Consider a TV remote to be a typical ConsumerControl).
Describes the format of the input report that will be sent from the ConsumerControl device to the host.
A single report created by a ConsumerControl device.
ContactInputDescriptor describes the fields associated with a touch on a touch device.
ContactInputReport describes one touch on a touch device.
DeviceDescriptor describes a physical input device. Some physical devices may send multiple types of reports (E.g: a physical touchscreen can send touch and stylus reports, so it will have both a TouchDescriptor and a StylusDescriptor).
DeviceInfo provides more information about the device and lets a client distinguish between devices (e.g between two touchscreens that come from different vendors). If the device is a HID device, then the id information will come from the device itself. Other, non-HID devices may assign the ids in the driver, so it will be the driver author’s responsibility to assign sensible ids.
A single report containing the feature information for an input device. Feature reports obtained from the device show the current state of the device. Sending a feature report to the device sets the device in that state.
A Stream of incoming requests for InputDevice
InputReport is a single report that is created by an input device.
A Stream of incoming requests for InputReportsReader
The capabilities of a keyboard device.
Describes the format of the input report that will be sent from the keyboard to the device.
A single report created by a keyboard device.
Describes the format of the output report that can be sent to the keyboard..
A single report containing output information for a keyboard.
The capabilities of a mouse device.
Describes the format of the input report that will be sent from the mouse to the device.
MouseReport gives the relative movement of the mouse and currently pressed buttons. Relative means the movement seen between the previous report and this report. The client is responsible for tracking this and converting it to absolute movement.
Describes the output reports that a physical input device will accept. Output information typically represents device output to the user (E.g: LEDs, tactile feedback, etc).
A single report containing output information for an input device. Output information typically represents device output to the user (E.g: LEDs, tactile feedback, etc).
Describe a Range of values.
Selective Reporting Feature Report indicating which types of input are reported.
A SensorAxis is a normal Axis with an additional SensorType to describe what the axis is measuring.
The capabilities of a sensor device.
Describes the format of the sensor’s feature report. Feature reports can be requested from the sensor, or sent to the sensor.
A SensorFeatureReport describes the features of a given sensor. If a FeatureReport is sent to the Input Device it sets the configuration of the device. If a FeatureReport is requested from the Input Device it shows the device’s current configuration.
Describes the format of the input report that will be sent from the sensor to the device.
SensorReport gives the values measured by a sensor at a given point in time.
The capabilities of a touch device.
Describes the format of the touchpad configuration’s feature report. Feature reports can be requested from the touchpad, or sent to the touchpad.
A TouchFeatureReport describes the features of a given touch device. If a FeatureReport is sent to the Input Device it sets the configuration of the device. If a FeatureReport is requested from the Input Device it shows the device’s current configuration.
Describes the format of the input report that will be sent from the keyboard to the device.
TouchInputReport describes the current contacts recorded by the touchscreen.
Describes a given unit by giving the unit and the unit’s exponent. E.g: Nanometers would have type METERS and exponent -9.

Enums

These ControlButtons represent on/off buttons whose purpose is to change the host’s configuration.
The InputReport field to be populated by InputDevice.GetInputReport.
An InputDevice driver represents a single physical input device. The InputDevice maintains an internal FIFO of MAX_DEVICE_REPORT_COUNT reports for each client that connects. Reports are removed from the FIFO once they are read by the client. If the FIFO is full, it will drop the oldest report to make room for an incoming report.
Each InputReportsReader has its own FIFO of InputReports that it maintains. When ReadInputReports is called it drains the InputReports FIFO. If too many InputReports are created before the FIFO is drained, then the oldest InputReport will be silently discarded.
An LedType represents an LED on a device that can be turned on or off. When applicable, the definition of each LED is derived from one of the following sources albeit with a Fuchsia-specific numeric value:
SensorReportingState determines when a sensor will send reports.
Each sensor value has a corresponding SensorType, which explains what the value is measuring in the world.
Input mode indicating which top-level collection should be used for input reporting. These values must correspond to the input modes defined in 16.7 of the HID Usage Tables for Universal Serial Bus (USB) Spec (https://usb.org/sites/default/files/hut1_22.pdf).
The device type from which the touch originated.
This provides an easy, standardized way to specify units. New units can be added as needed. Each UnitType should be named after a specific unit that should be fully distinguished by the name (E.g: Use METERS instead of DISTANCE). More complicated units that need to be differentiated should begin with SI_ (for Internation System of Units) or ENGLISH_ (for English System of Units).
Below are ProductIds which represents which product this Input device represents. If the Input device is a HID device, the ProductId maps directly to the HID ProductId. If the Input device is not a HID device, then the ProductId will be greater than 0xFFFF, which is the max HID ProductId.
The VendorId represents the vendor that created this Input device. If the Input device is a HID device, the VendorId maps directly to the HID VendorId. If the Input device is not a HID device, then the VendorId will be greater than 0xFFFF, which is the max HID VendorId.

Constants

Hardcoded max sizes for ConsumerControl vectors. These sizes should be increased if we ever see a device with more objects than can be represented.
Hardcoded max sizes for keyboard vectors. These sizes should be increased if we ever see keyboards with more objects than can be represented.
A hardcoded number of max reports. Because report ID is only 8 bits, only 255 different reports are allowed at a time.
A hardcoded number of max mouse buttons. This should be increased in the future if we ever see mice with more buttons.
A hardcoded number of max sensor values. This should be increased in the future if we ever see a sensor with more values.
A hardcoded number of max contacts per report. This should be increased in the future if we see devices with more than the max amount.

Traits

Type Definitions