blob: 12a6a243ca12cb90163e5bfde5c4dbd69bb72fe9 [file] [log] [blame]
// 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
///
/// Silences played sounds.
@available(added=9)
MUTE = 0x0007007f;
/// Turn volume down
@available(added=9)
VOLUME_DOWN = 0x00070081;
/// Turn volume up
@available(added=9)
VOLUME_UP = 0x00070080;
// Consumer usage page (0x000c)
//
// E.g. Action keys appearing on Chromebook keyboards. Although these
// appear on Chromebook keyboards, their codes come from the "consumer"
// usage page in HID.
/// Play media, or pause media if playing
@available(added=9)
PLAY_PAUSE = 0x000c00cd;
/// Media mute
///
/// Silences media playback. Other sounds may still be heard, e.g. system
/// notification sounds.
MEDIA_MUTE = 0x000c00e2;
/// Volume Increment
MEDIA_VOLUME_INCREMENT = 0x000c00e9;
/// Volume Decrement
MEDIA_VOLUME_DECREMENT = 0x000c00ea;
/// Back
///
/// Go back to the previous page in the browser.
/// This, and other action keys are [defined in Chromium][1].
///
/// [1]: https://source.chromium.org/chromium/chromium/src/+/main:ui/events/keycodes/dom/dom_code_data.inc
@available(added=9)
AC_BACK = 0x000c0224;
/// Refresh
///
/// Refresh the current page in the browser.
@available(added=9)
AC_REFRESH = 0x000c0227;
/// Full screen view
///
/// Zooms the focused window to full screen.
@available(added=9)
AC_FULL_SCREEN_VIEW = 0x000c0230;
/// Select task/application
///
/// Shows the task selection window
@available(added=9)
AC_SELECT_TASK_APPLICATION = 0x000c01a2;
/// Reduce screen brightness
@available(added=9)
BRIGHTNESS_DOWN = 0x000c006f;
/// Increase screen brightness
@available(added=9)
BRIGHTNESS_UP = 0x000c0070;
// Self-defined (0xffff)
/// NOTE: the following are self-defined and do not have to follow the HID usage pages.
/// We use HID-Vendor-Specific page 0xFFFF to represent Fuchsia defined keys.
/// Assistant Key.
@available(added=9)
ASSISTANT = 0xffff0001;
/// Power Button.
@available(added=9)
POWER = 0xffff0002;
/// Warning: following keycodes maybe changed in the future, please don't use!!!
/// We use following keycodes in starnix tests. Most of them are keycodes in non-US keyboard
/// layouts, we may move them to meaning enum once we support those keyboard layouts.
/// See b/311425670 for details.
@available(added=16)
UNKNOWN_0055 = 0xffff0055;
@available(added=16)
UNKNOWN_0056 = 0xffff0056;
@available(added=16)
UNKNOWN_0059 = 0xffff0059;
@available(added=16)
UNKNOWN_005C = 0xffff005c;
@available(added=16)
UNKNOWN_005D = 0xffff005d;
@available(added=16)
UNKNOWN_005E = 0xffff005e;
@available(added=16)
UNKNOWN_0079 = 0xffff0079;
@available(added=16)
UNKNOWN_007A = 0xffff007a;
@available(added=16)
UNKNOWN_007B = 0xffff007b;
@available(added=16)
UNKNOWN_007C = 0xffff007c;
@available(added=16)
UNKNOWN_0085 = 0xffff0085;
@available(added=16)
UNKNOWN_0087 = 0xffff0087;
@available(added=16)
UNKNOWN_0089 = 0xffff0089;
@available(added=16)
UNKNOWN_009C = 0xffff009c;
@available(added=16)
UNKNOWN_009F = 0xffff009f;
@available(added=16)
UNKNOWN_00A0 = 0xffff00a0;
@available(added=16)
UNKNOWN_00A2 = 0xffff00a2;
@available(added=16)
UNKNOWN_00A3 = 0xffff00a3;
@available(added=16)
UNKNOWN_00A5 = 0xffff00a5;
@available(added=16)
UNKNOWN_00A6 = 0xffff00a6;
@available(added=16)
UNKNOWN_00A7 = 0xffff00a7;
@available(added=16)
UNKNOWN_00A8 = 0xffff00a8;
@available(added=16)
UNKNOWN_00A9 = 0xffff00a9;
@available(added=16)
UNKNOWN_00AD = 0xffff00ad;
@available(added=16)
UNKNOWN_00B1 = 0xffff00b1;
@available(added=16)
UNKNOWN_00B2 = 0xffff00b2;
@available(added=16)
UNKNOWN_00B3 = 0xffff00b3;
@available(added=16)
UNKNOWN_00B4 = 0xffff00b4;
@available(added=16)
UNKNOWN_00C9 = 0xffff00c9;
@available(added=16)
UNKNOWN_00CF = 0xffff00cf;
@available(added=16)
UNKNOWN_00D0 = 0xffff00d0;
@available(added=16)
UNKNOWN_00D4 = 0xffff00d4;
@available(added=16)
UNKNOWN_00E2 = 0xffff00e2;
@available(added=16)
UNKNOWN_0120 = 0xffff0120;
@available(added=16)
UNKNOWN_0121 = 0xffff0121;
@available(added=16)
UNKNOWN_0122 = 0xffff0122;
@available(added=16)
UNKNOWN_0123 = 0xffff0123;
@available(added=16)
UNKNOWN_0124 = 0xffff0124;
@available(added=16)
UNKNOWN_0125 = 0xffff0125;
@available(added=16)
UNKNOWN_0126 = 0xffff0126;
@available(added=16)
UNKNOWN_0127 = 0xffff0127;
@available(added=16)
UNKNOWN_0128 = 0xffff0128;
@available(added=16)
UNKNOWN_0129 = 0xffff0129;
@available(added=16)
UNKNOWN_012A = 0xffff012a;
@available(added=16)
UNKNOWN_012B = 0xffff012b;
@available(added=16)
UNKNOWN_012C = 0xffff012c;
@available(added=16)
UNKNOWN_012D = 0xffff012d;
@available(added=16)
UNKNOWN_012E = 0xffff012e;
@available(added=16)
UNKNOWN_012F = 0xffff012f;
@available(added=16)
UNKNOWN_0130 = 0xffff0130;
@available(added=16)
UNKNOWN_0131 = 0xffff0131;
@available(added=16)
UNKNOWN_0132 = 0xffff0132;
@available(added=16)
UNKNOWN_0133 = 0xffff0133;
@available(added=16)
UNKNOWN_0134 = 0xffff0134;
@available(added=16)
UNKNOWN_0135 = 0xffff0135;
@available(added=16)
UNKNOWN_0136 = 0xffff0136;
@available(added=16)
UNKNOWN_0137 = 0xffff0137;
@available(added=16)
UNKNOWN_0138 = 0xffff0138;
@available(added=16)
UNKNOWN_0139 = 0xffff0139;
@available(added=16)
UNKNOWN_013A = 0xffff013a;
@available(added=16)
UNKNOWN_013B = 0xffff013b;
@available(added=16)
UNKNOWN_013C = 0xffff013c;
@available(added=16)
UNKNOWN_013D = 0xffff013d;
@available(added=16)
UNKNOWN_013E = 0xffff013e;
@available(added=16)
UNKNOWN_0161 = 0xffff0161;
@available(added=16)
UNKNOWN_016A = 0xffff016a;
@available(added=16)
UNKNOWN_016E = 0xffff016e;
@available(added=16)
UNKNOWN_0172 = 0xffff0172;
@available(added=16)
UNKNOWN_0179 = 0xffff0179;
@available(added=16)
UNKNOWN_018E = 0xffff018e;
@available(added=16)
UNKNOWN_018F = 0xffff018f;
@available(added=16)
UNKNOWN_0190 = 0xffff0190;
@available(added=16)
UNKNOWN_0191 = 0xffff0191;
@available(added=16)
UNKNOWN_0192 = 0xffff0192;
@available(added=16)
UNKNOWN_0193 = 0xffff0193;
@available(added=16)
UNKNOWN_0195 = 0xffff0195;
@available(added=16)
UNKNOWN_01D0 = 0xffff01d0;
@available(added=16)
UNKNOWN_020A = 0xffff020a;
@available(added=16)
UNKNOWN_020B = 0xffff020b;
};