| OLD | NEW |
| (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 #include "ash/common/accelerators/accelerator_table.h" | |
| 6 | |
| 7 #include "ash/strings/grit/ash_strings.h" | |
| 8 #include "base/macros.h" | |
| 9 | |
| 10 namespace ash { | |
| 11 | |
| 12 const int kDebugModifier = | |
| 13 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_SHIFT_DOWN; | |
| 14 | |
| 15 const AcceleratorData kAcceleratorData[] = { | |
| 16 {true, ui::VKEY_SPACE, ui::EF_CONTROL_DOWN, PREVIOUS_IME}, | |
| 17 {false, ui::VKEY_SPACE, ui::EF_CONTROL_DOWN, PREVIOUS_IME}, | |
| 18 // Shortcuts for Japanese IME. | |
| 19 {true, ui::VKEY_CONVERT, ui::EF_NONE, SWITCH_IME}, | |
| 20 {true, ui::VKEY_NONCONVERT, ui::EF_NONE, SWITCH_IME}, | |
| 21 {true, ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE, SWITCH_IME}, | |
| 22 {true, ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE, SWITCH_IME}, | |
| 23 // Shortcut for Koren IME. | |
| 24 {true, ui::VKEY_HANGUL, ui::EF_NONE, SWITCH_IME}, | |
| 25 | |
| 26 {true, ui::VKEY_TAB, ui::EF_ALT_DOWN, CYCLE_FORWARD_MRU}, | |
| 27 {true, ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, | |
| 28 CYCLE_BACKWARD_MRU}, | |
| 29 {true, ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_NONE, TOGGLE_OVERVIEW}, | |
| 30 {true, ui::VKEY_BROWSER_SEARCH, ui::EF_NONE, TOGGLE_APP_LIST}, | |
| 31 {true, ui::VKEY_WLAN, ui::EF_NONE, TOGGLE_WIFI}, | |
| 32 {true, ui::VKEY_KBD_BRIGHTNESS_DOWN, ui::EF_NONE, KEYBOARD_BRIGHTNESS_DOWN}, | |
| 33 {true, ui::VKEY_KBD_BRIGHTNESS_UP, ui::EF_NONE, KEYBOARD_BRIGHTNESS_UP}, | |
| 34 // Maximize button. | |
| 35 {true, ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_CONTROL_DOWN, TOGGLE_MIRROR_MODE}, | |
| 36 {true, ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_ALT_DOWN, SWAP_PRIMARY_DISPLAY}, | |
| 37 // Cycle windows button. | |
| 38 {true, ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN, TAKE_SCREENSHOT}, | |
| 39 {true, ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, | |
| 40 TAKE_PARTIAL_SCREENSHOT}, | |
| 41 {true, ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, | |
| 42 TAKE_WINDOW_SCREENSHOT}, | |
| 43 {true, ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE, BRIGHTNESS_DOWN}, | |
| 44 {true, ui::VKEY_BRIGHTNESS_DOWN, ui::EF_ALT_DOWN, KEYBOARD_BRIGHTNESS_DOWN}, | |
| 45 {true, ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE, BRIGHTNESS_UP}, | |
| 46 {true, ui::VKEY_BRIGHTNESS_UP, ui::EF_ALT_DOWN, KEYBOARD_BRIGHTNESS_UP}, | |
| 47 {true, ui::VKEY_BRIGHTNESS_DOWN, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 48 MAGNIFY_SCREEN_ZOOM_OUT}, | |
| 49 {true, ui::VKEY_BRIGHTNESS_UP, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 50 MAGNIFY_SCREEN_ZOOM_IN}, | |
| 51 {true, ui::VKEY_L, ui::EF_COMMAND_DOWN, LOCK_SCREEN}, | |
| 52 {true, ui::VKEY_L, ui::EF_COMMAND_DOWN | ui::EF_SHIFT_DOWN, SUSPEND}, | |
| 53 // The lock key on Chrome OS keyboards produces F13 scancodes. | |
| 54 {true, ui::VKEY_F13, ui::EF_NONE, LOCK_PRESSED}, | |
| 55 {false, ui::VKEY_F13, ui::EF_NONE, LOCK_RELEASED}, | |
| 56 // Generic keyboards can use VKEY_SLEEP to mimic ChromeOS keyboard's lock | |
| 57 // key. | |
| 58 {true, ui::VKEY_SLEEP, ui::EF_NONE, LOCK_PRESSED}, | |
| 59 {false, ui::VKEY_SLEEP, ui::EF_NONE, LOCK_RELEASED}, | |
| 60 {true, ui::VKEY_POWER, ui::EF_NONE, POWER_PRESSED}, | |
| 61 {false, ui::VKEY_POWER, ui::EF_NONE, POWER_RELEASED}, | |
| 62 {true, ui::VKEY_M, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, OPEN_FILE_MANAGER}, | |
| 63 {true, ui::VKEY_OEM_2, ui::EF_CONTROL_DOWN, OPEN_GET_HELP}, | |
| 64 {true, ui::VKEY_OEM_2, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, | |
| 65 OPEN_GET_HELP}, | |
| 66 {true, ui::VKEY_T, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, OPEN_CROSH}, | |
| 67 {true, ui::VKEY_I, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 68 TOUCH_HUD_MODE_CHANGE}, | |
| 69 {true, ui::VKEY_I, | |
| 70 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_SHIFT_DOWN, | |
| 71 TOUCH_HUD_CLEAR}, | |
| 72 {true, ui::VKEY_P, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 73 TOUCH_HUD_PROJECTION_TOGGLE}, | |
| 74 {true, ui::VKEY_H, ui::EF_COMMAND_DOWN | ui::EF_SHIFT_DOWN, | |
| 75 TOGGLE_HIGH_CONTRAST}, | |
| 76 {true, ui::VKEY_Z, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 77 TOGGLE_SPOKEN_FEEDBACK}, | |
| 78 {true, ui::VKEY_OEM_COMMA, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 79 SWITCH_TO_PREVIOUS_USER}, | |
| 80 {true, ui::VKEY_OEM_PERIOD, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 81 SWITCH_TO_NEXT_USER}, | |
| 82 // Single shift release turns off caps lock. | |
| 83 {false, ui::VKEY_LSHIFT, ui::EF_NONE, DISABLE_CAPS_LOCK}, | |
| 84 {false, ui::VKEY_SHIFT, ui::EF_NONE, DISABLE_CAPS_LOCK}, | |
| 85 {false, ui::VKEY_RSHIFT, ui::EF_NONE, DISABLE_CAPS_LOCK}, | |
| 86 // Accelerators to toggle Caps Lock. | |
| 87 // The following is triggered when Search is released while Alt is still | |
| 88 // down. The key_code here is LWIN (for search) and Alt is a modifier. | |
| 89 {false, ui::VKEY_LWIN, ui::EF_ALT_DOWN, TOGGLE_CAPS_LOCK}, | |
| 90 // The following is triggered when Alt is released while search is still | |
| 91 // down. The key_code here is MENU (for Alt) and Search is a modifier | |
| 92 // (EF_COMMAND_DOWN is used for Search as a modifier). | |
| 93 {false, ui::VKEY_MENU, ui::EF_COMMAND_DOWN, TOGGLE_CAPS_LOCK}, | |
| 94 {true, ui::VKEY_VOLUME_MUTE, ui::EF_NONE, VOLUME_MUTE}, | |
| 95 {true, ui::VKEY_VOLUME_DOWN, ui::EF_NONE, VOLUME_DOWN}, | |
| 96 {true, ui::VKEY_VOLUME_UP, ui::EF_NONE, VOLUME_UP}, | |
| 97 {true, ui::VKEY_ESCAPE, ui::EF_COMMAND_DOWN, SHOW_TASK_MANAGER}, | |
| 98 {true, ui::VKEY_SPACE, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, NEXT_IME}, | |
| 99 {true, ui::VKEY_I, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, OPEN_FEEDBACK_PAGE}, | |
| 100 {true, ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, EXIT}, | |
| 101 {true, ui::VKEY_N, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, | |
| 102 NEW_INCOGNITO_WINDOW}, | |
| 103 {true, ui::VKEY_N, ui::EF_CONTROL_DOWN, NEW_WINDOW}, | |
| 104 {true, ui::VKEY_T, ui::EF_CONTROL_DOWN, NEW_TAB}, | |
| 105 {true, ui::VKEY_OEM_MINUS, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, | |
| 106 SCALE_UI_UP}, | |
| 107 {true, ui::VKEY_OEM_PLUS, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, | |
| 108 SCALE_UI_DOWN}, | |
| 109 {true, ui::VKEY_0, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, SCALE_UI_RESET}, | |
| 110 {true, ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, | |
| 111 ROTATE_SCREEN}, | |
| 112 {true, ui::VKEY_BROWSER_REFRESH, | |
| 113 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ROTATE_WINDOW}, | |
| 114 {true, ui::VKEY_T, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, RESTORE_TAB}, | |
| 115 {true, ui::VKEY_PRINT, ui::EF_NONE, TAKE_SCREENSHOT}, | |
| 116 // On Chrome OS, Search key is mapped to LWIN. The Search key binding should | |
| 117 // act on release instead of press when using Search as a modifier key for | |
| 118 // extended keyboard shortcuts. | |
| 119 {false, ui::VKEY_LWIN, ui::EF_NONE, TOGGLE_APP_LIST}, | |
| 120 {true, ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_NONE, TOGGLE_FULLSCREEN}, | |
| 121 {true, ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_SHIFT_DOWN, TOGGLE_FULLSCREEN}, | |
| 122 {true, ui::VKEY_ESCAPE, ui::EF_SHIFT_DOWN | ui::EF_COMMAND_DOWN, UNPIN}, | |
| 123 {true, ui::VKEY_L, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, FOCUS_SHELF}, | |
| 124 {true, ui::VKEY_HELP, ui::EF_NONE, SHOW_KEYBOARD_OVERLAY}, | |
| 125 {true, ui::VKEY_OEM_2, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 126 SHOW_KEYBOARD_OVERLAY}, | |
| 127 {true, ui::VKEY_OEM_2, | |
| 128 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 129 SHOW_KEYBOARD_OVERLAY}, | |
| 130 {true, ui::VKEY_F14, ui::EF_NONE, SHOW_KEYBOARD_OVERLAY}, | |
| 131 {true, ui::VKEY_N, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, | |
| 132 SHOW_MESSAGE_CENTER_BUBBLE}, | |
| 133 {true, ui::VKEY_P, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, SHOW_STYLUS_TOOLS}, | |
| 134 {true, ui::VKEY_S, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, | |
| 135 SHOW_SYSTEM_TRAY_BUBBLE}, | |
| 136 {true, ui::VKEY_K, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, | |
| 137 SHOW_IME_MENU_BUBBLE}, | |
| 138 {true, ui::VKEY_1, ui::EF_ALT_DOWN, LAUNCH_APP_0}, | |
| 139 {true, ui::VKEY_2, ui::EF_ALT_DOWN, LAUNCH_APP_1}, | |
| 140 {true, ui::VKEY_3, ui::EF_ALT_DOWN, LAUNCH_APP_2}, | |
| 141 {true, ui::VKEY_4, ui::EF_ALT_DOWN, LAUNCH_APP_3}, | |
| 142 {true, ui::VKEY_5, ui::EF_ALT_DOWN, LAUNCH_APP_4}, | |
| 143 {true, ui::VKEY_6, ui::EF_ALT_DOWN, LAUNCH_APP_5}, | |
| 144 {true, ui::VKEY_7, ui::EF_ALT_DOWN, LAUNCH_APP_6}, | |
| 145 {true, ui::VKEY_8, ui::EF_ALT_DOWN, LAUNCH_APP_7}, | |
| 146 {true, ui::VKEY_9, ui::EF_ALT_DOWN, LAUNCH_LAST_APP}, | |
| 147 | |
| 148 // Window management shortcuts. | |
| 149 {true, ui::VKEY_OEM_4, ui::EF_ALT_DOWN, WINDOW_CYCLE_SNAP_DOCK_LEFT}, | |
| 150 {true, ui::VKEY_OEM_6, ui::EF_ALT_DOWN, WINDOW_CYCLE_SNAP_DOCK_RIGHT}, | |
| 151 {true, ui::VKEY_OEM_MINUS, ui::EF_ALT_DOWN, WINDOW_MINIMIZE}, | |
| 152 {true, ui::VKEY_OEM_PLUS, ui::EF_ALT_DOWN, TOGGLE_MAXIMIZED}, | |
| 153 {true, ui::VKEY_OEM_PLUS, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, | |
| 154 WINDOW_POSITION_CENTER}, | |
| 155 {true, ui::VKEY_BROWSER_FORWARD, ui::EF_CONTROL_DOWN, FOCUS_NEXT_PANE}, | |
| 156 {true, ui::VKEY_BROWSER_BACK, ui::EF_CONTROL_DOWN, FOCUS_PREVIOUS_PANE}, | |
| 157 | |
| 158 // Media Player shortcuts. | |
| 159 {true, ui::VKEY_MEDIA_NEXT_TRACK, ui::EF_NONE, MEDIA_NEXT_TRACK}, | |
| 160 {true, ui::VKEY_MEDIA_PLAY_PAUSE, ui::EF_NONE, MEDIA_PLAY_PAUSE}, | |
| 161 {true, ui::VKEY_MEDIA_PREV_TRACK, ui::EF_NONE, MEDIA_PREV_TRACK}, | |
| 162 | |
| 163 // Debugging shortcuts that need to be available to end-users in | |
| 164 // release builds. | |
| 165 {true, ui::VKEY_U, kDebugModifier, PRINT_UI_HIERARCHIES}, | |
| 166 | |
| 167 // TODO(yusukes): Handle VKEY_MEDIA_STOP, and | |
| 168 // VKEY_MEDIA_LAUNCH_MAIL. | |
| 169 }; | |
| 170 | |
| 171 const size_t kAcceleratorDataLength = arraysize(kAcceleratorData); | |
| 172 | |
| 173 // Instructions for how to deprecate and replace an Accelerator: | |
| 174 // | |
| 175 // 1- Replace the old deprecated accelerator from the above list with the new | |
| 176 // accelerator that will take its place. | |
| 177 // 2- Add an entry for it in the following |kDeprecatedAccelerators| list. | |
| 178 // 3- Add another entry in the |kDeprecatedAcceleratorsData|. | |
| 179 // 4- That entry should contain the following: | |
| 180 // - The action that the deprecated accelerator maps to. | |
| 181 // - Define a histogram for this action in |histograms.xml| in the form | |
| 182 // "Ash.Accelerators.Deprecated.{ActionName}" and include the name of this | |
| 183 // histogram in this entry. This name will be used as the ID of the | |
| 184 // notification to be shown to the user. This is to prevent duplication of | |
| 185 // same notification. | |
| 186 // - The ID of the localized notification message to give the users telling | |
| 187 // them about the deprecation (Add one in |ash_strings.grd|. Search for | |
| 188 // the comment <!-- Deprecated Accelerators Messages -->). | |
| 189 // - The IDs of the localized old and new shortcut text to be used to fill | |
| 190 // the notification text. Also found in |ash_strings.grd|. | |
| 191 // - {true or false} whether the deprecated accelerator is still enabled (we | |
| 192 // don't disable a deprecated accelerator abruptly). | |
| 193 // 5- Don't forget to update the keyboard overlay. Find 'shortcut' in the file | |
| 194 // keyboard_overlay_data.js. | |
| 195 const AcceleratorData kDeprecatedAccelerators[] = { | |
| 196 {true, ui::VKEY_L, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, LOCK_SCREEN}, | |
| 197 {true, ui::VKEY_ESCAPE, ui::EF_SHIFT_DOWN, SHOW_TASK_MANAGER}}; | |
| 198 | |
| 199 const size_t kDeprecatedAcceleratorsLength = arraysize(kDeprecatedAccelerators); | |
| 200 | |
| 201 const DeprecatedAcceleratorData kDeprecatedAcceleratorsData[] = { | |
| 202 { | |
| 203 LOCK_SCREEN, "Ash.Accelerators.Deprecated.LockScreen", | |
| 204 IDS_DEPRECATED_LOCK_SCREEN_MSG, IDS_SHORTCUT_LOCK_SCREEN_OLD, | |
| 205 IDS_SHORTCUT_LOCK_SCREEN_NEW, | |
| 206 false // Old accelerator was disabled in M56. | |
| 207 }, | |
| 208 {SHOW_TASK_MANAGER, "Ash.Accelerators.Deprecated.ShowTaskManager", | |
| 209 IDS_DEPRECATED_SHOW_TASK_MANAGER_MSG, IDS_SHORTCUT_TASK_MANAGER_OLD, | |
| 210 IDS_SHORTCUT_TASK_MANAGER_NEW, true}}; | |
| 211 | |
| 212 const size_t kDeprecatedAcceleratorsDataLength = | |
| 213 arraysize(kDeprecatedAcceleratorsData); | |
| 214 | |
| 215 const AcceleratorData kDebugAcceleratorData[] = { | |
| 216 {true, ui::VKEY_N, kDebugModifier, TOGGLE_WIFI}, | |
| 217 {true, ui::VKEY_O, kDebugModifier, DEBUG_SHOW_TOAST}, | |
| 218 {true, ui::VKEY_P, ui::EF_COMMAND_DOWN | ui::EF_SHIFT_DOWN, | |
| 219 DEBUG_TOGGLE_TOUCH_PAD}, | |
| 220 {true, ui::VKEY_T, ui::EF_COMMAND_DOWN | ui::EF_SHIFT_DOWN, | |
| 221 DEBUG_TOGGLE_TOUCH_SCREEN}, | |
| 222 {true, ui::VKEY_T, kDebugModifier, DEBUG_TOGGLE_TOUCH_VIEW}, | |
| 223 {true, ui::VKEY_B, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 224 DEBUG_TOGGLE_WALLPAPER_MODE}, | |
| 225 {true, ui::VKEY_L, kDebugModifier, DEBUG_PRINT_LAYER_HIERARCHY}, | |
| 226 {true, ui::VKEY_V, kDebugModifier, DEBUG_PRINT_VIEW_HIERARCHY}, | |
| 227 {true, ui::VKEY_W, kDebugModifier, DEBUG_PRINT_WINDOW_HIERARCHY}, | |
| 228 {true, ui::VKEY_D, kDebugModifier, DEBUG_TOGGLE_DEVICE_SCALE_FACTOR}, | |
| 229 {true, ui::VKEY_B, kDebugModifier, DEBUG_TOGGLE_SHOW_DEBUG_BORDERS}, | |
| 230 {true, ui::VKEY_F, kDebugModifier, DEBUG_TOGGLE_SHOW_FPS_COUNTER}, | |
| 231 {true, ui::VKEY_P, kDebugModifier, DEBUG_TOGGLE_SHOW_PAINT_RECTS}, | |
| 232 {true, ui::VKEY_K, kDebugModifier, DEBUG_TRIGGER_CRASH}, | |
| 233 }; | |
| 234 | |
| 235 const size_t kDebugAcceleratorDataLength = arraysize(kDebugAcceleratorData); | |
| 236 | |
| 237 const AcceleratorData kDeveloperAcceleratorData[] = { | |
| 238 // Extra shortcut for debug build to control magnifier on Linux desktop. | |
| 239 {true, ui::VKEY_BRIGHTNESS_DOWN, ui::EF_CONTROL_DOWN, | |
| 240 MAGNIFY_SCREEN_ZOOM_OUT}, | |
| 241 {true, ui::VKEY_BRIGHTNESS_UP, ui::EF_CONTROL_DOWN, MAGNIFY_SCREEN_ZOOM_IN}, | |
| 242 // Extra shortcuts to lock the screen on Linux desktop. | |
| 243 {true, ui::VKEY_L, ui::EF_ALT_DOWN, LOCK_PRESSED}, | |
| 244 {false, ui::VKEY_L, ui::EF_ALT_DOWN, LOCK_RELEASED}, | |
| 245 {true, ui::VKEY_P, ui::EF_ALT_DOWN, POWER_PRESSED}, | |
| 246 {false, ui::VKEY_P, ui::EF_ALT_DOWN, POWER_RELEASED}, | |
| 247 {true, ui::VKEY_POWER, ui::EF_SHIFT_DOWN, LOCK_PRESSED}, | |
| 248 {false, ui::VKEY_POWER, ui::EF_SHIFT_DOWN, LOCK_RELEASED}, | |
| 249 {true, ui::VKEY_D, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, | |
| 250 DEV_ADD_REMOVE_DISPLAY}, | |
| 251 {true, ui::VKEY_J, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, | |
| 252 DEV_TOGGLE_UNIFIED_DESKTOP}, | |
| 253 {true, ui::VKEY_M, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, | |
| 254 TOGGLE_MIRROR_MODE}, | |
| 255 {true, ui::VKEY_W, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, TOGGLE_WIFI}, | |
| 256 // Extra shortcut for display swapping as Alt-F4 is taken on Linux desktop. | |
| 257 {true, ui::VKEY_S, kDebugModifier, SWAP_PRIMARY_DISPLAY}, | |
| 258 // Extra shortcut to rotate/scale up/down the screen on Linux desktop. | |
| 259 {true, ui::VKEY_R, kDebugModifier, ROTATE_SCREEN}, | |
| 260 // For testing on systems where Alt-Tab is already mapped. | |
| 261 {true, ui::VKEY_W, ui::EF_ALT_DOWN, CYCLE_FORWARD_MRU}, | |
| 262 {true, ui::VKEY_F11, ui::EF_CONTROL_DOWN, | |
| 263 DEV_TOGGLE_ROOT_WINDOW_FULL_SCREEN}, | |
| 264 {true, ui::VKEY_W, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, CYCLE_BACKWARD_MRU}, | |
| 265 {true, ui::VKEY_F, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, | |
| 266 TOGGLE_FULLSCREEN}, | |
| 267 }; | |
| 268 | |
| 269 const size_t kDeveloperAcceleratorDataLength = | |
| 270 arraysize(kDeveloperAcceleratorData); | |
| 271 | |
| 272 const AcceleratorAction kPreferredActions[] = { | |
| 273 // Window cycling accelerators. | |
| 274 CYCLE_BACKWARD_MRU, // Shift+Alt+Tab | |
| 275 CYCLE_FORWARD_MRU, // Alt+Tab | |
| 276 }; | |
| 277 | |
| 278 const size_t kPreferredActionsLength = arraysize(kPreferredActions); | |
| 279 | |
| 280 const AcceleratorAction kReservedActions[] = { | |
| 281 POWER_PRESSED, POWER_RELEASED, SUSPEND, | |
| 282 }; | |
| 283 | |
| 284 const size_t kReservedActionsLength = arraysize(kReservedActions); | |
| 285 | |
| 286 const AcceleratorAction kActionsAllowedAtLoginOrLockScreen[] = { | |
| 287 BRIGHTNESS_DOWN, | |
| 288 BRIGHTNESS_UP, | |
| 289 DEBUG_PRINT_LAYER_HIERARCHY, | |
| 290 DEBUG_PRINT_VIEW_HIERARCHY, | |
| 291 DEBUG_PRINT_WINDOW_HIERARCHY, | |
| 292 DEBUG_TOGGLE_TOUCH_PAD, | |
| 293 DEBUG_TOGGLE_TOUCH_SCREEN, | |
| 294 DEBUG_TOGGLE_TOUCH_VIEW, | |
| 295 DEV_ADD_REMOVE_DISPLAY, | |
| 296 DISABLE_CAPS_LOCK, | |
| 297 KEYBOARD_BRIGHTNESS_DOWN, | |
| 298 KEYBOARD_BRIGHTNESS_UP, | |
| 299 MAGNIFY_SCREEN_ZOOM_IN, // Control+F7 | |
| 300 MAGNIFY_SCREEN_ZOOM_OUT, // Control+F6 | |
| 301 NEXT_IME, | |
| 302 PREVIOUS_IME, | |
| 303 PRINT_UI_HIERARCHIES, | |
| 304 ROTATE_SCREEN, | |
| 305 SCALE_UI_DOWN, | |
| 306 SCALE_UI_RESET, | |
| 307 SCALE_UI_UP, | |
| 308 SHOW_IME_MENU_BUBBLE, | |
| 309 SHOW_SYSTEM_TRAY_BUBBLE, | |
| 310 SWITCH_IME, // Switch to another IME depending on the accelerator. | |
| 311 TAKE_PARTIAL_SCREENSHOT, | |
| 312 TAKE_SCREENSHOT, | |
| 313 TAKE_WINDOW_SCREENSHOT, | |
| 314 TOGGLE_CAPS_LOCK, | |
| 315 TOGGLE_HIGH_CONTRAST, | |
| 316 TOGGLE_MIRROR_MODE, | |
| 317 TOGGLE_SPOKEN_FEEDBACK, | |
| 318 TOGGLE_WIFI, | |
| 319 TOUCH_HUD_CLEAR, | |
| 320 VOLUME_DOWN, | |
| 321 VOLUME_MUTE, | |
| 322 VOLUME_UP, | |
| 323 #if !defined(NDEBUG) | |
| 324 POWER_PRESSED, | |
| 325 POWER_RELEASED, | |
| 326 #endif // !defined(NDEBUG) | |
| 327 }; | |
| 328 | |
| 329 const size_t kActionsAllowedAtLoginOrLockScreenLength = | |
| 330 arraysize(kActionsAllowedAtLoginOrLockScreen); | |
| 331 | |
| 332 const AcceleratorAction kActionsAllowedAtLockScreen[] = { | |
| 333 EXIT, SUSPEND, | |
| 334 }; | |
| 335 | |
| 336 const size_t kActionsAllowedAtLockScreenLength = | |
| 337 arraysize(kActionsAllowedAtLockScreen); | |
| 338 | |
| 339 const AcceleratorAction kActionsAllowedAtModalWindow[] = { | |
| 340 BRIGHTNESS_DOWN, | |
| 341 BRIGHTNESS_UP, | |
| 342 DEBUG_TOGGLE_TOUCH_PAD, | |
| 343 DEBUG_TOGGLE_TOUCH_SCREEN, | |
| 344 DEV_ADD_REMOVE_DISPLAY, | |
| 345 DISABLE_CAPS_LOCK, | |
| 346 EXIT, | |
| 347 KEYBOARD_BRIGHTNESS_DOWN, | |
| 348 KEYBOARD_BRIGHTNESS_UP, | |
| 349 LOCK_SCREEN, | |
| 350 MAGNIFY_SCREEN_ZOOM_IN, | |
| 351 MAGNIFY_SCREEN_ZOOM_OUT, | |
| 352 MEDIA_NEXT_TRACK, | |
| 353 MEDIA_PLAY_PAUSE, | |
| 354 MEDIA_PREV_TRACK, | |
| 355 NEXT_IME, | |
| 356 OPEN_FEEDBACK_PAGE, | |
| 357 POWER_PRESSED, | |
| 358 POWER_RELEASED, | |
| 359 PREVIOUS_IME, | |
| 360 PRINT_UI_HIERARCHIES, | |
| 361 ROTATE_SCREEN, | |
| 362 SCALE_UI_DOWN, | |
| 363 SCALE_UI_RESET, | |
| 364 SCALE_UI_UP, | |
| 365 SHOW_IME_MENU_BUBBLE, | |
| 366 SHOW_KEYBOARD_OVERLAY, | |
| 367 SUSPEND, | |
| 368 SWAP_PRIMARY_DISPLAY, | |
| 369 SWITCH_IME, | |
| 370 TAKE_PARTIAL_SCREENSHOT, | |
| 371 TAKE_SCREENSHOT, | |
| 372 TAKE_WINDOW_SCREENSHOT, | |
| 373 TOGGLE_CAPS_LOCK, | |
| 374 TOGGLE_HIGH_CONTRAST, | |
| 375 TOGGLE_MIRROR_MODE, | |
| 376 TOGGLE_SPOKEN_FEEDBACK, | |
| 377 TOGGLE_WIFI, | |
| 378 VOLUME_DOWN, | |
| 379 VOLUME_MUTE, | |
| 380 VOLUME_UP, | |
| 381 }; | |
| 382 | |
| 383 const size_t kActionsAllowedAtModalWindowLength = | |
| 384 arraysize(kActionsAllowedAtModalWindow); | |
| 385 | |
| 386 const AcceleratorAction kRepeatableActions[] = { | |
| 387 BRIGHTNESS_DOWN, | |
| 388 BRIGHTNESS_UP, | |
| 389 FOCUS_NEXT_PANE, | |
| 390 FOCUS_PREVIOUS_PANE, | |
| 391 KEYBOARD_BRIGHTNESS_DOWN, | |
| 392 KEYBOARD_BRIGHTNESS_UP, | |
| 393 MAGNIFY_SCREEN_ZOOM_IN, | |
| 394 MAGNIFY_SCREEN_ZOOM_OUT, | |
| 395 MEDIA_NEXT_TRACK, | |
| 396 MEDIA_PREV_TRACK, | |
| 397 RESTORE_TAB, | |
| 398 VOLUME_DOWN, | |
| 399 VOLUME_UP, | |
| 400 }; | |
| 401 | |
| 402 const size_t kRepeatableActionsLength = arraysize(kRepeatableActions); | |
| 403 | |
| 404 const AcceleratorAction kActionsAllowedInAppModeOrPinnedMode[] = { | |
| 405 BRIGHTNESS_DOWN, | |
| 406 BRIGHTNESS_UP, | |
| 407 DEBUG_PRINT_LAYER_HIERARCHY, | |
| 408 DEBUG_PRINT_VIEW_HIERARCHY, | |
| 409 DEBUG_PRINT_WINDOW_HIERARCHY, | |
| 410 DEBUG_TOGGLE_TOUCH_PAD, | |
| 411 DEBUG_TOGGLE_TOUCH_SCREEN, | |
| 412 DEV_ADD_REMOVE_DISPLAY, | |
| 413 DISABLE_CAPS_LOCK, | |
| 414 KEYBOARD_BRIGHTNESS_DOWN, | |
| 415 KEYBOARD_BRIGHTNESS_UP, | |
| 416 MAGNIFY_SCREEN_ZOOM_IN, // Control+F7 | |
| 417 MAGNIFY_SCREEN_ZOOM_OUT, // Control+F6 | |
| 418 MEDIA_NEXT_TRACK, | |
| 419 MEDIA_PLAY_PAUSE, | |
| 420 MEDIA_PREV_TRACK, | |
| 421 NEXT_IME, | |
| 422 POWER_PRESSED, | |
| 423 POWER_RELEASED, | |
| 424 PREVIOUS_IME, | |
| 425 PRINT_UI_HIERARCHIES, | |
| 426 ROTATE_SCREEN, | |
| 427 SCALE_UI_DOWN, | |
| 428 SCALE_UI_RESET, | |
| 429 SCALE_UI_UP, | |
| 430 SWAP_PRIMARY_DISPLAY, | |
| 431 SWITCH_IME, // Switch to another IME depending on the accelerator. | |
| 432 TOGGLE_CAPS_LOCK, | |
| 433 TOGGLE_HIGH_CONTRAST, | |
| 434 TOGGLE_MIRROR_MODE, | |
| 435 TOGGLE_SPOKEN_FEEDBACK, | |
| 436 TOGGLE_WIFI, | |
| 437 TOUCH_HUD_CLEAR, | |
| 438 VOLUME_DOWN, | |
| 439 VOLUME_MUTE, | |
| 440 VOLUME_UP, | |
| 441 }; | |
| 442 | |
| 443 const size_t kActionsAllowedInAppModeOrPinnedModeLength = | |
| 444 arraysize(kActionsAllowedInAppModeOrPinnedMode); | |
| 445 | |
| 446 const AcceleratorAction kActionsAllowedInPinnedMode[] = { | |
| 447 LOCK_SCREEN, | |
| 448 SUSPEND, | |
| 449 TAKE_PARTIAL_SCREENSHOT, | |
| 450 TAKE_SCREENSHOT, | |
| 451 TAKE_WINDOW_SCREENSHOT, | |
| 452 UNPIN, | |
| 453 }; | |
| 454 | |
| 455 const size_t kActionsAllowedInPinnedModeLength = | |
| 456 arraysize(kActionsAllowedInPinnedMode); | |
| 457 | |
| 458 const AcceleratorAction kActionsNeedingWindow[] = { | |
| 459 CYCLE_BACKWARD_MRU, | |
| 460 CYCLE_FORWARD_MRU, | |
| 461 TOGGLE_OVERVIEW, | |
| 462 WINDOW_CYCLE_SNAP_DOCK_LEFT, | |
| 463 WINDOW_CYCLE_SNAP_DOCK_RIGHT, | |
| 464 WINDOW_MINIMIZE, | |
| 465 TOGGLE_FULLSCREEN, | |
| 466 TOGGLE_MAXIMIZED, | |
| 467 WINDOW_POSITION_CENTER, | |
| 468 ROTATE_WINDOW, | |
| 469 }; | |
| 470 | |
| 471 const size_t kActionsNeedingWindowLength = arraysize(kActionsNeedingWindow); | |
| 472 | |
| 473 const AcceleratorAction kActionsKeepingMenuOpen[] = { | |
| 474 BRIGHTNESS_DOWN, | |
| 475 BRIGHTNESS_UP, | |
| 476 DEBUG_TOGGLE_TOUCH_PAD, | |
| 477 DEBUG_TOGGLE_TOUCH_SCREEN, | |
| 478 DISABLE_CAPS_LOCK, | |
| 479 KEYBOARD_BRIGHTNESS_DOWN, | |
| 480 KEYBOARD_BRIGHTNESS_UP, | |
| 481 MEDIA_NEXT_TRACK, | |
| 482 MEDIA_PLAY_PAUSE, | |
| 483 MEDIA_PREV_TRACK, | |
| 484 NEXT_IME, | |
| 485 PREVIOUS_IME, | |
| 486 PRINT_UI_HIERARCHIES, | |
| 487 SWITCH_IME, | |
| 488 TAKE_PARTIAL_SCREENSHOT, | |
| 489 TAKE_SCREENSHOT, | |
| 490 TAKE_WINDOW_SCREENSHOT, | |
| 491 TOGGLE_APP_LIST, | |
| 492 TOGGLE_CAPS_LOCK, | |
| 493 TOGGLE_HIGH_CONTRAST, | |
| 494 TOGGLE_SPOKEN_FEEDBACK, | |
| 495 TOGGLE_WIFI, | |
| 496 VOLUME_DOWN, | |
| 497 VOLUME_MUTE, | |
| 498 VOLUME_UP, | |
| 499 }; | |
| 500 | |
| 501 const size_t kActionsKeepingMenuOpenLength = arraysize(kActionsKeepingMenuOpen); | |
| 502 | |
| 503 } // namespace ash | |
| OLD | NEW |