accelerator_table.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ASH_ACCELERATORS_ACCELERATOR_TABLE_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ASH_ACCELERATORS_ACCELERATOR_TABLE_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/ash_export.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/events/event_constants.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/keycodes/keyboard_codes.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Please put if/def sections at the end of the bare section and keep the list
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// within each section in alphabetical order.
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum AcceleratorAction {
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ACCESSIBLE_FOCUS_NEXT,
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ACCESSIBLE_FOCUS_PREVIOUS,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BRIGHTNESS_DOWN,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BRIGHTNESS_UP,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CYCLE_BACKWARD_LINEAR,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CYCLE_BACKWARD_MRU,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CYCLE_FORWARD_LINEAR,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CYCLE_FORWARD_MRU,
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  DEBUG_TOGGLE_DEVICE_SCALE_FACTOR,
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  DEBUG_TOGGLE_SHOW_DEBUG_BORDERS,
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  DEBUG_TOGGLE_SHOW_FPS_COUNTER,
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  DEBUG_TOGGLE_SHOW_PAINT_RECTS,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISABLE_CAPS_LOCK,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXIT,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FOCUS_LAUNCHER,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FOCUS_NEXT_PANE,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FOCUS_PREVIOUS_PANE,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  KEYBOARD_BRIGHTNESS_DOWN,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  KEYBOARD_BRIGHTNESS_UP,
37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  LAUNCH_APP_0,
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  LAUNCH_APP_1,
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  LAUNCH_APP_2,
40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  LAUNCH_APP_3,
41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  LAUNCH_APP_4,
42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  LAUNCH_APP_5,
43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  LAUNCH_APP_6,
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  LAUNCH_APP_7,
45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  LAUNCH_LAST_APP,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LOCK_PRESSED,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LOCK_RELEASED,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MAGNIFY_SCREEN_ZOOM_IN,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MAGNIFY_SCREEN_ZOOM_OUT,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MEDIA_NEXT_TRACK,
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MEDIA_PLAY_PAUSE,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MEDIA_PREV_TRACK,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NEW_INCOGNITO_WINDOW,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NEW_TAB,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NEW_WINDOW,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NEXT_IME,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OPEN_FEEDBACK_PAGE,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  POWER_PRESSED,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  POWER_RELEASED,
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  PREVIOUS_IME,
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  PRINT_LAYER_HIERARCHY,
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PRINT_UI_HIERARCHIES,
63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  PRINT_VIEW_HIERARCHY,
64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  PRINT_WINDOW_HIERARCHY,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RESTORE_TAB,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ROTATE_SCREEN,
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ROTATE_WINDOW,
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  SCALE_UI_DOWN,
69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SCALE_UI_RESET,
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  SCALE_UI_UP,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SHOW_KEYBOARD_OVERLAY,
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  SHOW_MESSAGE_CENTER_BUBBLE,
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SHOW_OAK,
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  SHOW_SYSTEM_TRAY_BUBBLE,
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SHOW_TASK_MANAGER,
76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SILENCE_SPOKEN_FEEDBACK,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SWAP_PRIMARY_DISPLAY,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SWITCH_IME,  // Switch to another IME depending on the accelerator.
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TAKE_PARTIAL_SCREENSHOT,
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TAKE_SCREENSHOT,
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TOGGLE_APP_LIST,
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TOGGLE_CAPS_LOCK,
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TOGGLE_CAPS_LOCK_BY_ALT_LWIN,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TOGGLE_DESKTOP_BACKGROUND_MODE,
85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  TOGGLE_FULLSCREEN,
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TOGGLE_MAXIMIZED,
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TOGGLE_ROOT_WINDOW_FULL_SCREEN,
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TOGGLE_SPOKEN_FEEDBACK,
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TOGGLE_WIFI,
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TOUCH_HUD_CLEAR,
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TOUCH_HUD_MODE_CHANGE,
92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  TOUCH_HUD_PROJECTION_TOGGLE,
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  VOLUME_DOWN,
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  VOLUME_MUTE,
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  VOLUME_UP,
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WINDOW_MINIMIZE,
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WINDOW_POSITION_CENTER,
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WINDOW_SNAP_LEFT,
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WINDOW_SNAP_RIGHT,
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS)
10190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  ADD_REMOVE_DISPLAY,
10290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TOGGLE_MIRROR_MODE,
103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  DISABLE_GPU_WATCHDOG,
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LOCK_SCREEN,
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OPEN_CROSH,
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  OPEN_FILE_DIALOG,  // Open 'Open file' dialog.
1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  OPEN_FILE_MANAGER,
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct AcceleratorData {
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool trigger_on_press;
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui::KeyboardCode keycode;
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int modifiers;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AcceleratorAction action;
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accelerators handled by AcceleratorController.
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const AcceleratorData kAcceleratorData[];
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The number of elements in kAcceleratorData.
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const size_t kAcceleratorDataLength;
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if !defined(NDEBUG)
125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Accelerators useful when running on desktop. Debug build only.
126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ASH_EXPORT extern const AcceleratorData kDesktopAcceleratorData[];
127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// The number of elements in kDesktopAcceleratorData.
129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ASH_EXPORT extern const size_t kDesktopAcceleratorDataLength;
130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Debug accelerators enabled only when "Debugging keyboard shortcuts" flag
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// (--ash-debug-shortcuts) is enabled.
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const AcceleratorData kDebugAcceleratorData[];
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The number of elements in kDebugAcceleratorData.
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const size_t kDebugAcceleratorDataLength;
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Actions that should be handled very early in Ash unless the current target
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// window is full-screen.
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const AcceleratorAction kReservedActions[];
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The number of elements in kReservedActions.
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const size_t kReservedActionsLength;
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Actions that should be handled very early in Ash unless the current target
14790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// window is full-screen, these actions are only handled if
14890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// DebugShortcutsEnabled is true (command line switch 'ash-debug-shortcuts').
14990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)ASH_EXPORT extern const AcceleratorAction kReservedDebugActions[];
15090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
15190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// The number of elements in kReservedDebugActions.
15290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)ASH_EXPORT extern const size_t kReservedDebugActionsLength;
15390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Actions allowed while user is not signed in or screen is locked.
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const AcceleratorAction kActionsAllowedAtLoginOrLockScreen[];
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The number of elements in kActionsAllowedAtLoginOrLockScreen.
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const size_t kActionsAllowedAtLoginOrLockScreenLength;
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Actions allowed while screen is locked (in addition to
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// kActionsAllowedAtLoginOrLockScreen).
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const AcceleratorAction kActionsAllowedAtLockScreen[];
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The number of elements in kActionsAllowedAtLockScreen.
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const size_t kActionsAllowedAtLockScreenLength;
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Actions allowed while a modal window is up.
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const AcceleratorAction kActionsAllowedAtModalWindow[];
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The number of elements in kActionsAllowedAtModalWindow.
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const size_t kActionsAllowedAtModalWindowLength;
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Actions which will not be repeated while holding an accelerator key.
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const AcceleratorAction kNonrepeatableActions[];
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The number of elements in kNonrepeatableActions.
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ASH_EXPORT extern const size_t kNonrepeatableActionsLength;
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Actions allowed in app mode.
1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ASH_EXPORT extern const AcceleratorAction kActionsAllowedInAppMode[];
1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The number of elements in kActionsAllowedInAppMode.
1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ASH_EXPORT extern const size_t kActionsAllowedInAppModeLength;
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ash
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // ASH_ACCELERATORS_ACCELERATOR_TABLE_H_
188