// 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;

using zx;

/// `InputReport` is a single report that is created by an input device.
table InputReport {
    /// `event_time` is in nanoseconds when the event was recorded.
    1: zx.time event_time;
    /// `mouse` is the report generated if the device contains a mouse.
    2: MouseInputReport mouse;
    /// `sensor` is the report generated if the device contains a sensor.
    4: SensorInputReport sensor;
    /// `touch` is the report generated if the device contains a touch device.
    5: TouchInputReport touch;
    /// `keyboard` is the report generated if the device contains a keyboard.
    6: KeyboardInputReport keyboard;
    /// `consumer_controls` is the report generated if the device contains a
    /// ConsumerControl device.
    7: ConsumerControlInputReport consumer_control;

    /// Unique ID to connect trace async begin/end events.
    3: uint64 trace_id;
};

/// 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).
table OutputReport {
    1: KeyboardOutputReport keyboard;
};
