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

/// 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:
/// - USB HID usage codes for usage page 0x0008 (LED)
type LedType = flexible enum : uint32 {
    // Keyboard LEDs.
    // Reserved range: 0x00000001 - 0x000001ff

    /// LED to indicate a Keyboard's number lock is enabled.
    /// Corresponds to USB HID page 0x0008 usage 0x0001
    NUM_LOCK = 0x01;

    /// LED to indicate a Keyboard's capital lock is enabled.
    /// Corresponds to USB HID page 0x0008 usage 0x0002
    CAPS_LOCK = 0x02;
    /// LED to indicate a Keyboard's scroll lock is enabled.
    /// Corresponds to USB HID page 0x0008 usage 0x0003
    SCROLL_LOCK = 0x03;

    /// LED to indicate a Keyboard's composition mode is enabled.
    /// Corresponds to USB HID page 0x0008 usage 0x0004
    COMPOSE = 0x04;

    /// LED to indicate a Keyboard's Kana mode is enabled.
    /// Corresponds to USB HID page 0x0008 usage 0x0005
    KANA = 0x05;
};
