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

/// A Fuchsia key represents a control that can be pressed or released such as a key or
/// a button on a keyboard or another input device.
///
/// The ordinal index for enum elements is derived from the USB HID Usage Tables at the
/// time of definition. It is a 32 bit unsigned integer representing the USB HID Usage
/// where the low 16 bits are the USB HID Usage ID and the high 16 bits are the
/// USB HID Usage Page.
///
/// The descriptions for each value in the enum assume a US English keyboard layout.
/// Actual behavior varies by layout.
type Key = flexible enum : uint32 {
    /// Used when the value of Key is not known.
    @unknown
    UNKNOWN = 0;

    /// Keyboard a and A
    A = 0x00070004;

    /// Keyboard b and B
    B = 0x00070005;

    /// Keyboard c and C
    C = 0x00070006;

    /// Keyboard d and D
    D = 0x00070007;

    /// Keyboard e and E
    E = 0x00070008;

    /// Keyboard f and F
    F = 0x00070009;

    /// Keyboard g and G
    G = 0x0007000a;

    /// Keyboard h and H
    H = 0x0007000b;

    /// Keyboard i and I
    I = 0x0007000c;

    /// Keyboard j and J
    J = 0x0007000d;

    /// Keyboard k and K
    K = 0x0007000e;

    /// Keyboard l and L
    L = 0x0007000f;

    /// Keyboard m and M
    M = 0x00070010;

    /// Keyboard n and N
    N = 0x00070011;

    /// Keyboard o and O
    O = 0x00070012;

    /// Keyboard p and P
    P = 0x00070013;

    /// Keyboard q and Q
    Q = 0x00070014;

    /// Keyboard r and R
    R = 0x00070015;

    /// Keyboard s and S
    S = 0x00070016;

    /// Keyboard t and T
    T = 0x00070017;

    /// Keyboard u and U
    U = 0x00070018;

    /// Keyboard v and V
    V = 0x00070019;

    /// Keyboard w and W
    W = 0x0007001a;

    /// Keyboard x and X
    X = 0x0007001b;

    /// Keyboard y and Y
    Y = 0x0007001c;

    /// Keyboard z and Z
    Z = 0x0007001d;

    /// Keyboard 1 and !
    KEY_1 = 0x0007001e;

    /// Keyboard 2 and @
    KEY_2 = 0x0007001f;

    /// Keyboard 3 and #
    KEY_3 = 0x00070020;

    /// Keyboard 4 and $
    KEY_4 = 0x00070021;

    /// Keyboard 5 and %
    KEY_5 = 0x00070022;

    /// Keyboard 6 and ^
    KEY_6 = 0x00070023;

    /// Keyboard 7 and &
    KEY_7 = 0x00070024;

    /// Keyboard 8 and *
    KEY_8 = 0x00070025;

    /// Keyboard 9 and (
    KEY_9 = 0x00070026;

    /// Keyboard 0 and )
    KEY_0 = 0x00070027;

    /// Keyboard Enter (Return)
    ENTER = 0x00070028;

    /// Keyboard Escape
    ESCAPE = 0x00070029;

    /// Keyboard Backspace (Backward Delete)
    BACKSPACE = 0x0007002a;

    /// Keyboard Tab
    TAB = 0x0007002b;

    /// Keyboard Spacebar
    SPACE = 0x0007002c;

    /// Keyboard - and (underscore)
    MINUS = 0x0007002d;

    /// Keyboard = and +
    EQUALS = 0x0007002e;

    /// Keyboard [ and {
    LEFT_BRACE = 0x0007002f;

    /// Keyboard ] and }
    RIGHT_BRACE = 0x00070030;

    /// Keyboard \ and |
    BACKSLASH = 0x00070031;

    /// Keyboard Non-US # and ~
    NON_US_HASH = 0x00070032;

    /// Keyboard ; and :
    SEMICOLON = 0x00070033;

    /// Keyboard ' and "
    APOSTROPHE = 0x00070034;

    /// Keyboard Grave Accent and Tilde
    GRAVE_ACCENT = 0x00070035;

    /// Keyboard , and <
    COMMA = 0x00070036;

    /// Keyboard . and >
    DOT = 0x00070037;

    /// Keyboard / and ?
    SLASH = 0x00070038;

    /// Keyboard Caps Lock
    CAPS_LOCK = 0x00070039;

    /// Keyboard F1
    F1 = 0x0007003a;

    /// Keyboard F2
    F2 = 0x0007003b;

    /// Keyboard F3
    F3 = 0x0007003c;

    /// Keyboard F4
    F4 = 0x0007003d;

    /// Keyboard F5
    F5 = 0x0007003e;

    /// Keyboard F6
    F6 = 0x0007003f;

    /// Keyboard F7
    F7 = 0x00070040;

    /// Keyboard F8
    F8 = 0x00070041;

    /// Keyboard F9
    F9 = 0x00070042;

    /// Keyboard F10
    F10 = 0x00070043;

    /// Keyboard F11
    F11 = 0x00070044;

    /// Keyboard F12
    F12 = 0x00070045;

    /// Keyboard Print Screen
    PRINT_SCREEN = 0x00070046;

    /// Keyboard Scroll Lock
    SCROLL_LOCK = 0x00070047;

    /// Keyboard Pause
    PAUSE = 0x00070048;

    /// Keyboard Insert
    INSERT = 0x00070049;

    /// Keyboard Home
    HOME = 0x0007004a;

    /// Keyboard Page Up
    PAGE_UP = 0x0007004b;

    /// Keyboard Forward Delete
    DELETE = 0x0007004c;

    /// Keyboard End
    END = 0x0007004d;

    /// Keyboard Page Down
    PAGE_DOWN = 0x0007004e;

    /// Keyboard Right Arrow
    RIGHT = 0x0007004f;

    /// Keyboard Left Arrow
    LEFT = 0x00070050;

    /// Keyboard Down Arrow
    DOWN = 0x00070051;

    /// Keyboard Up Arrow
    UP = 0x00070052;

    /// Keypad Num Lock and Clear
    NUM_LOCK = 0x00070053;

    /// Keypad /
    KEYPAD_SLASH = 0x00070054;

    /// Keypad *
    KEYPAD_ASTERISK = 0x00070055;

    /// Keypad -
    KEYPAD_MINUS = 0x00070056;

    /// Keypad +
    KEYPAD_PLUS = 0x00070057;

    /// Keypad ENTER
    KEYPAD_ENTER = 0x00070058;

    /// Keypad 1 and End
    KEYPAD_1 = 0x00070059;

    /// Keypad 2 and Down Arrow
    KEYPAD_2 = 0x0007005a;

    /// Keypad 3 and Page Down
    KEYPAD_3 = 0x0007005b;

    /// Keypad 4 and Left Arrow
    KEYPAD_4 = 0x0007005c;

    /// Keypad 5
    KEYPAD_5 = 0x0007005d;

    /// Keypad 6 and Right Arrow
    KEYPAD_6 = 0x0007005e;

    /// Keypad 7 and Home
    KEYPAD_7 = 0x0007005f;

    /// Keypad 8 and Up Arrow
    KEYPAD_8 = 0x00070060;

    /// Keypad 9 and Page Up
    KEYPAD_9 = 0x00070061;

    /// Keypad 0 and Insert
    KEYPAD_0 = 0x00070062;

    /// Keypad . and Delete
    KEYPAD_DOT = 0x00070063;

    /// Keyboard Non-US \ and |
    NON_US_BACKSLASH = 0x00070064;

    /// Keypad =
    KEYPAD_EQUALS = 0x00070067;

    /// Keyboard Menu
    MENU = 0x00070076;

    /// Keyboard Left Control
    LEFT_CTRL = 0x000700e0;

    /// Keyboard Left Shift
    LEFT_SHIFT = 0x000700e1;

    /// Keyboard Left Alt
    LEFT_ALT = 0x000700e2;

    /// Keyboard Left GUI (Meta, Windows)
    LEFT_META = 0x000700e3;

    /// Keyboard Right Control
    RIGHT_CTRL = 0x000700e4;

    /// Keyboard Right Shift
    RIGHT_SHIFT = 0x000700e5;

    /// Keyboard Right Alt
    RIGHT_ALT = 0x000700e6;

    /// Keyboard Right GUI (Meta, Windows)
    RIGHT_META = 0x000700e7;

    /// Mute
    MEDIA_MUTE = 0x000c00e2;

    /// Volume Increment
    MEDIA_VOLUME_INCREMENT = 0x000c00e9;

    /// Volume Decrement
    MEDIA_VOLUME_DECREMENT = 0x000c00ea;
};
