OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/sticky_keys/sticky_keys_controller.h" | 5 #include "ash/sticky_keys/sticky_keys_controller.h" |
6 | 6 |
7 #include "ash/sticky_keys/sticky_keys_overlay.h" | 7 #include "ash/sticky_keys/sticky_keys_overlay.h" |
8 #include "base/debug/stack_trace.h" | 8 #include "base/debug/stack_trace.h" |
9 #include "ui/aura/window.h" | 9 #include "ui/aura/window.h" |
10 #include "ui/aura/window_tracker.h" | 10 #include "ui/aura/window_tracker.h" |
11 #include "ui/aura/window_tree_host.h" | 11 #include "ui/aura/window_tree_host.h" |
12 #include "ui/events/event.h" | 12 #include "ui/events/event.h" |
13 #include "ui/events/event_processor.h" | 13 #include "ui/events/event_processor.h" |
14 #include "ui/events/keycodes/keyboard_code_conversion.h" | 14 #include "ui/events/keycodes/keyboard_code_conversion.h" |
15 | 15 |
16 namespace ash { | 16 namespace ash { |
17 | 17 |
18 namespace { | 18 namespace { |
19 | 19 |
20 // Returns true if the type of mouse event should be modified by sticky keys. | 20 // Returns true if the type of mouse event should be modified by sticky keys. |
21 bool ShouldModifyMouseEvent(const ui::MouseEvent& event) { | 21 bool ShouldModifyMouseEvent(const ui::MouseEvent& event) { |
22 ui::EventType type = event.type(); | 22 ui::EventType type = event.type(); |
23 return type == ui::ET_MOUSE_PRESSED || type == ui::ET_MOUSE_RELEASED || | 23 return type == ui::ET_MOUSE_PRESSED || type == ui::ET_MOUSE_RELEASED || |
24 type == ui::ET_MOUSEWHEEL; | 24 type == ui::ET_MOUSEWHEEL; |
25 } | 25 } |
26 | 26 |
27 // Handle the common tail of event rewriting. | 27 // Handle the common tail of event rewriting. |
28 ui::EventRewriteStatus RewriteUpdate(bool consumed, | 28 ui::EventRewriteStatus RewriteUpdate( |
29 bool released, | 29 bool consumed, |
30 int mod_down_flags, | 30 bool released, |
31 int* flags) { | 31 int mod_down_flags, |
32 int changed_down_flags = mod_down_flags & ~*flags; | 32 const ui::Event& event, |
33 *flags |= mod_down_flags; | 33 std::unique_ptr<ui::Event>* rewritten_event) { |
34 int changed_down_flags = mod_down_flags & event.flags(); | |
34 if (consumed) | 35 if (consumed) |
35 return ui::EVENT_REWRITE_DISCARD; | 36 return ui::EVENT_REWRITE_DISCARD; |
36 if (released) | 37 if (released) |
37 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; | 38 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; |
38 if (changed_down_flags) | 39 if (changed_down_flags) { |
40 *rewritten_event = ui::Event::Clone(event); | |
41 (*rewritten_event)->set_flags(event.flags() | mod_down_flags); | |
39 return ui::EVENT_REWRITE_REWRITTEN; | 42 return ui::EVENT_REWRITE_REWRITTEN; |
43 } | |
40 return ui::EVENT_REWRITE_CONTINUE; | 44 return ui::EVENT_REWRITE_CONTINUE; |
41 } | 45 } |
42 | 46 |
43 } // namespace | 47 } // namespace |
44 | 48 |
45 /////////////////////////////////////////////////////////////////////////////// | 49 /////////////////////////////////////////////////////////////////////////////// |
46 // StickyKeys | 50 // StickyKeys |
47 StickyKeysController::StickyKeysController() | 51 StickyKeysController::StickyKeysController() |
48 : enabled_(false), mod3_enabled_(false), altgr_enabled_(false) {} | 52 : enabled_(false), mod3_enabled_(false), altgr_enabled_(false) {} |
49 | 53 |
(...skipping 25 matching lines...) Expand all Loading... | |
75 void StickyKeysController::SetModifiersEnabled(bool mod3_enabled, | 79 void StickyKeysController::SetModifiersEnabled(bool mod3_enabled, |
76 bool altgr_enabled) { | 80 bool altgr_enabled) { |
77 mod3_enabled_ = mod3_enabled; | 81 mod3_enabled_ = mod3_enabled; |
78 altgr_enabled_ = altgr_enabled; | 82 altgr_enabled_ = altgr_enabled; |
79 if (overlay_) { | 83 if (overlay_) { |
80 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); | 84 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); |
81 overlay_->SetModifierVisible(ui::EF_MOD3_DOWN, mod3_enabled_); | 85 overlay_->SetModifierVisible(ui::EF_MOD3_DOWN, mod3_enabled_); |
82 } | 86 } |
83 } | 87 } |
84 | 88 |
89 StickyKeysOverlay* StickyKeysController::GetOverlayForTest() { | |
90 return overlay_.get(); | |
91 } | |
92 | |
93 ui::EventRewriteStatus StickyKeysController::RewriteEvent( | |
94 const ui::Event& event, | |
95 std::unique_ptr<ui::Event>* rewritten_event) { | |
96 DCHECK(rewritten_event); | |
97 if (!enabled_) | |
98 return ui::EVENT_REWRITE_CONTINUE; | |
99 | |
100 if (event.IsKeyEvent()) { | |
101 int mod_down_flags = 0; | |
102 bool released = false; | |
103 bool consumed = | |
104 HandleKeyEvent(*event.AsKeyEvent(), &mod_down_flags, &released); | |
105 UpdateOverlay(); | |
106 return RewriteUpdate(consumed, released, mod_down_flags, event, | |
107 rewritten_event); | |
108 } else if (event.IsMouseEvent()) { | |
109 int mod_down_flags = 0; | |
110 bool released = false; | |
111 bool consumed = | |
112 HandleMouseEvent(*event.AsMouseEvent(), &mod_down_flags, &released); | |
113 UpdateOverlay(); | |
114 return RewriteUpdate(consumed, released, mod_down_flags, event, | |
115 rewritten_event); | |
116 } else if (event.IsScrollEvent()) { | |
117 int mod_down_flags = 0; | |
118 bool released = false; | |
119 bool consumed = | |
120 HandleScrollEvent(*event.AsScrollEvent(), &mod_down_flags, &released); | |
121 UpdateOverlay(); | |
122 return RewriteUpdate(consumed, released, mod_down_flags, event, | |
123 rewritten_event); | |
124 } | |
125 NOTREACHED(); | |
126 return ui::EVENT_REWRITE_CONTINUE; | |
127 } | |
128 | |
129 ui::EventRewriteStatus StickyKeysController::NextDispatchEvent( | |
130 const ui::Event& last_event, | |
131 std::unique_ptr<ui::Event>* new_event) { | |
132 DCHECK(new_event); | |
133 new_event->reset(); | |
134 int remaining = shift_sticky_key_->GetModifierUpEvent(new_event) + | |
135 alt_sticky_key_->GetModifierUpEvent(new_event) + | |
136 altgr_sticky_key_->GetModifierUpEvent(new_event) + | |
137 ctrl_sticky_key_->GetModifierUpEvent(new_event) + | |
138 mod3_sticky_key_->GetModifierUpEvent(new_event) + | |
139 search_sticky_key_->GetModifierUpEvent(new_event); | |
140 if (!new_event) | |
141 return ui::EVENT_REWRITE_CONTINUE; | |
142 if (remaining) | |
143 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; | |
144 return ui::EVENT_REWRITE_REWRITTEN; | |
145 } | |
146 | |
85 bool StickyKeysController::HandleKeyEvent(const ui::KeyEvent& event, | 147 bool StickyKeysController::HandleKeyEvent(const ui::KeyEvent& event, |
86 ui::KeyboardCode key_code, | |
87 int* mod_down_flags, | 148 int* mod_down_flags, |
88 bool* released) { | 149 bool* released) { |
89 return shift_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | 150 return shift_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) || |
90 released) || | 151 alt_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) || |
91 alt_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | 152 altgr_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) || |
92 released) || | 153 ctrl_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) || |
93 altgr_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | 154 mod3_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) || |
94 released) || | 155 search_sticky_key_->HandleKeyEvent(event, mod_down_flags, released); |
95 ctrl_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | |
96 released) || | |
97 mod3_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | |
98 released) || | |
99 search_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | |
100 released); | |
101 } | 156 } |
102 | 157 |
103 bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event, | 158 bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event, |
104 int* mod_down_flags, | 159 int* mod_down_flags, |
105 bool* released) { | 160 bool* released) { |
106 return shift_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || | 161 return shift_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || |
107 alt_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || | 162 alt_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || |
108 altgr_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || | 163 altgr_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || |
109 ctrl_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || | 164 ctrl_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || |
110 mod3_sticky_key_->HandleMouseEvent(event, mod_down_flags, released); | 165 mod3_sticky_key_->HandleMouseEvent(event, mod_down_flags, released); |
111 } | 166 } |
112 | 167 |
113 bool StickyKeysController::HandleScrollEvent(const ui::ScrollEvent& event, | 168 bool StickyKeysController::HandleScrollEvent(const ui::ScrollEvent& event, |
114 int* mod_down_flags, | 169 int* mod_down_flags, |
115 bool* released) { | 170 bool* released) { |
116 return shift_sticky_key_->HandleScrollEvent(event, mod_down_flags, | 171 return shift_sticky_key_->HandleScrollEvent(event, mod_down_flags, |
117 released) || | 172 released) || |
118 alt_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) || | 173 alt_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) || |
119 altgr_sticky_key_->HandleScrollEvent(event, mod_down_flags, | 174 altgr_sticky_key_->HandleScrollEvent(event, mod_down_flags, |
120 released) || | 175 released) || |
121 ctrl_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) || | 176 ctrl_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) || |
122 mod3_sticky_key_->HandleScrollEvent(event, mod_down_flags, released); | 177 mod3_sticky_key_->HandleScrollEvent(event, mod_down_flags, released); |
123 } | 178 } |
124 | 179 |
125 ui::EventRewriteStatus StickyKeysController::RewriteKeyEvent( | |
Tim Song
2017/03/07 18:48:54
Could you keep these functions (but make them priv
Peng
2017/03/07 19:43:16
Done
| |
126 const ui::KeyEvent& event, | |
127 ui::KeyboardCode key_code, | |
128 int* flags) { | |
129 if (!enabled_) | |
130 return ui::EVENT_REWRITE_CONTINUE; | |
131 int mod_down_flags = 0; | |
132 bool released = false; | |
133 bool consumed = HandleKeyEvent(event, key_code, &mod_down_flags, &released); | |
134 UpdateOverlay(); | |
135 return RewriteUpdate(consumed, released, mod_down_flags, flags); | |
136 } | |
137 | |
138 ui::EventRewriteStatus StickyKeysController::RewriteMouseEvent( | |
139 const ui::MouseEvent& event, | |
140 int* flags) { | |
141 if (!enabled_) | |
142 return ui::EVENT_REWRITE_CONTINUE; | |
143 int mod_down_flags = 0; | |
144 bool released = false; | |
145 bool consumed = HandleMouseEvent(event, &mod_down_flags, &released); | |
146 UpdateOverlay(); | |
147 return RewriteUpdate(consumed, released, mod_down_flags, flags); | |
148 } | |
149 | |
150 ui::EventRewriteStatus StickyKeysController::RewriteScrollEvent( | |
151 const ui::ScrollEvent& event, | |
152 int* flags) { | |
153 if (!enabled_) | |
154 return ui::EVENT_REWRITE_CONTINUE; | |
155 int mod_down_flags = 0; | |
156 bool released = false; | |
157 bool consumed = HandleScrollEvent(event, &mod_down_flags, &released); | |
158 UpdateOverlay(); | |
159 return RewriteUpdate(consumed, released, mod_down_flags, flags); | |
160 } | |
161 | |
162 ui::EventRewriteStatus StickyKeysController::NextDispatchEvent( | |
163 std::unique_ptr<ui::Event>* new_event) { | |
164 DCHECK(new_event); | |
165 new_event->reset(); | |
166 int remaining = shift_sticky_key_->GetModifierUpEvent(new_event) + | |
167 alt_sticky_key_->GetModifierUpEvent(new_event) + | |
168 altgr_sticky_key_->GetModifierUpEvent(new_event) + | |
169 ctrl_sticky_key_->GetModifierUpEvent(new_event) + | |
170 mod3_sticky_key_->GetModifierUpEvent(new_event) + | |
171 search_sticky_key_->GetModifierUpEvent(new_event); | |
172 if (!new_event) | |
173 return ui::EVENT_REWRITE_CONTINUE; | |
174 if (remaining) | |
175 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; | |
176 return ui::EVENT_REWRITE_REWRITTEN; | |
177 } | |
178 | |
179 void StickyKeysController::UpdateOverlay() { | 180 void StickyKeysController::UpdateOverlay() { |
180 overlay_->SetModifierKeyState(ui::EF_SHIFT_DOWN, | 181 overlay_->SetModifierKeyState(ui::EF_SHIFT_DOWN, |
181 shift_sticky_key_->current_state()); | 182 shift_sticky_key_->current_state()); |
182 overlay_->SetModifierKeyState(ui::EF_CONTROL_DOWN, | 183 overlay_->SetModifierKeyState(ui::EF_CONTROL_DOWN, |
183 ctrl_sticky_key_->current_state()); | 184 ctrl_sticky_key_->current_state()); |
184 overlay_->SetModifierKeyState(ui::EF_ALT_DOWN, | 185 overlay_->SetModifierKeyState(ui::EF_ALT_DOWN, |
185 alt_sticky_key_->current_state()); | 186 alt_sticky_key_->current_state()); |
186 overlay_->SetModifierKeyState(ui::EF_COMMAND_DOWN, | 187 overlay_->SetModifierKeyState(ui::EF_COMMAND_DOWN, |
187 search_sticky_key_->current_state()); | 188 search_sticky_key_->current_state()); |
188 overlay_->SetModifierKeyState(ui::EF_ALTGR_DOWN, | 189 overlay_->SetModifierKeyState(ui::EF_ALTGR_DOWN, |
189 altgr_sticky_key_->current_state()); | 190 altgr_sticky_key_->current_state()); |
190 overlay_->SetModifierKeyState(ui::EF_MOD3_DOWN, | 191 overlay_->SetModifierKeyState(ui::EF_MOD3_DOWN, |
191 mod3_sticky_key_->current_state()); | 192 mod3_sticky_key_->current_state()); |
192 | 193 |
193 bool key_in_use = | 194 bool key_in_use = |
194 shift_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || | 195 shift_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || |
195 alt_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || | 196 alt_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || |
196 altgr_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || | 197 altgr_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || |
197 ctrl_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || | 198 ctrl_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || |
198 search_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || | 199 search_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || |
199 mod3_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED; | 200 mod3_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED; |
200 | 201 |
201 overlay_->Show(enabled_ && key_in_use); | 202 overlay_->Show(enabled_ && key_in_use); |
202 } | 203 } |
203 | 204 |
204 StickyKeysOverlay* StickyKeysController::GetOverlayForTest() { | |
205 return overlay_.get(); | |
206 } | |
207 | |
208 /////////////////////////////////////////////////////////////////////////////// | 205 /////////////////////////////////////////////////////////////////////////////// |
209 // StickyKeysHandler | 206 // StickyKeysHandler |
210 StickyKeysHandler::StickyKeysHandler(ui::EventFlags modifier_flag) | 207 StickyKeysHandler::StickyKeysHandler(ui::EventFlags modifier_flag) |
211 : modifier_flag_(modifier_flag), | 208 : modifier_flag_(modifier_flag), |
212 current_state_(STICKY_KEY_STATE_DISABLED), | 209 current_state_(STICKY_KEY_STATE_DISABLED), |
213 preparing_to_enable_(false), | 210 preparing_to_enable_(false), |
214 scroll_delta_(0) {} | 211 scroll_delta_(0) {} |
215 | 212 |
216 StickyKeysHandler::~StickyKeysHandler() {} | 213 StickyKeysHandler::~StickyKeysHandler() {} |
217 | 214 |
218 bool StickyKeysHandler::HandleKeyEvent(const ui::KeyEvent& event, | 215 bool StickyKeysHandler::HandleKeyEvent(const ui::KeyEvent& event, |
219 ui::KeyboardCode key_code, | |
220 int* mod_down_flags, | 216 int* mod_down_flags, |
221 bool* released) { | 217 bool* released) { |
222 switch (current_state_) { | 218 switch (current_state_) { |
223 case STICKY_KEY_STATE_DISABLED: | 219 case STICKY_KEY_STATE_DISABLED: |
224 return HandleDisabledState(event, key_code); | 220 return HandleDisabledState(event); |
225 case STICKY_KEY_STATE_ENABLED: | 221 case STICKY_KEY_STATE_ENABLED: |
226 return HandleEnabledState(event, key_code, mod_down_flags, released); | 222 return HandleEnabledState(event, mod_down_flags, released); |
227 case STICKY_KEY_STATE_LOCKED: | 223 case STICKY_KEY_STATE_LOCKED: |
228 return HandleLockedState(event, key_code, mod_down_flags, released); | 224 return HandleLockedState(event, mod_down_flags, released); |
229 } | 225 } |
230 NOTREACHED(); | 226 NOTREACHED(); |
231 return false; | 227 return false; |
232 } | 228 } |
233 | 229 |
234 bool StickyKeysHandler::HandleMouseEvent(const ui::MouseEvent& event, | 230 bool StickyKeysHandler::HandleMouseEvent(const ui::MouseEvent& event, |
235 int* mod_down_flags, | 231 int* mod_down_flags, |
236 bool* released) { | 232 bool* released) { |
237 if (ShouldModifyMouseEvent(event)) | 233 if (ShouldModifyMouseEvent(event)) |
238 preparing_to_enable_ = false; | 234 preparing_to_enable_ = false; |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
327 return type == ui::ET_KEY_PRESSED ? NORMAL_KEY_DOWN : NORMAL_KEY_UP; | 323 return type == ui::ET_KEY_PRESSED ? NORMAL_KEY_DOWN : NORMAL_KEY_UP; |
328 } | 324 } |
329 | 325 |
330 if (is_target_key) { | 326 if (is_target_key) { |
331 return type == ui::ET_KEY_PRESSED ? TARGET_MODIFIER_DOWN | 327 return type == ui::ET_KEY_PRESSED ? TARGET_MODIFIER_DOWN |
332 : TARGET_MODIFIER_UP; | 328 : TARGET_MODIFIER_UP; |
333 } | 329 } |
334 return type == ui::ET_KEY_PRESSED ? OTHER_MODIFIER_DOWN : OTHER_MODIFIER_UP; | 330 return type == ui::ET_KEY_PRESSED ? OTHER_MODIFIER_DOWN : OTHER_MODIFIER_UP; |
335 } | 331 } |
336 | 332 |
337 bool StickyKeysHandler::HandleDisabledState(const ui::KeyEvent& event, | 333 bool StickyKeysHandler::HandleDisabledState(const ui::KeyEvent& event) { |
338 ui::KeyboardCode key_code) { | 334 switch (TranslateKeyEvent(event.type(), event.key_code())) { |
339 switch (TranslateKeyEvent(event.type(), key_code)) { | |
340 case TARGET_MODIFIER_UP: | 335 case TARGET_MODIFIER_UP: |
341 if (preparing_to_enable_) { | 336 if (preparing_to_enable_) { |
342 preparing_to_enable_ = false; | 337 preparing_to_enable_ = false; |
343 scroll_delta_ = 0; | 338 scroll_delta_ = 0; |
344 current_state_ = STICKY_KEY_STATE_ENABLED; | 339 current_state_ = STICKY_KEY_STATE_ENABLED; |
345 modifier_up_event_.reset(new ui::KeyEvent(event)); | 340 modifier_up_event_.reset(new ui::KeyEvent(event)); |
346 return true; | 341 return true; |
347 } | 342 } |
348 return false; | 343 return false; |
349 case TARGET_MODIFIER_DOWN: | 344 case TARGET_MODIFIER_DOWN: |
350 preparing_to_enable_ = true; | 345 preparing_to_enable_ = true; |
351 return false; | 346 return false; |
352 case NORMAL_KEY_DOWN: | 347 case NORMAL_KEY_DOWN: |
353 preparing_to_enable_ = false; | 348 preparing_to_enable_ = false; |
354 return false; | 349 return false; |
355 case NORMAL_KEY_UP: | 350 case NORMAL_KEY_UP: |
356 case OTHER_MODIFIER_DOWN: | 351 case OTHER_MODIFIER_DOWN: |
357 case OTHER_MODIFIER_UP: | 352 case OTHER_MODIFIER_UP: |
358 return false; | 353 return false; |
359 } | 354 } |
360 NOTREACHED(); | 355 NOTREACHED(); |
361 return false; | 356 return false; |
362 } | 357 } |
363 | 358 |
364 bool StickyKeysHandler::HandleEnabledState(const ui::KeyEvent& event, | 359 bool StickyKeysHandler::HandleEnabledState(const ui::KeyEvent& event, |
365 ui::KeyboardCode key_code, | |
366 int* mod_down_flags, | 360 int* mod_down_flags, |
367 bool* released) { | 361 bool* released) { |
368 switch (TranslateKeyEvent(event.type(), key_code)) { | 362 switch (TranslateKeyEvent(event.type(), event.key_code())) { |
369 case NORMAL_KEY_UP: | 363 case NORMAL_KEY_UP: |
370 case TARGET_MODIFIER_DOWN: | 364 case TARGET_MODIFIER_DOWN: |
371 return false; | 365 return false; |
372 case TARGET_MODIFIER_UP: | 366 case TARGET_MODIFIER_UP: |
373 current_state_ = STICKY_KEY_STATE_LOCKED; | 367 current_state_ = STICKY_KEY_STATE_LOCKED; |
374 modifier_up_event_.reset(); | 368 modifier_up_event_.reset(); |
375 return true; | 369 return true; |
376 case NORMAL_KEY_DOWN: { | 370 case NORMAL_KEY_DOWN: { |
377 current_state_ = STICKY_KEY_STATE_DISABLED; | 371 current_state_ = STICKY_KEY_STATE_DISABLED; |
378 *mod_down_flags |= modifier_flag_; | 372 *mod_down_flags |= modifier_flag_; |
379 *released = true; | 373 *released = true; |
380 return false; | 374 return false; |
381 } | 375 } |
382 case OTHER_MODIFIER_DOWN: | 376 case OTHER_MODIFIER_DOWN: |
383 case OTHER_MODIFIER_UP: | 377 case OTHER_MODIFIER_UP: |
384 return false; | 378 return false; |
385 } | 379 } |
386 NOTREACHED(); | 380 NOTREACHED(); |
387 return false; | 381 return false; |
388 } | 382 } |
389 | 383 |
390 bool StickyKeysHandler::HandleLockedState(const ui::KeyEvent& event, | 384 bool StickyKeysHandler::HandleLockedState(const ui::KeyEvent& event, |
391 ui::KeyboardCode key_code, | |
392 int* mod_down_flags, | 385 int* mod_down_flags, |
393 bool* released) { | 386 bool* released) { |
394 switch (TranslateKeyEvent(event.type(), key_code)) { | 387 switch (TranslateKeyEvent(event.type(), event.key_code())) { |
395 case TARGET_MODIFIER_DOWN: | 388 case TARGET_MODIFIER_DOWN: |
396 return true; | 389 return true; |
397 case TARGET_MODIFIER_UP: | 390 case TARGET_MODIFIER_UP: |
398 current_state_ = STICKY_KEY_STATE_DISABLED; | 391 current_state_ = STICKY_KEY_STATE_DISABLED; |
399 return false; | 392 return false; |
400 case NORMAL_KEY_DOWN: | 393 case NORMAL_KEY_DOWN: |
401 case NORMAL_KEY_UP: | 394 case NORMAL_KEY_UP: |
402 *mod_down_flags |= modifier_flag_; | 395 *mod_down_flags |= modifier_flag_; |
403 return false; | 396 return false; |
404 case OTHER_MODIFIER_DOWN: | 397 case OTHER_MODIFIER_DOWN: |
405 case OTHER_MODIFIER_UP: | 398 case OTHER_MODIFIER_UP: |
406 return false; | 399 return false; |
407 } | 400 } |
408 NOTREACHED(); | 401 NOTREACHED(); |
409 return false; | 402 return false; |
410 } | 403 } |
411 | 404 |
412 } // namespace ash | 405 } // namespace ash |
OLD | NEW |