// Copyright 2017 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.ui.input;

// Service to receive input events.
//
// Input devices can describe their capabilities using |DeviceDescriptor|
// and register themselves with the |InputDeviceRegistry|.
[Discoverable]
protocol InputDeviceRegistry {
    // Register a device with the capabilities described by |DeviceDescriptor|
    RegisterDevice(DeviceDescriptor descriptor, request<InputDevice> input_device);
};

protocol InputDevice {
    // Dispatch an |InputReport| from the device |token|
    DispatchReport(InputReport report);
};
