Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: ash/accelerators/accelerator_table.cc

Issue 10155015: Process all global shortcuts for Ash after InputMethodEventFilter (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase, address comments Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "ash/accelerators/accelerator_table.h" 5 #include "ash/accelerators/accelerator_table.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 8
9 namespace ash { 9 namespace ash {
10 10
11 const AcceleratorData kAcceleratorData[] = { 11 const AcceleratorData kAcceleratorData[] = {
12 // EventType, KeyboardCode, shift, control, alt, AcceleratorAction 12 // trigger_on_press, KeyboardCode, shift, control, alt, AcceleratorAction
13 13
14 // Accelerators that should be processed before a key is sent to an IME. 14 { false, ui::VKEY_MENU, true, false, true, NEXT_IME },
15 { ui::ET_KEY_RELEASED, ui::VKEY_MENU, true, false, true, NEXT_IME }, 15 { false, ui::VKEY_SHIFT, true, false, true, NEXT_IME },
16 { ui::ET_KEY_RELEASED, ui::VKEY_SHIFT, true, false, true, NEXT_IME }, 16 { true, ui::VKEY_SPACE, false, true, false, PREVIOUS_IME },
17 { ui::ET_KEY_PRESSED, ui::VKEY_SPACE, false, true, false, PREVIOUS_IME },
18 // Shortcuts for Japanese IME. 17 // Shortcuts for Japanese IME.
19 { ui::ET_KEY_PRESSED, ui::VKEY_CONVERT, false, false, false, SWITCH_IME }, 18 { true, ui::VKEY_CONVERT, false, false, false, SWITCH_IME },
20 { ui::ET_KEY_PRESSED, ui::VKEY_NONCONVERT, false, false, false, SWITCH_IME }, 19 { true, ui::VKEY_NONCONVERT, false, false, false, SWITCH_IME },
21 { ui::ET_KEY_PRESSED, ui::VKEY_DBE_SBCSCHAR, false, false, false, 20 { true, ui::VKEY_DBE_SBCSCHAR, false, false, false, SWITCH_IME },
22 SWITCH_IME }, 21 { true, ui::VKEY_DBE_DBCSCHAR, false, false, false, SWITCH_IME },
23 { ui::ET_KEY_PRESSED, ui::VKEY_DBE_DBCSCHAR, false, false, false,
24 SWITCH_IME },
25 // Shortcuts for Koren IME. 22 // Shortcuts for Koren IME.
26 { ui::ET_KEY_PRESSED, ui::VKEY_HANGUL, false, false, false, SWITCH_IME }, 23 { true, ui::VKEY_HANGUL, false, false, false, SWITCH_IME },
27 { ui::ET_KEY_PRESSED, ui::VKEY_SPACE, true, false, false, SWITCH_IME }, 24 { true, ui::VKEY_SPACE, true, false, false, SWITCH_IME },
28 25
29 // Accelerators that should be processed after a key is sent to an IME. 26 { true, ui::VKEY_TAB, false, false, true, CYCLE_FORWARD_MRU },
30 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_TAB, false, false, true, 27 { true, ui::VKEY_TAB, true, false, true, CYCLE_BACKWARD_MRU },
31 CYCLE_FORWARD_MRU }, 28 { true, ui::VKEY_F5, false, false, false, CYCLE_FORWARD_LINEAR },
32 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_TAB, true, false, true,
33 CYCLE_BACKWARD_MRU },
34 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F5, false, false, false,
35 CYCLE_FORWARD_LINEAR },
36 #if defined(OS_CHROMEOS) 29 #if defined(OS_CHROMEOS)
37 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_BRIGHTNESS_DOWN, false, false, false, 30 { true, ui::VKEY_BRIGHTNESS_DOWN, false, false, false, BRIGHTNESS_DOWN },
38 BRIGHTNESS_DOWN }, 31 { true, ui::VKEY_BRIGHTNESS_UP, false, false, false, BRIGHTNESS_UP },
39 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_BRIGHTNESS_UP, false, false, false, 32 { true, ui::VKEY_L, true, true, false, LOCK_SCREEN },
40 BRIGHTNESS_UP }, 33 { true, ui::VKEY_M, false, true, false, OPEN_FILE_MANAGER },
41 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_L, true, true, false, LOCK_SCREEN }, 34 { true, ui::VKEY_T, false, true, true, OPEN_CROSH },
42 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_M, false, true, false,
43 OPEN_FILE_MANAGER },
44 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_T, false, true, true, OPEN_CROSH },
45 #endif 35 #endif
46 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_Q, true, true, false, EXIT }, 36 { true, ui::VKEY_Q, true, true, false, EXIT },
47 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_N, true, true, false, 37 { true, ui::VKEY_N, true, true, false, NEW_INCOGNITO_WINDOW },
48 NEW_INCOGNITO_WINDOW }, 38 { true, ui::VKEY_N, false, true, false, NEW_WINDOW },
49 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_N, false, true, false, NEW_WINDOW }, 39 { true, ui::VKEY_F5, true, false, false, CYCLE_BACKWARD_LINEAR },
50 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F5, true, false, false, 40 { true, ui::VKEY_F5, false, true, false, TAKE_SCREENSHOT },
51 CYCLE_BACKWARD_LINEAR }, 41 { true, ui::VKEY_F5, true, true, false, TAKE_PARTIAL_SCREENSHOT },
52 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F5, false, true, false, 42 { true, ui::VKEY_PRINT, false, false, false, TAKE_SCREENSHOT },
53 TAKE_SCREENSHOT },
54 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F5, true, true, false,
55 TAKE_PARTIAL_SCREENSHOT },
56 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_PRINT, false, false, false,
57 TAKE_SCREENSHOT },
58 // On Chrome OS, Search key is mapped to LWIN. 43 // On Chrome OS, Search key is mapped to LWIN.
59 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_LWIN, false, false, false, 44 { true, ui::VKEY_LWIN, false, false, false, SEARCH_KEY },
60 SEARCH_KEY }, 45 { true, ui::VKEY_LWIN, true, false, false, TOGGLE_CAPS_LOCK },
61 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_LWIN, true, false, false, 46 { true, ui::VKEY_F6, false, false, false, BRIGHTNESS_DOWN },
62 TOGGLE_CAPS_LOCK }, 47 { true, ui::VKEY_F7, false, false, false, BRIGHTNESS_UP },
63 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F6, false, false, false, 48 { true, ui::VKEY_F8, false, false, false, VOLUME_MUTE },
64 BRIGHTNESS_DOWN }, 49 { true, ui::VKEY_VOLUME_MUTE, false, false, false, VOLUME_MUTE },
65 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F7, false, false, false, 50 { true, ui::VKEY_F9, false, false, false, VOLUME_DOWN },
66 BRIGHTNESS_UP }, 51 { true, ui::VKEY_VOLUME_DOWN, false, false, false, VOLUME_DOWN },
67 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F8, false, false, false, 52 { true, ui::VKEY_F10, false, false, false, VOLUME_UP },
68 VOLUME_MUTE }, 53 { true, ui::VKEY_VOLUME_UP, false, false, false, VOLUME_UP },
69 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_VOLUME_MUTE, false, false, false, 54 { true, ui::VKEY_L, true, false, true, FOCUS_LAUNCHER },
70 VOLUME_MUTE }, 55 { true, ui::VKEY_S, true, false, true, FOCUS_TRAY },
71 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F9, false, false, false, 56 { true, ui::VKEY_F1, true, true, false, SHOW_OAK },
72 VOLUME_DOWN }, 57 { true, ui::VKEY_1, false, false, true, SELECT_WIN_0 },
73 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_VOLUME_DOWN, false, false, false, 58 { true, ui::VKEY_2, false, false, true, SELECT_WIN_1 },
74 VOLUME_DOWN }, 59 { true, ui::VKEY_3, false, false, true, SELECT_WIN_2 },
75 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F10, false, false, false, VOLUME_UP }, 60 { true, ui::VKEY_4, false, false, true, SELECT_WIN_3 },
76 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_VOLUME_UP, false, false, false, 61 { true, ui::VKEY_5, false, false, true, SELECT_WIN_4 },
77 VOLUME_UP }, 62 { true, ui::VKEY_6, false, false, true, SELECT_WIN_5 },
78 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_L, true, false, true, 63 { true, ui::VKEY_7, false, false, true, SELECT_WIN_6 },
79 FOCUS_LAUNCHER }, 64 { true, ui::VKEY_8, false, false, true, SELECT_WIN_7 },
80 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_S, true, false, true, FOCUS_TRAY }, 65 { true, ui::VKEY_9, false, false, true, SELECT_LAST_WIN },
81 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F1, true, true, false, SHOW_OAK },
82 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_1, false, false, true,
83 SELECT_WIN_0 },
84 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_2, false, false, true,
85 SELECT_WIN_1 },
86 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_3, false, false, true,
87 SELECT_WIN_2 },
88 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_4, false, false, true,
89 SELECT_WIN_3 },
90 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_5, false, false, true,
91 SELECT_WIN_4 },
92 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_6, false, false, true,
93 SELECT_WIN_5 },
94 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_7, false, false, true,
95 SELECT_WIN_6 },
96 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_8, false, false, true,
97 SELECT_WIN_7 },
98 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_9, false, false, true,
99 SELECT_LAST_WIN },
100 66
101 // We need the number keys with and without shift since the French keyboard 67 // We need the number keys with and without shift since the French keyboard
102 // does not have explicit number keys. Instead they have to press 68 // does not have explicit number keys. Instead they have to press
103 // 'Shift' + .. to access the keys. If we ever have an overlap of 69 // 'Shift' + .. to access the keys. If we ever have an overlap of
104 // functionality, we should think about either assembling this table 70 // functionality, we should think about either assembling this table
105 // dynamically - or by decoding the keys properly (which is of course in 71 // dynamically - or by decoding the keys properly (which is of course in
106 // conflict with other keyboards since the Shift+ is missing then). 72 // conflict with other keyboards since the Shift+ is missing then).
107 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_1, true, false, true, 73 { true, ui::VKEY_1, true, false, true, SELECT_WIN_0 },
108 SELECT_WIN_0 }, 74 { true, ui::VKEY_2, true, false, true, SELECT_WIN_1 },
109 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_2, true, false, true, 75 { true, ui::VKEY_3, true, false, true, SELECT_WIN_2 },
110 SELECT_WIN_1 }, 76 { true, ui::VKEY_4, true, false, true, SELECT_WIN_3 },
111 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_3, true, false, true, 77 { true, ui::VKEY_5, true, false, true, SELECT_WIN_4 },
112 SELECT_WIN_2 }, 78 { true, ui::VKEY_6, true, false, true, SELECT_WIN_5 },
113 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_4, true, false, true, 79 { true, ui::VKEY_7, true, false, true, SELECT_WIN_6 },
114 SELECT_WIN_3 }, 80 { true, ui::VKEY_8, true, false, true, SELECT_WIN_7 },
115 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_5, true, false, true, 81 { true, ui::VKEY_9, true, false, true, SELECT_LAST_WIN },
116 SELECT_WIN_4 },
117 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_6, true, false, true,
118 SELECT_WIN_5 },
119 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_7, true, false, true,
120 SELECT_WIN_6 },
121 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_8, true, false, true,
122 SELECT_WIN_7 },
123 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_9, true, false, true,
124 SELECT_LAST_WIN },
125 82
126 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F3, true, true, true, 83 { true, ui::VKEY_F3, true, true, true, ROTATE_WINDOWS },
127 ROTATE_WINDOWS },
128 #if !defined(NDEBUG) 84 #if !defined(NDEBUG)
129 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_HOME, false, true, false, 85 { true, ui::VKEY_HOME, false, true, false, ROTATE_SCREEN },
130 ROTATE_SCREEN }, 86 { true, ui::VKEY_B, false, true, true, TOGGLE_DESKTOP_BACKGROUND_MODE },
131 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_B, false, true, true, 87 { true, ui::VKEY_F11, false, true, false, TOGGLE_ROOT_WINDOW_FULL_SCREEN },
132 TOGGLE_DESKTOP_BACKGROUND_MODE }, 88 { true, ui::VKEY_L, true, true, true, PRINT_LAYER_HIERARCHY },
133 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F11, false, true, false, 89 { true, ui::VKEY_W, true, true, true, PRINT_WINDOW_HIERARCHY },
134 TOGGLE_ROOT_WINDOW_FULL_SCREEN },
135 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_L, true, true, true,
136 PRINT_LAYER_HIERARCHY },
137 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_W, true, true, true,
138 PRINT_WINDOW_HIERARCHY },
139 // For testing on systems where Alt-Tab is already mapped. 90 // For testing on systems where Alt-Tab is already mapped.
140 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_W, false, false, true, 91 { true, ui::VKEY_W, false, false, true, CYCLE_FORWARD_MRU },
141 CYCLE_FORWARD_MRU }, 92 { true, ui::VKEY_W, true, false, true, CYCLE_BACKWARD_MRU },
142 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_W, true, false, true, 93 { true, ui::VKEY_F4, false, true, false, ADD_REMOVE_MONITOR },
143 CYCLE_BACKWARD_MRU }, 94 { true, ui::VKEY_F4, true, true, false, CYCLE_MONITOR },
144 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F4, false, true, false,
145 ADD_REMOVE_MONITOR },
146 { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F4, true, true, false,
147 CYCLE_MONITOR },
148 #endif 95 #endif
149 // EventType, KeyboardCode, shift, control, alt, AcceleratorAction 96 // trigger_on_press, KeyboardCode, shift, control, alt, AcceleratorAction
150 }; 97 };
151 98
152 const size_t kAcceleratorDataLength = arraysize(kAcceleratorData); 99 const size_t kAcceleratorDataLength = arraysize(kAcceleratorData);
153 100
154 const AcceleratorAction kActionsAllowedAtLoginScreen[] = { 101 const AcceleratorAction kActionsAllowedAtLoginScreen[] = {
155 BRIGHTNESS_DOWN, 102 BRIGHTNESS_DOWN,
156 BRIGHTNESS_UP, 103 BRIGHTNESS_UP,
157 NEXT_IME, 104 NEXT_IME,
158 PREVIOUS_IME, 105 PREVIOUS_IME,
159 SWITCH_IME, // Switch to another IME depending on the accelerator. 106 SWITCH_IME, // Switch to another IME depending on the accelerator.
160 TAKE_SCREENSHOT, 107 TAKE_SCREENSHOT,
161 TAKE_PARTIAL_SCREENSHOT, 108 TAKE_PARTIAL_SCREENSHOT,
162 TOGGLE_CAPS_LOCK, 109 TOGGLE_CAPS_LOCK,
163 VOLUME_DOWN, 110 VOLUME_DOWN,
164 VOLUME_MUTE, 111 VOLUME_MUTE,
165 VOLUME_UP, 112 VOLUME_UP,
166 ROTATE_WINDOWS, 113 ROTATE_WINDOWS,
167 #if !defined(NDEBUG) 114 #if !defined(NDEBUG)
168 PRINT_LAYER_HIERARCHY, 115 PRINT_LAYER_HIERARCHY,
169 PRINT_WINDOW_HIERARCHY, 116 PRINT_WINDOW_HIERARCHY,
170 ROTATE_SCREEN, 117 ROTATE_SCREEN,
171 #endif 118 #endif
172 }; 119 };
173 120
174 const size_t kActionsAllowedAtLoginScreenLength = 121 const size_t kActionsAllowedAtLoginScreenLength =
175 arraysize(kActionsAllowedAtLoginScreen); 122 arraysize(kActionsAllowedAtLoginScreen);
176 123
177 } // namespace ash 124 } // namespace ash
OLDNEW
« no previous file with comments | « ash/accelerators/accelerator_table.h ('k') | ash/accelerators/nested_dispatcher_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698