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