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/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/debug/stack_trace.h" | 9 #include "base/debug/stack_trace.h" |
10 #include "ui/aura/window.h" | 10 #include "ui/aura/window.h" |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 enabled_ = enabled; | 59 enabled_ = enabled; |
60 | 60 |
61 // Reset key handlers when activating sticky keys to ensure all | 61 // Reset key handlers when activating sticky keys to ensure all |
62 // the handlers' states are reset. | 62 // the handlers' states are reset. |
63 if (enabled_) { | 63 if (enabled_) { |
64 shift_sticky_key_.reset(new StickyKeysHandler(ui::EF_SHIFT_DOWN)); | 64 shift_sticky_key_.reset(new StickyKeysHandler(ui::EF_SHIFT_DOWN)); |
65 alt_sticky_key_.reset(new StickyKeysHandler(ui::EF_ALT_DOWN)); | 65 alt_sticky_key_.reset(new StickyKeysHandler(ui::EF_ALT_DOWN)); |
66 altgr_sticky_key_.reset(new StickyKeysHandler(ui::EF_ALTGR_DOWN)); | 66 altgr_sticky_key_.reset(new StickyKeysHandler(ui::EF_ALTGR_DOWN)); |
67 ctrl_sticky_key_.reset(new StickyKeysHandler(ui::EF_CONTROL_DOWN)); | 67 ctrl_sticky_key_.reset(new StickyKeysHandler(ui::EF_CONTROL_DOWN)); |
68 mod3_sticky_key_.reset(new StickyKeysHandler(ui::EF_MOD3_DOWN)); | 68 mod3_sticky_key_.reset(new StickyKeysHandler(ui::EF_MOD3_DOWN)); |
| 69 search_sticky_key_.reset(new StickyKeysHandler(ui::EF_COMMAND_DOWN)); |
69 | 70 |
70 overlay_.reset(new StickyKeysOverlay()); | 71 overlay_.reset(new StickyKeysOverlay()); |
71 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); | 72 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); |
72 overlay_->SetModifierVisible(ui::EF_MOD3_DOWN, mod3_enabled_); | 73 overlay_->SetModifierVisible(ui::EF_MOD3_DOWN, mod3_enabled_); |
73 } else if (overlay_) { | 74 } else if (overlay_) { |
74 overlay_->Show(false); | 75 overlay_->Show(false); |
75 } | 76 } |
76 } | 77 } |
77 } | 78 } |
78 | 79 |
(...skipping 13 matching lines...) Expand all Loading... |
92 bool* released) { | 93 bool* released) { |
93 return shift_sticky_key_->HandleKeyEvent( | 94 return shift_sticky_key_->HandleKeyEvent( |
94 event, key_code, mod_down_flags, released) || | 95 event, key_code, mod_down_flags, released) || |
95 alt_sticky_key_->HandleKeyEvent( | 96 alt_sticky_key_->HandleKeyEvent( |
96 event, key_code, mod_down_flags, released) || | 97 event, key_code, mod_down_flags, released) || |
97 altgr_sticky_key_->HandleKeyEvent( | 98 altgr_sticky_key_->HandleKeyEvent( |
98 event, key_code, mod_down_flags, released) || | 99 event, key_code, mod_down_flags, released) || |
99 ctrl_sticky_key_->HandleKeyEvent( | 100 ctrl_sticky_key_->HandleKeyEvent( |
100 event, key_code, mod_down_flags, released) || | 101 event, key_code, mod_down_flags, released) || |
101 mod3_sticky_key_->HandleKeyEvent( | 102 mod3_sticky_key_->HandleKeyEvent( |
| 103 event, key_code, mod_down_flags, released) || |
| 104 search_sticky_key_->HandleKeyEvent( |
102 event, key_code, mod_down_flags, released); | 105 event, key_code, mod_down_flags, released); |
103 } | 106 } |
104 | 107 |
105 bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event, | 108 bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event, |
106 int* mod_down_flags, | 109 int* mod_down_flags, |
107 bool* released) { | 110 bool* released) { |
108 return shift_sticky_key_->HandleMouseEvent( | 111 return shift_sticky_key_->HandleMouseEvent( |
109 event, mod_down_flags, released) || | 112 event, mod_down_flags, released) || |
110 alt_sticky_key_->HandleMouseEvent( | 113 alt_sticky_key_->HandleMouseEvent( |
111 event, mod_down_flags, released) || | 114 event, mod_down_flags, released) || |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 } | 173 } |
171 | 174 |
172 ui::EventRewriteStatus StickyKeysController::NextDispatchEvent( | 175 ui::EventRewriteStatus StickyKeysController::NextDispatchEvent( |
173 scoped_ptr<ui::Event>* new_event) { | 176 scoped_ptr<ui::Event>* new_event) { |
174 DCHECK(new_event); | 177 DCHECK(new_event); |
175 new_event->reset(); | 178 new_event->reset(); |
176 int remaining = shift_sticky_key_->GetModifierUpEvent(new_event) + | 179 int remaining = shift_sticky_key_->GetModifierUpEvent(new_event) + |
177 alt_sticky_key_->GetModifierUpEvent(new_event) + | 180 alt_sticky_key_->GetModifierUpEvent(new_event) + |
178 altgr_sticky_key_->GetModifierUpEvent(new_event) + | 181 altgr_sticky_key_->GetModifierUpEvent(new_event) + |
179 ctrl_sticky_key_->GetModifierUpEvent(new_event) + | 182 ctrl_sticky_key_->GetModifierUpEvent(new_event) + |
180 mod3_sticky_key_->GetModifierUpEvent(new_event); | 183 mod3_sticky_key_->GetModifierUpEvent(new_event) + |
| 184 search_sticky_key_->GetModifierUpEvent(new_event); |
181 if (!new_event) | 185 if (!new_event) |
182 return ui::EVENT_REWRITE_CONTINUE; | 186 return ui::EVENT_REWRITE_CONTINUE; |
183 if (remaining) | 187 if (remaining) |
184 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; | 188 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; |
185 return ui::EVENT_REWRITE_REWRITTEN; | 189 return ui::EVENT_REWRITE_REWRITTEN; |
186 } | 190 } |
187 | 191 |
188 void StickyKeysController::UpdateOverlay() { | 192 void StickyKeysController::UpdateOverlay() { |
189 overlay_->SetModifierKeyState( | 193 overlay_->SetModifierKeyState( |
190 ui::EF_SHIFT_DOWN, shift_sticky_key_->current_state()); | 194 ui::EF_SHIFT_DOWN, shift_sticky_key_->current_state()); |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 key_code == ui::VKEY_RCONTROL) { | 330 key_code == ui::VKEY_RCONTROL) { |
327 is_target_key = (modifier_flag_ == ui::EF_CONTROL_DOWN); | 331 is_target_key = (modifier_flag_ == ui::EF_CONTROL_DOWN); |
328 } else if (key_code == ui::VKEY_MENU || | 332 } else if (key_code == ui::VKEY_MENU || |
329 key_code == ui::VKEY_LMENU || | 333 key_code == ui::VKEY_LMENU || |
330 key_code == ui::VKEY_RMENU) { | 334 key_code == ui::VKEY_RMENU) { |
331 is_target_key = (modifier_flag_ == ui::EF_ALT_DOWN); | 335 is_target_key = (modifier_flag_ == ui::EF_ALT_DOWN); |
332 } else if (key_code == ui::VKEY_ALTGR) { | 336 } else if (key_code == ui::VKEY_ALTGR) { |
333 is_target_key = (modifier_flag_ == ui::EF_ALTGR_DOWN); | 337 is_target_key = (modifier_flag_ == ui::EF_ALTGR_DOWN); |
334 } else if (key_code == ui::VKEY_OEM_8) { | 338 } else if (key_code == ui::VKEY_OEM_8) { |
335 is_target_key = (modifier_flag_ == ui::EF_MOD3_DOWN); | 339 is_target_key = (modifier_flag_ == ui::EF_MOD3_DOWN); |
| 340 } else if (key_code == ui::VKEY_LWIN) { |
| 341 is_target_key = (modifier_flag_ == ui::EF_COMMAND_DOWN); |
336 } else { | 342 } else { |
337 return type == ui::ET_KEY_PRESSED ? | 343 return type == ui::ET_KEY_PRESSED ? |
338 NORMAL_KEY_DOWN : NORMAL_KEY_UP; | 344 NORMAL_KEY_DOWN : NORMAL_KEY_UP; |
339 } | 345 } |
340 | 346 |
341 if (is_target_key) { | 347 if (is_target_key) { |
342 return type == ui::ET_KEY_PRESSED ? | 348 return type == ui::ET_KEY_PRESSED ? |
343 TARGET_MODIFIER_DOWN : TARGET_MODIFIER_UP; | 349 TARGET_MODIFIER_DOWN : TARGET_MODIFIER_UP; |
344 } | 350 } |
345 return type == ui::ET_KEY_PRESSED ? | 351 return type == ui::ET_KEY_PRESSED ? |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 return false; | 421 return false; |
416 case OTHER_MODIFIER_DOWN: | 422 case OTHER_MODIFIER_DOWN: |
417 case OTHER_MODIFIER_UP: | 423 case OTHER_MODIFIER_UP: |
418 return false; | 424 return false; |
419 } | 425 } |
420 NOTREACHED(); | 426 NOTREACHED(); |
421 return false; | 427 return false; |
422 } | 428 } |
423 | 429 |
424 } // namespace ash | 430 } // namespace ash |
OLD | NEW |