Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: ash/common/accelerators/accelerator_table.h

Issue 2734653002: chromeos: Move files in //ash/common to //ash (Closed)
Patch Set: fix a11y tests, fix docs Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 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
5 #ifndef ASH_COMMON_ACCELERATORS_ACCELERATOR_TABLE_H_
6 #define ASH_COMMON_ACCELERATORS_ACCELERATOR_TABLE_H_
7
8 #include <stddef.h>
9
10 #include "ash/ash_export.h"
11 #include "ui/events/event_constants.h"
12 #include "ui/events/keycodes/keyboard_codes.h"
13
14 namespace ash {
15
16 // There are five classes of accelerators in Ash:
17 //
18 // Ash (OS) reserved:
19 // * Neither packaged apps nor web pages can cancel.
20 // * For example, power button.
21 // * See kReservedActions below.
22 //
23 // Ash (OS) preferred:
24 // * Fullscreen window can consume, but normal window can't.
25 // * For example, Alt-Tab window cycling.
26 // * See kPreferredActions below.
27 //
28 // Chrome OS system keys:
29 // * For legacy reasons, v1 apps can process and cancel. Otherwise handled
30 // directly by Ash.
31 // * Brightness, volume control, etc.
32 // * See IsSystemKey() in ash/accelerators/accelerator_filter.cc.
33 //
34 // Browser reserved:
35 // * Packaged apps can cancel but web pages cannot.
36 // * For example, browser back and forward from first-row function keys.
37 // * See IsReservedCommandOrKey() in
38 // chrome/browser/ui/browser_command_controller.cc.
39 //
40 // Browser non-reserved:
41 // * Both packaged apps and web pages can cancel.
42 // * For example, selecting tabs by number with Ctrl-1 to Ctrl-9.
43 // * See kAcceleratorMap in chrome/browser/ui/views/accelerator_table.cc.
44 //
45 // In particular, there is not an accelerator processing pass for Ash after
46 // the browser gets the accelerator. See crbug.com/285308 for details.
47 //
48 // There are also various restrictions on accelerators allowed at the login
49 // screen, when running in "forced app mode" (like a kiosk), etc. See the
50 // various kActionsAllowed* below.
51 //
52 // Please put if/def sections at the end of the bare section and keep the list
53 // within each section in alphabetical order.
54 enum AcceleratorAction {
55 BRIGHTNESS_DOWN,
56 BRIGHTNESS_UP,
57 CYCLE_BACKWARD_MRU,
58 CYCLE_FORWARD_MRU,
59 DEBUG_PRINT_LAYER_HIERARCHY,
60 DEBUG_PRINT_VIEW_HIERARCHY,
61 DEBUG_PRINT_WINDOW_HIERARCHY,
62 DEBUG_SHOW_TOAST,
63 DEBUG_TOGGLE_DEVICE_SCALE_FACTOR,
64 DEBUG_TOGGLE_SHOW_DEBUG_BORDERS,
65 DEBUG_TOGGLE_SHOW_FPS_COUNTER,
66 DEBUG_TOGGLE_SHOW_PAINT_RECTS,
67 DEBUG_TOGGLE_TOUCH_PAD,
68 DEBUG_TOGGLE_TOUCH_SCREEN,
69 DEBUG_TOGGLE_TOUCH_VIEW,
70 DEBUG_TOGGLE_WALLPAPER_MODE,
71 DEBUG_TRIGGER_CRASH, // Intentionally crash the ash process.
72 DEV_ADD_REMOVE_DISPLAY,
73 DEV_TOGGLE_ROOT_WINDOW_FULL_SCREEN,
74 DEV_TOGGLE_UNIFIED_DESKTOP,
75 DISABLE_CAPS_LOCK,
76 EXIT,
77 FOCUS_NEXT_PANE,
78 FOCUS_PREVIOUS_PANE,
79 FOCUS_SHELF,
80 KEYBOARD_BRIGHTNESS_DOWN,
81 KEYBOARD_BRIGHTNESS_UP,
82 LAUNCH_APP_0,
83 LAUNCH_APP_1,
84 LAUNCH_APP_2,
85 LAUNCH_APP_3,
86 LAUNCH_APP_4,
87 LAUNCH_APP_5,
88 LAUNCH_APP_6,
89 LAUNCH_APP_7,
90 LAUNCH_LAST_APP,
91 LOCK_PRESSED,
92 LOCK_RELEASED,
93 LOCK_SCREEN,
94 MAGNIFY_SCREEN_ZOOM_IN,
95 MAGNIFY_SCREEN_ZOOM_OUT,
96 MEDIA_NEXT_TRACK,
97 MEDIA_PLAY_PAUSE,
98 MEDIA_PREV_TRACK,
99 NEW_INCOGNITO_WINDOW,
100 NEW_TAB,
101 NEW_WINDOW,
102 NEXT_IME,
103 OPEN_CROSH,
104 OPEN_FEEDBACK_PAGE,
105 OPEN_FILE_MANAGER,
106 OPEN_GET_HELP,
107 POWER_PRESSED,
108 POWER_RELEASED,
109 PREVIOUS_IME,
110 PRINT_UI_HIERARCHIES,
111 RESTORE_TAB,
112 ROTATE_SCREEN,
113 ROTATE_WINDOW,
114 SCALE_UI_DOWN,
115 SCALE_UI_RESET,
116 SCALE_UI_UP,
117 SHOW_IME_MENU_BUBBLE,
118 SHOW_KEYBOARD_OVERLAY,
119 SHOW_MESSAGE_CENTER_BUBBLE,
120 SHOW_STYLUS_TOOLS,
121 SHOW_SYSTEM_TRAY_BUBBLE,
122 SHOW_TASK_MANAGER,
123 SUSPEND,
124 SWAP_PRIMARY_DISPLAY,
125 SWITCH_IME, // Switch to another IME depending on the accelerator.
126 SWITCH_TO_NEXT_USER,
127 SWITCH_TO_PREVIOUS_USER,
128 TAKE_PARTIAL_SCREENSHOT,
129 TAKE_SCREENSHOT,
130 TAKE_WINDOW_SCREENSHOT,
131 TOGGLE_APP_LIST,
132 TOGGLE_CAPS_LOCK,
133 TOGGLE_FULLSCREEN,
134 TOGGLE_HIGH_CONTRAST,
135 TOGGLE_MAXIMIZED,
136 TOGGLE_MIRROR_MODE,
137 TOGGLE_OVERVIEW,
138 TOGGLE_SPOKEN_FEEDBACK,
139 TOGGLE_WIFI,
140 TOUCH_HUD_CLEAR,
141 TOUCH_HUD_MODE_CHANGE,
142 TOUCH_HUD_PROJECTION_TOGGLE,
143 UNPIN,
144 VOLUME_DOWN,
145 VOLUME_MUTE,
146 VOLUME_UP,
147 WINDOW_CYCLE_SNAP_DOCK_LEFT,
148 WINDOW_CYCLE_SNAP_DOCK_RIGHT,
149 WINDOW_MINIMIZE,
150 WINDOW_POSITION_CENTER,
151 };
152
153 struct AcceleratorData {
154 bool trigger_on_press;
155 ui::KeyboardCode keycode;
156 int modifiers;
157 AcceleratorAction action;
158 };
159
160 // Gathers the needed data to handle deprecated accelerators.
161 struct DeprecatedAcceleratorData {
162 // The action that has deprecated accelerators.
163 AcceleratorAction action;
164
165 // The name of the UMA histogram that will be used to measure the deprecated
166 // v.s. new accelerator usage.
167 const char* uma_histogram_name;
168
169 // The ID of the localized notification message to show to users informing
170 // them about the deprecation.
171 int notification_message_id;
172
173 // The ID of the localized old deprecated shortcut key.
174 int old_shortcut_id;
175
176 // The ID of the localized new shortcut key.
177 int new_shortcut_id;
178
179 // Specifies whether the deprecated accelerator is still enabled to do its
180 // associated action.
181 bool deprecated_enabled;
182 };
183
184 // This will be used for the UMA stats to measure the how many users are using
185 // the old v.s. new accelerators.
186 enum DeprecatedAcceleratorUsage {
187 DEPRECATED_USED = 0, // The deprecated accelerator is used.
188 NEW_USED, // The new accelerator is used.
189 DEPRECATED_USAGE_COUNT, // Maximum value of this enum for histogram use.
190 };
191
192 // Accelerators handled by AcceleratorController.
193 ASH_EXPORT extern const AcceleratorData kAcceleratorData[];
194 ASH_EXPORT extern const size_t kAcceleratorDataLength;
195
196 // The list of the deprecated accelerators.
197 ASH_EXPORT extern const AcceleratorData kDeprecatedAccelerators[];
198 ASH_EXPORT extern const size_t kDeprecatedAcceleratorsLength;
199
200 // The list of the actions with deprecated accelerators and the needed data to
201 // handle them.
202 ASH_EXPORT extern const DeprecatedAcceleratorData kDeprecatedAcceleratorsData[];
203 ASH_EXPORT extern const size_t kDeprecatedAcceleratorsDataLength;
204
205 // Debug accelerators. Debug accelerators are only enabled when the "Debugging
206 // keyboard shortcuts" flag (--ash-debug-shortcuts) is enabled. Debug actions
207 // are always run (similar to reserved actions). Debug accelerators can be
208 // enabled in about:flags.
209 ASH_EXPORT extern const AcceleratorData kDebugAcceleratorData[];
210 ASH_EXPORT extern const size_t kDebugAcceleratorDataLength;
211
212 // Developer accelerators that are enabled only with the command-line switch
213 // --ash-dev-shortcuts. They are always run similar to reserved actions.
214 ASH_EXPORT extern const AcceleratorData kDeveloperAcceleratorData[];
215 ASH_EXPORT extern const size_t kDeveloperAcceleratorDataLength;
216
217 // Actions that should be handled very early in Ash unless the current target
218 // window is full-screen.
219 ASH_EXPORT extern const AcceleratorAction kPreferredActions[];
220 ASH_EXPORT extern const size_t kPreferredActionsLength;
221
222 // Actions that are always handled in Ash.
223 ASH_EXPORT extern const AcceleratorAction kReservedActions[];
224 ASH_EXPORT extern const size_t kReservedActionsLength;
225
226 // Actions allowed while user is not signed in or screen is locked.
227 ASH_EXPORT extern const AcceleratorAction kActionsAllowedAtLoginOrLockScreen[];
228 ASH_EXPORT extern const size_t kActionsAllowedAtLoginOrLockScreenLength;
229
230 // Actions allowed while screen is locked (in addition to
231 // kActionsAllowedAtLoginOrLockScreen).
232 ASH_EXPORT extern const AcceleratorAction kActionsAllowedAtLockScreen[];
233 ASH_EXPORT extern const size_t kActionsAllowedAtLockScreenLength;
234
235 // Actions allowed while a modal window is up.
236 ASH_EXPORT extern const AcceleratorAction kActionsAllowedAtModalWindow[];
237 ASH_EXPORT extern const size_t kActionsAllowedAtModalWindowLength;
238
239 // Actions which may be repeated by holding an accelerator key.
240 ASH_EXPORT extern const AcceleratorAction kRepeatableActions[];
241 ASH_EXPORT extern const size_t kRepeatableActionsLength;
242
243 // Actions allowed in app mode or pinned mode.
244 ASH_EXPORT extern const AcceleratorAction
245 kActionsAllowedInAppModeOrPinnedMode[];
246 ASH_EXPORT extern const size_t kActionsAllowedInAppModeOrPinnedModeLength;
247
248 // Actions that can be performed in pinned mode.
249 // In pinned mode, the action listed this or "in app mode or pinned mode" table
250 // can be performed.
251 ASH_EXPORT extern const AcceleratorAction kActionsAllowedInPinnedMode[];
252 ASH_EXPORT extern const size_t kActionsAllowedInPinnedModeLength;
253
254 // Actions that require at least 1 window.
255 ASH_EXPORT extern const AcceleratorAction kActionsNeedingWindow[];
256 ASH_EXPORT extern const size_t kActionsNeedingWindowLength;
257
258 // Actions that can be performed while keeping the menu open.
259 ASH_EXPORT extern const AcceleratorAction kActionsKeepingMenuOpen[];
260 ASH_EXPORT extern const size_t kActionsKeepingMenuOpenLength;
261
262 } // namespace ash
263
264 #endif // ASH_COMMON_ACCELERATORS_ACCELERATOR_TABLE_H_
OLDNEW
« no previous file with comments | « ash/common/accelerators/accelerator_router.cc ('k') | ash/common/accelerators/accelerator_table.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698