summaryrefslogtreecommitdiff
path: root/chromium/ash/accelerators/accelerator_table.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/accelerators/accelerator_table.h')
-rw-r--r--chromium/ash/accelerators/accelerator_table.h202
1 files changed, 202 insertions, 0 deletions
diff --git a/chromium/ash/accelerators/accelerator_table.h b/chromium/ash/accelerators/accelerator_table.h
new file mode 100644
index 00000000000..d12096037b0
--- /dev/null
+++ b/chromium/ash/accelerators/accelerator_table.h
@@ -0,0 +1,202 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_ACCELERATORS_ACCELERATOR_TABLE_H_
+#define ASH_ACCELERATORS_ACCELERATOR_TABLE_H_
+
+#include "ash/ash_export.h"
+#include "base/basictypes.h"
+#include "ui/events/event_constants.h"
+#include "ui/events/keycodes/keyboard_codes.h"
+
+namespace ash {
+
+// There are four classes of accelerators in Ash:
+//
+// Ash (OS) reserved:
+// * Neither packaged apps nor web pages can cancel.
+// * For example, Alt-Tab window cycling.
+// * See kReservedActions below.
+//
+// Chrome OS system keys:
+// * For legacy reasons, v1 apps can process and cancel. Otherwise handled
+// directly by Ash.
+// * Brightness, volume control, etc.
+// * See IsSystemKey() in ash/accelerators/accelerator_filter.cc.
+//
+// Browser reserved:
+// * Packaged apps can cancel but web pages cannot.
+// * For example, browser back and forward from first-row function keys.
+// * See IsReservedCommandOrKey() in
+// chrome/browser/ui/browser_command_controller.cc.
+//
+// Browser non-reserved:
+// * Both packaged apps and web pages can cancel.
+// * For example, selecting tabs by number with Ctrl-1 to Ctrl-9.
+// * See kAcceleratorMap in chrome/browser/ui/views/accelerator_table.cc.
+//
+// In particular, there is not an accelerator processing pass for Ash after
+// the browser gets the accelerator. See crbug.com/285308 for details.
+//
+// There are also various restrictions on accelerators allowed at the login
+// screen, when running in "forced app mode" (like a kiosk), etc. See the
+// various kActionsAllowed* below.
+//
+// Please put if/def sections at the end of the bare section and keep the list
+// within each section in alphabetical order.
+enum AcceleratorAction {
+ ACCESSIBLE_FOCUS_NEXT,
+ ACCESSIBLE_FOCUS_PREVIOUS,
+ BRIGHTNESS_DOWN,
+ BRIGHTNESS_UP,
+ CYCLE_BACKWARD_MRU,
+ CYCLE_FORWARD_MRU,
+ CYCLE_LINEAR,
+ DEBUG_TOGGLE_DEVICE_SCALE_FACTOR,
+ DEBUG_TOGGLE_SHOW_DEBUG_BORDERS,
+ DEBUG_TOGGLE_SHOW_FPS_COUNTER,
+ DEBUG_TOGGLE_SHOW_PAINT_RECTS,
+ DISABLE_CAPS_LOCK,
+ EXIT,
+ FOCUS_LAUNCHER,
+ FOCUS_NEXT_PANE,
+ FOCUS_PREVIOUS_PANE,
+ KEYBOARD_BRIGHTNESS_DOWN,
+ KEYBOARD_BRIGHTNESS_UP,
+ LAUNCH_APP_0,
+ LAUNCH_APP_1,
+ LAUNCH_APP_2,
+ LAUNCH_APP_3,
+ LAUNCH_APP_4,
+ LAUNCH_APP_5,
+ LAUNCH_APP_6,
+ LAUNCH_APP_7,
+ LAUNCH_LAST_APP,
+ LOCK_PRESSED,
+ LOCK_RELEASED,
+ MAGNIFY_SCREEN_ZOOM_IN,
+ MAGNIFY_SCREEN_ZOOM_OUT,
+ MEDIA_NEXT_TRACK,
+ MEDIA_PLAY_PAUSE,
+ MEDIA_PREV_TRACK,
+ NEW_INCOGNITO_WINDOW,
+ NEW_TAB,
+ NEW_WINDOW,
+ NEXT_IME,
+ OPEN_FEEDBACK_PAGE,
+ POWER_PRESSED,
+ POWER_RELEASED,
+ PREVIOUS_IME,
+ PRINT_LAYER_HIERARCHY,
+ PRINT_UI_HIERARCHIES,
+ PRINT_VIEW_HIERARCHY,
+ PRINT_WINDOW_HIERARCHY,
+ RESTORE_TAB,
+ ROTATE_SCREEN,
+ ROTATE_WINDOW,
+ SCALE_UI_DOWN,
+ SCALE_UI_RESET,
+ SCALE_UI_UP,
+ SHOW_KEYBOARD_OVERLAY,
+ SHOW_MESSAGE_CENTER_BUBBLE,
+ SHOW_OAK,
+ SHOW_SYSTEM_TRAY_BUBBLE,
+ SHOW_TASK_MANAGER,
+ SILENCE_SPOKEN_FEEDBACK,
+ SWAP_PRIMARY_DISPLAY,
+ SWITCH_IME, // Switch to another IME depending on the accelerator.
+ TAKE_PARTIAL_SCREENSHOT,
+ TAKE_SCREENSHOT,
+ TOGGLE_APP_LIST,
+ TOGGLE_CAPS_LOCK,
+ TOGGLE_CAPS_LOCK_BY_ALT_LWIN,
+ TOGGLE_DESKTOP_BACKGROUND_MODE,
+ TOGGLE_FULLSCREEN,
+ TOGGLE_MAXIMIZED,
+ TOGGLE_ROOT_WINDOW_FULL_SCREEN,
+ TOGGLE_SPOKEN_FEEDBACK,
+ TOGGLE_WIFI,
+ TOUCH_HUD_CLEAR,
+ TOUCH_HUD_MODE_CHANGE,
+ TOUCH_HUD_PROJECTION_TOGGLE,
+ VOLUME_DOWN,
+ VOLUME_MUTE,
+ VOLUME_UP,
+ WINDOW_MINIMIZE,
+ WINDOW_POSITION_CENTER,
+ WINDOW_SNAP_LEFT,
+ WINDOW_SNAP_RIGHT,
+#if defined(OS_CHROMEOS)
+ ADD_REMOVE_DISPLAY,
+ TOGGLE_MIRROR_MODE,
+ DISABLE_GPU_WATCHDOG,
+ LOCK_SCREEN,
+ OPEN_CROSH,
+ OPEN_FILE_MANAGER,
+ SWITCH_TO_NEXT_USER,
+ SWITCH_TO_PREVIOUS_USER,
+#endif
+};
+
+struct AcceleratorData {
+ bool trigger_on_press;
+ ui::KeyboardCode keycode;
+ int modifiers;
+ AcceleratorAction action;
+};
+
+// Accelerators handled by AcceleratorController.
+ASH_EXPORT extern const AcceleratorData kAcceleratorData[];
+ASH_EXPORT extern const size_t kAcceleratorDataLength;
+
+#if !defined(NDEBUG)
+// Accelerators useful when running on desktop. Debug build only.
+ASH_EXPORT extern const AcceleratorData kDesktopAcceleratorData[];
+ASH_EXPORT extern const size_t kDesktopAcceleratorDataLength;
+#endif
+
+// Debug accelerators enabled only when "Debugging keyboard shortcuts" flag
+// (--ash-debug-shortcuts) is enabled.
+ASH_EXPORT extern const AcceleratorData kDebugAcceleratorData[];
+ASH_EXPORT extern const size_t kDebugAcceleratorDataLength;
+
+// Actions that should be handled very early in Ash unless the current target
+// window is full-screen.
+ASH_EXPORT extern const AcceleratorAction kReservedActions[];
+ASH_EXPORT extern const size_t kReservedActionsLength;
+
+// Actions that should be handled very early in Ash unless the current target
+// window is full-screen, these actions are only handled if
+// DebugShortcutsEnabled is true (command line switch 'ash-debug-shortcuts').
+ASH_EXPORT extern const AcceleratorAction kReservedDebugActions[];
+ASH_EXPORT extern const size_t kReservedDebugActionsLength;
+
+// Actions allowed while user is not signed in or screen is locked.
+ASH_EXPORT extern const AcceleratorAction kActionsAllowedAtLoginOrLockScreen[];
+ASH_EXPORT extern const size_t kActionsAllowedAtLoginOrLockScreenLength;
+
+// Actions allowed while screen is locked (in addition to
+// kActionsAllowedAtLoginOrLockScreen).
+ASH_EXPORT extern const AcceleratorAction kActionsAllowedAtLockScreen[];
+ASH_EXPORT extern const size_t kActionsAllowedAtLockScreenLength;
+
+// Actions allowed while a modal window is up.
+ASH_EXPORT extern const AcceleratorAction kActionsAllowedAtModalWindow[];
+ASH_EXPORT extern const size_t kActionsAllowedAtModalWindowLength;
+
+// Actions which will not be repeated while holding an accelerator key.
+ASH_EXPORT extern const AcceleratorAction kNonrepeatableActions[];
+ASH_EXPORT extern const size_t kNonrepeatableActionsLength;
+
+// Actions allowed in app mode.
+ASH_EXPORT extern const AcceleratorAction kActionsAllowedInAppMode[];
+ASH_EXPORT extern const size_t kActionsAllowedInAppModeLength;
+
+// Actions that require at least 1 window.
+ASH_EXPORT extern const AcceleratorAction kActionsNeedingWindow[];
+ASH_EXPORT extern const size_t kActionsNeedingWindowLength;
+
+} // namespace ash
+
+#endif // ASH_ACCELERATORS_ACCELERATOR_TABLE_H_