| 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 target->GetHost()->dispatcher()->OnEventFromSource(event); | 89 target->GetHost()->dispatcher()->OnEventFromSource(event); |
| 90 if (details.dispatcher_destroyed) | 90 if (details.dispatcher_destroyed) |
| 91 return; | 91 return; |
| 92 } | 92 } |
| 93 | 93 |
| 94 } // namespace | 94 } // namespace |
| 95 | 95 |
| 96 /////////////////////////////////////////////////////////////////////////////// | 96 /////////////////////////////////////////////////////////////////////////////// |
| 97 // StickyKeys | 97 // StickyKeys |
| 98 StickyKeysController::StickyKeysController() | 98 StickyKeysController::StickyKeysController() |
| 99 : enabled_(false) { | 99 : enabled_(false), |
| 100 mod3_enabled_(false), |
| 101 altgr_enabled_(false) { |
| 100 } | 102 } |
| 101 | 103 |
| 102 StickyKeysController::~StickyKeysController() { | 104 StickyKeysController::~StickyKeysController() { |
| 103 } | 105 } |
| 104 | 106 |
| 105 void StickyKeysController::Enable(bool enabled) { | 107 void StickyKeysController::Enable(bool enabled) { |
| 106 if (enabled_ != enabled) { | 108 if (enabled_ != enabled) { |
| 107 enabled_ = enabled; | 109 enabled_ = enabled; |
| 108 | 110 |
| 109 // Reset key handlers when activating sticky keys to ensure all | 111 // Reset key handlers when activating sticky keys to ensure all |
| 110 // the handlers' states are reset. | 112 // the handlers' states are reset. |
| 111 if (enabled_) { | 113 if (enabled_) { |
| 112 shift_sticky_key_.reset( | 114 shift_sticky_key_.reset( |
| 113 new StickyKeysHandler(ui::EF_SHIFT_DOWN, | 115 new StickyKeysHandler(ui::EF_SHIFT_DOWN, |
| 114 new StickyKeysHandlerDelegateImpl())); | 116 new StickyKeysHandlerDelegateImpl())); |
| 115 alt_sticky_key_.reset( | 117 alt_sticky_key_.reset( |
| 116 new StickyKeysHandler(ui::EF_ALT_DOWN, | 118 new StickyKeysHandler(ui::EF_ALT_DOWN, |
| 117 new StickyKeysHandlerDelegateImpl())); | 119 new StickyKeysHandlerDelegateImpl())); |
| 118 altgr_sticky_key_.reset( | 120 altgr_sticky_key_.reset( |
| 119 new StickyKeysHandler(ui::EF_ALTGR_DOWN, | 121 new StickyKeysHandler(ui::EF_ALTGR_DOWN, |
| 120 new StickyKeysHandlerDelegateImpl())); | 122 new StickyKeysHandlerDelegateImpl())); |
| 121 ctrl_sticky_key_.reset( | 123 ctrl_sticky_key_.reset( |
| 122 new StickyKeysHandler(ui::EF_CONTROL_DOWN, | 124 new StickyKeysHandler(ui::EF_CONTROL_DOWN, |
| 123 new StickyKeysHandlerDelegateImpl())); | 125 new StickyKeysHandlerDelegateImpl())); |
| 124 | 126 |
| 125 overlay_.reset(new StickyKeysOverlay()); | 127 overlay_.reset(new StickyKeysOverlay()); |
| 128 overlay_->SetModifiersVisible(mod3_enabled_, altgr_enabled_); |
| 126 } else if (overlay_.get()) { | 129 } else if (overlay_.get()) { |
| 127 overlay_->Show(false); | 130 overlay_->Show(false); |
| 128 } | 131 } |
| 129 } | 132 } |
| 130 } | 133 } |
| 131 | 134 |
| 135 void StickyKeysController::SetModifiersEnabled(bool mod3_enabled, |
| 136 bool altgr_enabled) { |
| 137 mod3_enabled_ = mod3_enabled; |
| 138 altgr_enabled_ = altgr_enabled; |
| 139 if (overlay_.get()) |
| 140 overlay_->SetModifiersVisible(mod3_enabled_, altgr_enabled_); |
| 141 } |
| 142 |
| 132 bool StickyKeysController::HandleKeyEvent(ui::KeyEvent* event) { | 143 bool StickyKeysController::HandleKeyEvent(ui::KeyEvent* event) { |
| 133 return shift_sticky_key_->HandleKeyEvent(event) || | 144 return shift_sticky_key_->HandleKeyEvent(event) || |
| 134 alt_sticky_key_->HandleKeyEvent(event) || | 145 alt_sticky_key_->HandleKeyEvent(event) || |
| 135 altgr_sticky_key_->HandleKeyEvent(event) || | 146 altgr_sticky_key_->HandleKeyEvent(event) || |
| 136 ctrl_sticky_key_->HandleKeyEvent(event); | 147 ctrl_sticky_key_->HandleKeyEvent(event); |
| 137 } | 148 } |
| 138 | 149 |
| 139 bool StickyKeysController::HandleMouseEvent(ui::MouseEvent* event) { | 150 bool StickyKeysController::HandleMouseEvent(ui::MouseEvent* event) { |
| 140 return shift_sticky_key_->HandleMouseEvent(event) || | 151 return shift_sticky_key_->HandleMouseEvent(event) || |
| 141 alt_sticky_key_->HandleMouseEvent(event) || | 152 alt_sticky_key_->HandleMouseEvent(event) || |
| (...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 488 &xievent->mods.effective)); | 499 &xievent->mods.effective)); |
| 489 } | 500 } |
| 490 } | 501 } |
| 491 #elif defined(USE_OZONE) | 502 #elif defined(USE_OZONE) |
| 492 NOTIMPLEMENTED() << "Modifier key is not handled"; | 503 NOTIMPLEMENTED() << "Modifier key is not handled"; |
| 493 #endif | 504 #endif |
| 494 event->set_flags(event->flags() | modifier_flag_); | 505 event->set_flags(event->flags() | modifier_flag_); |
| 495 } | 506 } |
| 496 | 507 |
| 497 } // namespace ash | 508 } // namespace ash |
| OLD | NEW |