OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/views/accelerator_table.h" | 5 #include "chrome/browser/ui/views/accelerator_table.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "chrome/app/chrome_command_ids.h" | 8 #include "chrome/app/chrome_command_ids.h" |
9 #include "ui/base/accelerators/accelerator.h" | 9 #include "ui/base/accelerators/accelerator.h" |
10 #include "ui/events/event_constants.h" | 10 #include "ui/events/event_constants.h" |
11 | 11 |
12 #if defined(USE_ASH) | 12 #if defined(USE_ASH) |
13 #include "ash/accelerators/accelerator_table.h" | 13 #include "ash/accelerators/accelerator_table.h" |
14 #endif | 14 #endif |
15 | 15 |
16 namespace chrome { | 16 namespace chrome { |
17 namespace { | 17 namespace { |
18 | 18 |
| 19 // For many commands, the Mac equivalent uses Cmd instead of Ctrl. We only need |
| 20 // to list the ones that do not have a key equivalent in the main menu, i.e. |
| 21 // only the ones in global_keyboard_shortcuts_mac.mm. |
| 22 // TODO(jackhou): If-def out the accelerators that should not be on Mac. |
| 23 #if defined(OS_MACOSX) |
| 24 const ui::EventFlags kPlatformModifier = ui::EF_COMMAND_DOWN; |
| 25 #else |
| 26 const ui::EventFlags kPlatformModifier = ui::EF_CONTROL_DOWN; |
| 27 #endif |
| 28 |
19 // NOTE: Keep this list in the same (mostly-alphabetical) order as | 29 // NOTE: Keep this list in the same (mostly-alphabetical) order as |
20 // the Windows accelerators in ../../app/chrome_dll.rc. | 30 // the Windows accelerators in ../../app/chrome_dll.rc. |
21 // Do not use Ctrl-Alt as a shortcut modifier, as it is used by i18n keyboards: | 31 // Do not use Ctrl-Alt as a shortcut modifier, as it is used by i18n keyboards: |
22 // http://blogs.msdn.com/b/oldnewthing/archive/2004/03/29/101121.aspx | 32 // http://blogs.msdn.com/b/oldnewthing/archive/2004/03/29/101121.aspx |
23 const AcceleratorMapping kAcceleratorMap[] = { | 33 const AcceleratorMapping kAcceleratorMap[] = { |
24 { ui::VKEY_LEFT, ui::EF_ALT_DOWN, IDC_BACK }, | 34 { ui::VKEY_LEFT, ui::EF_ALT_DOWN, IDC_BACK }, |
25 { ui::VKEY_BACK, ui::EF_NONE, IDC_BACK }, | 35 { ui::VKEY_BACK, ui::EF_NONE, IDC_BACK }, |
26 { ui::VKEY_D, ui::EF_CONTROL_DOWN, IDC_BOOKMARK_PAGE }, | 36 { ui::VKEY_D, ui::EF_CONTROL_DOWN, IDC_BOOKMARK_PAGE }, |
27 { ui::VKEY_D, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, | 37 { ui::VKEY_D, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, |
28 IDC_BOOKMARK_ALL_TABS }, | 38 IDC_BOOKMARK_ALL_TABS }, |
(...skipping 20 matching lines...) Expand all Loading... |
49 { ui::VKEY_O, ui::EF_CONTROL_DOWN, IDC_OPEN_FILE }, | 59 { ui::VKEY_O, ui::EF_CONTROL_DOWN, IDC_OPEN_FILE }, |
50 { ui::VKEY_P, ui::EF_CONTROL_DOWN, IDC_PRINT}, | 60 { ui::VKEY_P, ui::EF_CONTROL_DOWN, IDC_PRINT}, |
51 #if defined(ENABLE_BASIC_PRINTING) | 61 #if defined(ENABLE_BASIC_PRINTING) |
52 { ui::VKEY_P, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_BASIC_PRINT}, | 62 { ui::VKEY_P, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_BASIC_PRINT}, |
53 #endif // ENABLE_BASIC_PRINTING | 63 #endif // ENABLE_BASIC_PRINTING |
54 { ui::VKEY_R, ui::EF_CONTROL_DOWN, IDC_RELOAD }, | 64 { ui::VKEY_R, ui::EF_CONTROL_DOWN, IDC_RELOAD }, |
55 { ui::VKEY_R, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, | 65 { ui::VKEY_R, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, |
56 IDC_RELOAD_IGNORING_CACHE }, | 66 IDC_RELOAD_IGNORING_CACHE }, |
57 { ui::VKEY_HOME, ui::EF_ALT_DOWN, IDC_HOME }, | 67 { ui::VKEY_HOME, ui::EF_ALT_DOWN, IDC_HOME }, |
58 { ui::VKEY_S, ui::EF_CONTROL_DOWN, IDC_SAVE_PAGE }, | 68 { ui::VKEY_S, ui::EF_CONTROL_DOWN, IDC_SAVE_PAGE }, |
59 { ui::VKEY_9, ui::EF_CONTROL_DOWN, IDC_SELECT_LAST_TAB }, | 69 { ui::VKEY_9, kPlatformModifier, IDC_SELECT_LAST_TAB }, |
60 { ui::VKEY_NUMPAD9, ui::EF_CONTROL_DOWN, IDC_SELECT_LAST_TAB }, | 70 { ui::VKEY_NUMPAD9, kPlatformModifier, IDC_SELECT_LAST_TAB }, |
61 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) | 71 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
62 { ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB }, | 72 { ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB }, |
63 { ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB }, | 73 { ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB }, |
64 { ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT }, | 74 { ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT }, |
65 { ui::VKEY_PRIOR, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, | 75 { ui::VKEY_PRIOR, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, |
66 IDC_MOVE_TAB_PREVIOUS }, | 76 IDC_MOVE_TAB_PREVIOUS }, |
67 #endif | 77 #endif |
68 { ui::VKEY_TAB, ui::EF_CONTROL_DOWN, IDC_SELECT_NEXT_TAB }, | 78 { ui::VKEY_TAB, ui::EF_CONTROL_DOWN, IDC_SELECT_NEXT_TAB }, |
69 { ui::VKEY_NEXT, ui::EF_CONTROL_DOWN, IDC_SELECT_NEXT_TAB }, | 79 { ui::VKEY_NEXT, ui::EF_CONTROL_DOWN, IDC_SELECT_NEXT_TAB }, |
70 { ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, | 80 { ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, |
71 IDC_SELECT_PREVIOUS_TAB }, | 81 IDC_SELECT_PREVIOUS_TAB }, |
72 { ui::VKEY_PRIOR, ui::EF_CONTROL_DOWN, IDC_SELECT_PREVIOUS_TAB }, | 82 { ui::VKEY_PRIOR, ui::EF_CONTROL_DOWN, IDC_SELECT_PREVIOUS_TAB }, |
73 { ui::VKEY_1, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_0 }, | 83 { ui::VKEY_1, kPlatformModifier, IDC_SELECT_TAB_0 }, |
74 { ui::VKEY_NUMPAD1, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_0 }, | 84 { ui::VKEY_NUMPAD1, kPlatformModifier, IDC_SELECT_TAB_0 }, |
75 { ui::VKEY_2, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_1 }, | 85 { ui::VKEY_2, kPlatformModifier, IDC_SELECT_TAB_1 }, |
76 { ui::VKEY_NUMPAD2, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_1 }, | 86 { ui::VKEY_NUMPAD2, kPlatformModifier, IDC_SELECT_TAB_1 }, |
77 { ui::VKEY_3, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_2 }, | 87 { ui::VKEY_3, kPlatformModifier, IDC_SELECT_TAB_2 }, |
78 { ui::VKEY_NUMPAD3, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_2 }, | 88 { ui::VKEY_NUMPAD3, kPlatformModifier, IDC_SELECT_TAB_2 }, |
79 { ui::VKEY_4, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_3 }, | 89 { ui::VKEY_4, kPlatformModifier, IDC_SELECT_TAB_3 }, |
80 { ui::VKEY_NUMPAD4, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_3 }, | 90 { ui::VKEY_NUMPAD4, kPlatformModifier, IDC_SELECT_TAB_3 }, |
81 { ui::VKEY_5, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_4 }, | 91 { ui::VKEY_5, kPlatformModifier, IDC_SELECT_TAB_4 }, |
82 { ui::VKEY_NUMPAD5, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_4 }, | 92 { ui::VKEY_NUMPAD5, kPlatformModifier, IDC_SELECT_TAB_4 }, |
83 { ui::VKEY_6, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_5 }, | 93 { ui::VKEY_6, kPlatformModifier, IDC_SELECT_TAB_5 }, |
84 { ui::VKEY_NUMPAD6, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_5 }, | 94 { ui::VKEY_NUMPAD6, kPlatformModifier, IDC_SELECT_TAB_5 }, |
85 { ui::VKEY_7, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_6 }, | 95 { ui::VKEY_7, kPlatformModifier, IDC_SELECT_TAB_6 }, |
86 { ui::VKEY_NUMPAD7, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_6 }, | 96 { ui::VKEY_NUMPAD7, kPlatformModifier, IDC_SELECT_TAB_6 }, |
87 { ui::VKEY_8, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_7 }, | 97 { ui::VKEY_8, kPlatformModifier, IDC_SELECT_TAB_7 }, |
88 { ui::VKEY_NUMPAD8, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_7 }, | 98 { ui::VKEY_NUMPAD8, kPlatformModifier, IDC_SELECT_TAB_7 }, |
89 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) | 99 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
90 { ui::VKEY_1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0 }, | 100 { ui::VKEY_1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0 }, |
91 { ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0 }, | 101 { ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0 }, |
92 { ui::VKEY_2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1 }, | 102 { ui::VKEY_2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1 }, |
93 { ui::VKEY_NUMPAD2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1 }, | 103 { ui::VKEY_NUMPAD2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1 }, |
94 { ui::VKEY_3, ui::EF_ALT_DOWN, IDC_SELECT_TAB_2 }, | 104 { ui::VKEY_3, ui::EF_ALT_DOWN, IDC_SELECT_TAB_2 }, |
95 { ui::VKEY_NUMPAD3, ui::EF_ALT_DOWN, IDC_SELECT_TAB_2 }, | 105 { ui::VKEY_NUMPAD3, ui::EF_ALT_DOWN, IDC_SELECT_TAB_2 }, |
96 { ui::VKEY_4, ui::EF_ALT_DOWN, IDC_SELECT_TAB_3 }, | 106 { ui::VKEY_4, ui::EF_ALT_DOWN, IDC_SELECT_TAB_3 }, |
97 { ui::VKEY_NUMPAD4, ui::EF_ALT_DOWN, IDC_SELECT_TAB_3 }, | 107 { ui::VKEY_NUMPAD4, ui::EF_ALT_DOWN, IDC_SELECT_TAB_3 }, |
98 { ui::VKEY_5, ui::EF_ALT_DOWN, IDC_SELECT_TAB_4 }, | 108 { ui::VKEY_5, ui::EF_ALT_DOWN, IDC_SELECT_TAB_4 }, |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 IDC_TOUCH_HUD_PROJECTION_TOGGLE }, | 170 IDC_TOUCH_HUD_PROJECTION_TOGGLE }, |
161 #else // OS_CHROMEOS | 171 #else // OS_CHROMEOS |
162 { ui::VKEY_DELETE, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, | 172 { ui::VKEY_DELETE, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, |
163 IDC_CLEAR_BROWSING_DATA }, | 173 IDC_CLEAR_BROWSING_DATA }, |
164 { ui::VKEY_LMENU, ui::EF_NONE, IDC_FOCUS_MENU_BAR }, | 174 { ui::VKEY_LMENU, ui::EF_NONE, IDC_FOCUS_MENU_BAR }, |
165 { ui::VKEY_MENU, ui::EF_NONE, IDC_FOCUS_MENU_BAR }, | 175 { ui::VKEY_MENU, ui::EF_NONE, IDC_FOCUS_MENU_BAR }, |
166 { ui::VKEY_RMENU, ui::EF_NONE, IDC_FOCUS_MENU_BAR }, | 176 { ui::VKEY_RMENU, ui::EF_NONE, IDC_FOCUS_MENU_BAR }, |
167 // On Windows, all VKEY_BROWSER_* keys except VKEY_BROWSER_SEARCH are handled | 177 // On Windows, all VKEY_BROWSER_* keys except VKEY_BROWSER_SEARCH are handled |
168 // via WM_APPCOMMAND. | 178 // via WM_APPCOMMAND. |
169 { ui::VKEY_BROWSER_SEARCH, ui::EF_NONE, IDC_FOCUS_SEARCH }, | 179 { ui::VKEY_BROWSER_SEARCH, ui::EF_NONE, IDC_FOCUS_SEARCH }, |
170 { ui::VKEY_M, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_SHOW_AVATAR_MENU}, | 180 { ui::VKEY_M, ui::EF_SHIFT_DOWN | kPlatformModifier, IDC_SHOW_AVATAR_MENU}, |
171 // On ChromeOS, these keys are assigned to change UI scale. | 181 // On ChromeOS, these keys are assigned to change UI scale. |
172 { ui::VKEY_OEM_PLUS, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_ZOOM_PLUS }, | 182 { ui::VKEY_OEM_PLUS, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_ZOOM_PLUS }, |
173 { ui::VKEY_OEM_MINUS, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, | 183 { ui::VKEY_OEM_MINUS, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, |
174 IDC_ZOOM_MINUS }, | 184 IDC_ZOOM_MINUS }, |
175 // For each entry here add an entry into kChromeCmdId2AshActionId below | 185 // For each entry here add an entry into kChromeCmdId2AshActionId below |
176 // if Ash has a corresponding accelerator. | 186 // if Ash has a corresponding accelerator. |
177 #if defined(GOOGLE_CHROME_BUILD) | 187 #if defined(GOOGLE_CHROME_BUILD) |
178 { ui::VKEY_I, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, IDC_FEEDBACK }, | 188 { ui::VKEY_I, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, IDC_FEEDBACK }, |
179 #endif | 189 #endif |
180 { ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_EXIT }, | 190 { ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_EXIT }, |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 *accelerator = ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN); | 264 *accelerator = ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN); |
255 return true; | 265 return true; |
256 case IDC_PASTE: | 266 case IDC_PASTE: |
257 *accelerator = ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN); | 267 *accelerator = ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN); |
258 return true; | 268 return true; |
259 } | 269 } |
260 return false; | 270 return false; |
261 } | 271 } |
262 | 272 |
263 } // namespace chrome | 273 } // namespace chrome |
OLD | NEW |