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 |