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 #ifndef ASH_STICKY_KEYS_STICKY_KEYS_CONTROLLER_H_ | 5 #ifndef ASH_STICKY_KEYS_STICKY_KEYS_CONTROLLER_H_ |
6 #define ASH_STICKY_KEYS_STICKY_KEYS_CONTROLLER_H_ | 6 #define ASH_STICKY_KEYS_STICKY_KEYS_CONTROLLER_H_ |
7 | 7 |
| 8 #include <memory> |
| 9 |
8 #include "ash/ash_export.h" | 10 #include "ash/ash_export.h" |
9 #include "ash/sticky_keys/sticky_keys_state.h" | 11 #include "ash/sticky_keys/sticky_keys_state.h" |
10 #include "base/macros.h" | 12 #include "base/macros.h" |
11 #include "base/memory/scoped_ptr.h" | |
12 #include "ui/events/event_constants.h" | 13 #include "ui/events/event_constants.h" |
13 #include "ui/events/event_handler.h" | 14 #include "ui/events/event_handler.h" |
14 #include "ui/events/event_rewriter.h" | 15 #include "ui/events/event_rewriter.h" |
15 #include "ui/events/keycodes/keyboard_codes.h" | 16 #include "ui/events/keycodes/keyboard_codes.h" |
16 | 17 |
17 namespace ui { | 18 namespace ui { |
18 class Event; | 19 class Event; |
19 class KeyEvent; | 20 class KeyEvent; |
20 class MouseEvent; | 21 class MouseEvent; |
21 } // namespace ui | 22 } // namespace ui |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 int* flags); | 102 int* flags); |
102 | 103 |
103 // Obtains a pending modifier-up event. If the immediately previous | 104 // Obtains a pending modifier-up event. If the immediately previous |
104 // call to |Rewrite...Event()| or |NextDispatchEvent()| returned | 105 // call to |Rewrite...Event()| or |NextDispatchEvent()| returned |
105 // ui::EVENT_REWRITE_DISPATCH_ANOTHER, this sets |new_event| and returns: | 106 // ui::EVENT_REWRITE_DISPATCH_ANOTHER, this sets |new_event| and returns: |
106 // - ui::EVENT_REWRITE_DISPATCH_ANOTHER if there is at least one more | 107 // - ui::EVENT_REWRITE_DISPATCH_ANOTHER if there is at least one more |
107 // pending modifier-up event; | 108 // pending modifier-up event; |
108 // - ui::EVENT_REWRITE_REWRITE if this is the last or only modifier-up event; | 109 // - ui::EVENT_REWRITE_REWRITE if this is the last or only modifier-up event; |
109 // Otherwise, there is no pending modifier-up event, and this function | 110 // Otherwise, there is no pending modifier-up event, and this function |
110 // returns ui::EVENT_REWRITE_CONTINUE and sets |new_event| to NULL. | 111 // returns ui::EVENT_REWRITE_CONTINUE and sets |new_event| to NULL. |
111 ui::EventRewriteStatus NextDispatchEvent(scoped_ptr<ui::Event>* new_event); | 112 ui::EventRewriteStatus NextDispatchEvent( |
| 113 std::unique_ptr<ui::Event>* new_event); |
112 | 114 |
113 private: | 115 private: |
114 // Handles keyboard event. Returns true if Sticky key consumes keyboard event. | 116 // Handles keyboard event. Returns true if Sticky key consumes keyboard event. |
115 // Adds to |mod_down_flags| any flag to be added to the key event. | 117 // Adds to |mod_down_flags| any flag to be added to the key event. |
116 // Sets |released| if any modifier is to be released after the key event. | 118 // Sets |released| if any modifier is to be released after the key event. |
117 bool HandleKeyEvent(const ui::KeyEvent& event, | 119 bool HandleKeyEvent(const ui::KeyEvent& event, |
118 ui::KeyboardCode key_code, | 120 ui::KeyboardCode key_code, |
119 int* mod_down_flags, | 121 int* mod_down_flags, |
120 bool* released); | 122 bool* released); |
121 | 123 |
(...skipping 15 matching lines...) Expand all Loading... |
137 // Whether sticky keys is activated and modifying events. | 139 // Whether sticky keys is activated and modifying events. |
138 bool enabled_; | 140 bool enabled_; |
139 | 141 |
140 // Whether the current layout has a mod3 key. | 142 // Whether the current layout has a mod3 key. |
141 bool mod3_enabled_; | 143 bool mod3_enabled_; |
142 | 144 |
143 // Whether the current layout has an altgr key. | 145 // Whether the current layout has an altgr key. |
144 bool altgr_enabled_; | 146 bool altgr_enabled_; |
145 | 147 |
146 // Sticky key handlers. | 148 // Sticky key handlers. |
147 scoped_ptr<StickyKeysHandler> shift_sticky_key_; | 149 std::unique_ptr<StickyKeysHandler> shift_sticky_key_; |
148 scoped_ptr<StickyKeysHandler> alt_sticky_key_; | 150 std::unique_ptr<StickyKeysHandler> alt_sticky_key_; |
149 scoped_ptr<StickyKeysHandler> altgr_sticky_key_; | 151 std::unique_ptr<StickyKeysHandler> altgr_sticky_key_; |
150 scoped_ptr<StickyKeysHandler> ctrl_sticky_key_; | 152 std::unique_ptr<StickyKeysHandler> ctrl_sticky_key_; |
151 scoped_ptr<StickyKeysHandler> mod3_sticky_key_; | 153 std::unique_ptr<StickyKeysHandler> mod3_sticky_key_; |
152 scoped_ptr<StickyKeysHandler> search_sticky_key_; | 154 std::unique_ptr<StickyKeysHandler> search_sticky_key_; |
153 | 155 |
154 scoped_ptr<StickyKeysOverlay> overlay_; | 156 std::unique_ptr<StickyKeysOverlay> overlay_; |
155 | 157 |
156 DISALLOW_COPY_AND_ASSIGN(StickyKeysController); | 158 DISALLOW_COPY_AND_ASSIGN(StickyKeysController); |
157 }; | 159 }; |
158 | 160 |
159 // StickyKeysHandler handles key event and controls sticky keysfor specific | 161 // StickyKeysHandler handles key event and controls sticky keysfor specific |
160 // modifier keys. If monitored keyboard events are recieved, StickyKeysHandler | 162 // modifier keys. If monitored keyboard events are recieved, StickyKeysHandler |
161 // changes internal state. If non modifier keyboard events or mouse events are | 163 // changes internal state. If non modifier keyboard events or mouse events are |
162 // received, StickyKeysHandler will append modifier based on internal state. | 164 // received, StickyKeysHandler will append modifier based on internal state. |
163 // For other events, StickyKeysHandler does nothing. | 165 // For other events, StickyKeysHandler does nothing. |
164 // | 166 // |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 // Handles scroll event. Returns true if sticky key consumes scroll event. | 210 // Handles scroll event. Returns true if sticky key consumes scroll event. |
209 // Sets its own modifier flag in |mod_down_flags| if it is active and needs | 211 // Sets its own modifier flag in |mod_down_flags| if it is active and needs |
210 // to be added to the event, and sets |released| if releasing it. | 212 // to be added to the event, and sets |released| if releasing it. |
211 bool HandleScrollEvent(const ui::ScrollEvent& event, | 213 bool HandleScrollEvent(const ui::ScrollEvent& event, |
212 int* mod_down_flags, | 214 int* mod_down_flags, |
213 bool* released); | 215 bool* released); |
214 | 216 |
215 // Fetches a pending modifier-up event if one exists and the return | 217 // Fetches a pending modifier-up event if one exists and the return |
216 // parameter |new_event| is available (i.e. not set). Returns the number | 218 // parameter |new_event| is available (i.e. not set). Returns the number |
217 // of pending events still remaining to be returned. | 219 // of pending events still remaining to be returned. |
218 int GetModifierUpEvent(scoped_ptr<ui::Event>* new_event); | 220 int GetModifierUpEvent(std::unique_ptr<ui::Event>* new_event); |
219 | 221 |
220 // Returns current internal state. | 222 // Returns current internal state. |
221 StickyKeyState current_state() const { return current_state_; } | 223 StickyKeyState current_state() const { return current_state_; } |
222 | 224 |
223 private: | 225 private: |
224 // Represents event type in Sticky Key context. | 226 // Represents event type in Sticky Key context. |
225 enum KeyEventType { | 227 enum KeyEventType { |
226 TARGET_MODIFIER_DOWN, // The monitoring modifier key is down. | 228 TARGET_MODIFIER_DOWN, // The monitoring modifier key is down. |
227 TARGET_MODIFIER_UP, // The monitoring modifier key is up. | 229 TARGET_MODIFIER_UP, // The monitoring modifier key is up. |
228 NORMAL_KEY_DOWN, // The non modifier key is down. | 230 NORMAL_KEY_DOWN, // The non modifier key is down. |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 // shortcuts (eg. ctrl + t) during this time will prevent a transition to | 266 // shortcuts (eg. ctrl + t) during this time will prevent a transition to |
265 // the ENABLED state. | 267 // the ENABLED state. |
266 bool preparing_to_enable_; | 268 bool preparing_to_enable_; |
267 | 269 |
268 // Tracks the scroll direction of the current scroll sequence. Sticky keys | 270 // Tracks the scroll direction of the current scroll sequence. Sticky keys |
269 // stops modifying the scroll events of the sequence when the direction | 271 // stops modifying the scroll events of the sequence when the direction |
270 // changes. If no sequence is tracked, the value is 0. | 272 // changes. If no sequence is tracked, the value is 0. |
271 int scroll_delta_; | 273 int scroll_delta_; |
272 | 274 |
273 // The modifier up key event to be sent on non modifier key on ENABLED state. | 275 // The modifier up key event to be sent on non modifier key on ENABLED state. |
274 scoped_ptr<ui::KeyEvent> modifier_up_event_; | 276 std::unique_ptr<ui::KeyEvent> modifier_up_event_; |
275 | 277 |
276 DISALLOW_COPY_AND_ASSIGN(StickyKeysHandler); | 278 DISALLOW_COPY_AND_ASSIGN(StickyKeysHandler); |
277 }; | 279 }; |
278 | 280 |
279 } // namespace ash | 281 } // namespace ash |
280 | 282 |
281 #endif // ASH_STICKY_KEYS_STICKY_KEYS_CONTROLLER_H_ | 283 #endif // ASH_STICKY_KEYS_STICKY_KEYS_CONTROLLER_H_ |
OLD | NEW |