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_->SetModifierVisible(ui::EF_ALTGR_DOWN, 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()) | |
oshima
2014/03/10 22:11:08
you can just do
if (overlay_)
these days.
Zachary Kuznia
2014/03/11 21:01:02
Done.
| |
140 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, 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 |