| 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 #if defined(USE_X11) | 7 #if defined(USE_X11) |
| 8 #include <X11/extensions/XInput2.h> | 8 #include <X11/extensions/XInput2.h> |
| 9 #include <X11/Xlib.h> | 9 #include <X11/Xlib.h> |
| 10 #undef RootWindow | 10 #undef RootWindow |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 target->GetHost()->event_processor()->OnEventFromSource(event); | 90 target->GetHost()->event_processor()->OnEventFromSource(event); |
| 91 if (details.dispatcher_destroyed) | 91 if (details.dispatcher_destroyed) |
| 92 return; | 92 return; |
| 93 } | 93 } |
| 94 | 94 |
| 95 } // namespace | 95 } // namespace |
| 96 | 96 |
| 97 /////////////////////////////////////////////////////////////////////////////// | 97 /////////////////////////////////////////////////////////////////////////////// |
| 98 // StickyKeys | 98 // StickyKeys |
| 99 StickyKeysController::StickyKeysController() | 99 StickyKeysController::StickyKeysController() |
| 100 : enabled_(false) { | 100 : enabled_(false), |
| 101 mod3_enabled_(false), |
| 102 altgr_enabled_(false) { |
| 101 } | 103 } |
| 102 | 104 |
| 103 StickyKeysController::~StickyKeysController() { | 105 StickyKeysController::~StickyKeysController() { |
| 104 } | 106 } |
| 105 | 107 |
| 106 void StickyKeysController::Enable(bool enabled) { | 108 void StickyKeysController::Enable(bool enabled) { |
| 107 if (enabled_ != enabled) { | 109 if (enabled_ != enabled) { |
| 108 enabled_ = enabled; | 110 enabled_ = enabled; |
| 109 | 111 |
| 110 // Reset key handlers when activating sticky keys to ensure all | 112 // Reset key handlers when activating sticky keys to ensure all |
| 111 // the handlers' states are reset. | 113 // the handlers' states are reset. |
| 112 if (enabled_) { | 114 if (enabled_) { |
| 113 shift_sticky_key_.reset( | 115 shift_sticky_key_.reset( |
| 114 new StickyKeysHandler(ui::EF_SHIFT_DOWN, | 116 new StickyKeysHandler(ui::EF_SHIFT_DOWN, |
| 115 new StickyKeysHandlerDelegateImpl())); | 117 new StickyKeysHandlerDelegateImpl())); |
| 116 alt_sticky_key_.reset( | 118 alt_sticky_key_.reset( |
| 117 new StickyKeysHandler(ui::EF_ALT_DOWN, | 119 new StickyKeysHandler(ui::EF_ALT_DOWN, |
| 118 new StickyKeysHandlerDelegateImpl())); | 120 new StickyKeysHandlerDelegateImpl())); |
| 119 altgr_sticky_key_.reset( | 121 altgr_sticky_key_.reset( |
| 120 new StickyKeysHandler(ui::EF_ALTGR_DOWN, | 122 new StickyKeysHandler(ui::EF_ALTGR_DOWN, |
| 121 new StickyKeysHandlerDelegateImpl())); | 123 new StickyKeysHandlerDelegateImpl())); |
| 122 ctrl_sticky_key_.reset( | 124 ctrl_sticky_key_.reset( |
| 123 new StickyKeysHandler(ui::EF_CONTROL_DOWN, | 125 new StickyKeysHandler(ui::EF_CONTROL_DOWN, |
| 124 new StickyKeysHandlerDelegateImpl())); | 126 new StickyKeysHandlerDelegateImpl())); |
| 125 | 127 |
| 126 overlay_.reset(new StickyKeysOverlay()); | 128 overlay_.reset(new StickyKeysOverlay()); |
| 127 } else if (overlay_.get()) { | 129 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); |
| 130 } else if (overlay_) { |
| 128 overlay_->Show(false); | 131 overlay_->Show(false); |
| 129 } | 132 } |
| 130 } | 133 } |
| 131 } | 134 } |
| 132 | 135 |
| 136 void StickyKeysController::SetModifiersEnabled(bool mod3_enabled, |
| 137 bool altgr_enabled) { |
| 138 mod3_enabled_ = mod3_enabled; |
| 139 altgr_enabled_ = altgr_enabled; |
| 140 if (overlay_) |
| 141 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); |
| 142 } |
| 143 |
| 133 bool StickyKeysController::HandleKeyEvent(ui::KeyEvent* event) { | 144 bool StickyKeysController::HandleKeyEvent(ui::KeyEvent* event) { |
| 134 return shift_sticky_key_->HandleKeyEvent(event) || | 145 return shift_sticky_key_->HandleKeyEvent(event) || |
| 135 alt_sticky_key_->HandleKeyEvent(event) || | 146 alt_sticky_key_->HandleKeyEvent(event) || |
| 136 altgr_sticky_key_->HandleKeyEvent(event) || | 147 altgr_sticky_key_->HandleKeyEvent(event) || |
| 137 ctrl_sticky_key_->HandleKeyEvent(event); | 148 ctrl_sticky_key_->HandleKeyEvent(event); |
| 138 } | 149 } |
| 139 | 150 |
| 140 bool StickyKeysController::HandleMouseEvent(ui::MouseEvent* event) { | 151 bool StickyKeysController::HandleMouseEvent(ui::MouseEvent* event) { |
| 141 return shift_sticky_key_->HandleMouseEvent(event) || | 152 return shift_sticky_key_->HandleMouseEvent(event) || |
| 142 alt_sticky_key_->HandleMouseEvent(event) || | 153 alt_sticky_key_->HandleMouseEvent(event) || |
| (...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 &xievent->mods.effective)); | 519 &xievent->mods.effective)); |
| 509 } | 520 } |
| 510 } | 521 } |
| 511 #elif defined(USE_OZONE) | 522 #elif defined(USE_OZONE) |
| 512 NOTIMPLEMENTED() << "Modifier key is not handled"; | 523 NOTIMPLEMENTED() << "Modifier key is not handled"; |
| 513 #endif | 524 #endif |
| 514 event->set_flags(event->flags() | modifier_flag_); | 525 event->set_flags(event->flags() | modifier_flag_); |
| 515 } | 526 } |
| 516 | 527 |
| 517 } // namespace ash | 528 } // namespace ash |
| OLD | NEW |