diff options
Diffstat (limited to 'chromium/ash/accelerators/accelerator_table.h')
-rw-r--r-- | chromium/ash/accelerators/accelerator_table.h | 202 |
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_ |