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 "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 // EventType, KeyboardCode, shift, control, alt, AcceleratorAction |
mazda
2012/04/23 16:46:16
nit: Please modify the comment here as well.
Yusuke Sato
2012/04/24 06:07:31
Done.
| |
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 |
OLD | NEW |