chromium/remoting/proto/layout_key_function.proto

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