// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package remoting.protocol;
// List of key functions to identify functional (non-character-generating) keys
// in the keyboard layout. This list is not meant to be exhaustive, but is meant
// to include functions typically assigned to the standard keyboard keys on
// common keyboard layouts.
// Next ID: 64
enum LayoutKeyFunction {
// The key action is a function whose type is not recognized.
UNKNOWN = 0;
// Modifier keys
CONTROL = 1;
ALT = 2;
SHIFT = 3;
// Windows key on Windows, super on Linux.
META = 4;
// Level 3 shift. Commonly labeled AltGr.
ALT_GR = 5;
// Level 5 shift. Used on some Linux layouts. (Level 4 is AltGr + Shift.)
MOD5 = 6;
// On Linux, this defaults to Shift + AltGr (which is distinct from AltGr +
// Shift, which accesses level 4), but it can also be assigned to
// a distinct key.
COMPOSE = 7;
// Mac specific keys.
// The option key on macOS generally acts like AltGr, but can also be used for
// shortcuts like option+command+B.
OPTION = 61;
COMMAND = 62;
// Chrome OS specific keys.
// The search key on Chrome OS (aka the 'Launcher' or 'Everything' key).
SEARCH = 63;
// Locks
NUM_LOCK = 8;
CAPS_LOCK = 9;
SCROLL_LOCK = 10;
// Editing and navigation keys
BACKSPACE = 11;
ENTER = 12;
TAB = 13;
INSERT = 14;
DELETE_ = 15;
HOME = 16;
END = 17;
PAGE_UP = 18;
PAGE_DOWN = 19;
CLEAR = 20;
ARROW_UP = 21;
ARROW_DOWN = 22;
ARROW_LEFT = 23;
ARROW_RIGHT = 24;
// Function keys
F1 = 25;
F2 = 26;
F3 = 27;
F4 = 28;
F5 = 29;
F6 = 30;
F7 = 31;
F8 = 32;
F9 = 33;
F10 = 34;
F11 = 35;
F12 = 36;
F13 = 37;
F14 = 38;
F15 = 39;
F16 = 40;
F17 = 41;
F18 = 42;
F19 = 43;
F20 = 44;
F21 = 45;
F22 = 46;
F23 = 47;
F24 = 48;
// Other common functional keys
ESCAPE = 49;
CONTEXT_MENU = 50;
PAUSE = 51;
PRINT_SCREEN = 52;
// Language-specific keys
// Japanese
HANKAKU_ZENKAKU_KANJI = 53; // Backquote
HENKAN = 54; // Convert
MUHENKAN = 55; // NonConvert
KATAKANA_HIRAGANA_ROMAJI = 56; // KanaMode
KANA = 57; // Lang1 (Mac keyboard)
EISU = 58; // Unshifted CapsLock (Windows), Lang2 (Mac keyboard)
// Korean
HAN_YEONG = 59; // Lang1
HANJA = 60; // Lang2
}