| 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 |