| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library fuchsia.input.report; |
| |
| /// 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. |
| type DeviceInfo = struct { |
| vendor_id uint32; |
| product_id uint32; |
| version uint32; |
| }; |
| |
| /// `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). |
| type DeviceDescriptor = table { |
| /// `device_info` should always be present to help distinguish between physical devices. |
| 1: device_info DeviceInfo; |
| |
| /// When `mouse` is present the device has a mouse. |
| 2: mouse MouseDescriptor; |
| |
| /// When `sensor` is present the device has a sensor. |
| 3: sensor SensorDescriptor; |
| |
| /// When `touch` is present the device has a touch device. |
| /// (E.g: Touchscreen, touchpad). |
| 4: touch TouchDescriptor; |
| |
| /// When `keyboard` is present the device has a keyboard. |
| 5: keyboard KeyboardDescriptor; |
| |
| /// When `consumer_control` is present the device has a ConsumerControl |
| /// device. |
| 6: consumer_control ConsumerControlDescriptor; |
| }; |
| |
| /// 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). |
| type OutputDescriptor = table { |
| 1: keyboard KeyboardOutputDescriptor; |
| }; |