Chromium Code Reviews| 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 #include "ash/sticky_keys/sticky_keys_overlay.h" | 7 #include "ash/sticky_keys/sticky_keys_overlay.h" |
| 8 #include "base/debug/stack_trace.h" | 8 #include "base/debug/stack_trace.h" |
| 9 #include "ui/aura/window.h" | 9 #include "ui/aura/window.h" |
| 10 #include "ui/aura/window_tracker.h" | 10 #include "ui/aura/window_tracker.h" |
| 11 #include "ui/aura/window_tree_host.h" | 11 #include "ui/aura/window_tree_host.h" |
| 12 #include "ui/events/event.h" | 12 #include "ui/events/event.h" |
| 13 #include "ui/events/event_processor.h" | 13 #include "ui/events/event_processor.h" |
| 14 #include "ui/events/keycodes/keyboard_code_conversion.h" | 14 #include "ui/events/keycodes/keyboard_code_conversion.h" |
| 15 | 15 |
| 16 namespace ash { | 16 namespace ash { |
| 17 | 17 |
| 18 namespace { | 18 namespace { |
| 19 | 19 |
| 20 // Returns true if the type of mouse event should be modified by sticky keys. | 20 // Returns true if the type of mouse event should be modified by sticky keys. |
| 21 bool ShouldModifyMouseEvent(const ui::MouseEvent& event) { | 21 bool ShouldModifyMouseEvent(const ui::MouseEvent& event) { |
| 22 ui::EventType type = event.type(); | 22 ui::EventType type = event.type(); |
| 23 return type == ui::ET_MOUSE_PRESSED || type == ui::ET_MOUSE_RELEASED || | 23 return type == ui::ET_MOUSE_PRESSED || type == ui::ET_MOUSE_RELEASED || |
| 24 type == ui::ET_MOUSEWHEEL; | 24 type == ui::ET_MOUSEWHEEL; |
| 25 } | 25 } |
| 26 | 26 |
| 27 // Handle the common tail of event rewriting. | 27 // Handle the common tail of event rewriting. |
| 28 ui::EventRewriteStatus RewriteUpdate(bool consumed, | 28 ui::EventRewriteStatus RewriteUpdate( |
| 29 bool released, | 29 bool consumed, |
| 30 int mod_down_flags, | 30 bool released, |
| 31 int* flags) { | 31 int mod_down_flags, |
| 32 int changed_down_flags = mod_down_flags & ~*flags; | 32 const ui::Event& event, |
| 33 *flags |= mod_down_flags; | 33 std::unique_ptr<ui::Event>* rewritten_event) { |
| 34 int changed_down_flags = mod_down_flags & event.flags(); | |
| 34 if (consumed) | 35 if (consumed) |
| 35 return ui::EVENT_REWRITE_DISCARD; | 36 return ui::EVENT_REWRITE_DISCARD; |
| 36 if (released) | 37 if (released) |
| 37 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; | 38 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; |
| 38 if (changed_down_flags) | 39 if (changed_down_flags) { |
| 40 *rewritten_event = ui::Event::Clone(event); | |
| 41 (*rewritten_event)->set_flags(event.flags() | mod_down_flags); | |
| 39 return ui::EVENT_REWRITE_REWRITTEN; | 42 return ui::EVENT_REWRITE_REWRITTEN; |
| 43 } | |
| 40 return ui::EVENT_REWRITE_CONTINUE; | 44 return ui::EVENT_REWRITE_CONTINUE; |
| 41 } | 45 } |
| 42 | 46 |
| 43 } // namespace | 47 } // namespace |
| 44 | 48 |
| 45 /////////////////////////////////////////////////////////////////////////////// | 49 /////////////////////////////////////////////////////////////////////////////// |
| 46 // StickyKeys | 50 // StickyKeys |
| 47 StickyKeysController::StickyKeysController() | 51 StickyKeysController::StickyKeysController() |
| 48 : enabled_(false), mod3_enabled_(false), altgr_enabled_(false) {} | 52 : enabled_(false), mod3_enabled_(false), altgr_enabled_(false) {} |
| 49 | 53 |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 75 void StickyKeysController::SetModifiersEnabled(bool mod3_enabled, | 79 void StickyKeysController::SetModifiersEnabled(bool mod3_enabled, |
| 76 bool altgr_enabled) { | 80 bool altgr_enabled) { |
| 77 mod3_enabled_ = mod3_enabled; | 81 mod3_enabled_ = mod3_enabled; |
| 78 altgr_enabled_ = altgr_enabled; | 82 altgr_enabled_ = altgr_enabled; |
| 79 if (overlay_) { | 83 if (overlay_) { |
| 80 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); | 84 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); |
| 81 overlay_->SetModifierVisible(ui::EF_MOD3_DOWN, mod3_enabled_); | 85 overlay_->SetModifierVisible(ui::EF_MOD3_DOWN, mod3_enabled_); |
| 82 } | 86 } |
| 83 } | 87 } |
| 84 | 88 |
| 89 StickyKeysOverlay* StickyKeysController::GetOverlayForTest() { | |
| 90 return overlay_.get(); | |
| 91 } | |
| 92 | |
| 93 ui::EventRewriteStatus StickyKeysController::RewriteEvent( | |
| 94 const ui::Event& event, | |
| 95 std::unique_ptr<ui::Event>* rewritten_event) { | |
| 96 DCHECK(rewritten_event); | |
| 97 if (!enabled_) | |
| 98 return ui::EVENT_REWRITE_CONTINUE; | |
| 99 | |
| 100 if (event.IsKeyEvent()) { | |
| 101 int mod_down_flags = 0; | |
| 102 bool released = false; | |
| 103 bool consumed = | |
| 104 HandleKeyEvent(*event.AsKeyEvent(), &mod_down_flags, &released); | |
| 105 UpdateOverlay(); | |
| 106 return RewriteUpdate(consumed, released, mod_down_flags, event, | |
| 107 rewritten_event); | |
| 108 } else if (event.IsMouseEvent()) { | |
| 109 int mod_down_flags = 0; | |
| 110 bool released = false; | |
| 111 bool consumed = | |
| 112 HandleMouseEvent(*event.AsMouseEvent(), &mod_down_flags, &released); | |
| 113 UpdateOverlay(); | |
| 114 return RewriteUpdate(consumed, released, mod_down_flags, event, | |
| 115 rewritten_event); | |
| 116 } else if (event.IsScrollEvent()) { | |
| 117 int mod_down_flags = 0; | |
| 118 bool released = false; | |
| 119 bool consumed = | |
| 120 HandleScrollEvent(*event.AsScrollEvent(), &mod_down_flags, &released); | |
| 121 UpdateOverlay(); | |
| 122 return RewriteUpdate(consumed, released, mod_down_flags, event, | |
| 123 rewritten_event); | |
| 124 } | |
| 125 NOTREACHED(); | |
| 126 return ui::EVENT_REWRITE_CONTINUE; | |
| 127 } | |
| 128 | |
| 129 ui::EventRewriteStatus StickyKeysController::NextDispatchEvent( | |
| 130 const ui::Event& last_event, | |
| 131 std::unique_ptr<ui::Event>* new_event) { | |
| 132 DCHECK(new_event); | |
| 133 new_event->reset(); | |
| 134 int remaining = shift_sticky_key_->GetModifierUpEvent(new_event) + | |
| 135 alt_sticky_key_->GetModifierUpEvent(new_event) + | |
| 136 altgr_sticky_key_->GetModifierUpEvent(new_event) + | |
| 137 ctrl_sticky_key_->GetModifierUpEvent(new_event) + | |
| 138 mod3_sticky_key_->GetModifierUpEvent(new_event) + | |
| 139 search_sticky_key_->GetModifierUpEvent(new_event); | |
| 140 if (!new_event) | |
| 141 return ui::EVENT_REWRITE_CONTINUE; | |
| 142 if (remaining) | |
| 143 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; | |
| 144 return ui::EVENT_REWRITE_REWRITTEN; | |
| 145 } | |
| 146 | |
| 85 bool StickyKeysController::HandleKeyEvent(const ui::KeyEvent& event, | 147 bool StickyKeysController::HandleKeyEvent(const ui::KeyEvent& event, |
| 86 ui::KeyboardCode key_code, | |
| 87 int* mod_down_flags, | 148 int* mod_down_flags, |
| 88 bool* released) { | 149 bool* released) { |
| 89 return shift_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | 150 return shift_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) || |
| 90 released) || | 151 alt_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) || |
| 91 alt_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | 152 altgr_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) || |
| 92 released) || | 153 ctrl_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) || |
| 93 altgr_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | 154 mod3_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) || |
| 94 released) || | 155 search_sticky_key_->HandleKeyEvent(event, mod_down_flags, released); |
| 95 ctrl_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | |
| 96 released) || | |
| 97 mod3_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | |
| 98 released) || | |
| 99 search_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, | |
| 100 released); | |
| 101 } | 156 } |
| 102 | 157 |
| 103 bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event, | 158 bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event, |
| 104 int* mod_down_flags, | 159 int* mod_down_flags, |
| 105 bool* released) { | 160 bool* released) { |
| 106 return shift_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || | 161 return shift_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || |
| 107 alt_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || | 162 alt_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || |
| 108 altgr_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || | 163 altgr_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || |
| 109 ctrl_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || | 164 ctrl_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || |
| 110 mod3_sticky_key_->HandleMouseEvent(event, mod_down_flags, released); | 165 mod3_sticky_key_->HandleMouseEvent(event, mod_down_flags, released); |
| 111 } | 166 } |
| 112 | 167 |
| 113 bool StickyKeysController::HandleScrollEvent(const ui::ScrollEvent& event, | 168 bool StickyKeysController::HandleScrollEvent(const ui::ScrollEvent& event, |
| 114 int* mod_down_flags, | 169 int* mod_down_flags, |
| 115 bool* released) { | 170 bool* released) { |
| 116 return shift_sticky_key_->HandleScrollEvent(event, mod_down_flags, | 171 return shift_sticky_key_->HandleScrollEvent(event, mod_down_flags, |
| 117 released) || | 172 released) || |
| 118 alt_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) || | 173 alt_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) || |
| 119 altgr_sticky_key_->HandleScrollEvent(event, mod_down_flags, | 174 altgr_sticky_key_->HandleScrollEvent(event, mod_down_flags, |
| 120 released) || | 175 released) || |
| 121 ctrl_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) || | 176 ctrl_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) || |
| 122 mod3_sticky_key_->HandleScrollEvent(event, mod_down_flags, released); | 177 mod3_sticky_key_->HandleScrollEvent(event, mod_down_flags, released); |
| 123 } | 178 } |
| 124 | 179 |
| 125 ui::EventRewriteStatus StickyKeysController::RewriteKeyEvent( | |
|
Tim Song
2017/03/07 18:48:54
Could you keep these functions (but make them priv
Peng
2017/03/07 19:43:16
Done
| |
| 126 const ui::KeyEvent& event, | |
| 127 ui::KeyboardCode key_code, | |
| 128 int* flags) { | |
| 129 if (!enabled_) | |
| 130 return ui::EVENT_REWRITE_CONTINUE; | |
| 131 int mod_down_flags = 0; | |
| 132 bool released = false; | |
| 133 bool consumed = HandleKeyEvent(event, key_code, &mod_down_flags, &released); | |
| 134 UpdateOverlay(); | |
| 135 return RewriteUpdate(consumed, released, mod_down_flags, flags); | |
| 136 } | |
| 137 | |
| 138 ui::EventRewriteStatus StickyKeysController::RewriteMouseEvent( | |
| 139 const ui::MouseEvent& event, | |
| 140 int* flags) { | |
| 141 if (!enabled_) | |
| 142 return ui::EVENT_REWRITE_CONTINUE; | |
| 143 int mod_down_flags = 0; | |
| 144 bool released = false; | |
| 145 bool consumed = HandleMouseEvent(event, &mod_down_flags, &released); | |
| 146 UpdateOverlay(); | |
| 147 return RewriteUpdate(consumed, released, mod_down_flags, flags); | |
| 148 } | |
| 149 | |
| 150 ui::EventRewriteStatus StickyKeysController::RewriteScrollEvent( | |
| 151 const ui::ScrollEvent& event, | |
| 152 int* flags) { | |
| 153 if (!enabled_) | |
| 154 return ui::EVENT_REWRITE_CONTINUE; | |
| 155 int mod_down_flags = 0; | |
| 156 bool released = false; | |
| 157 bool consumed = HandleScrollEvent(event, &mod_down_flags, &released); | |
| 158 UpdateOverlay(); | |
| 159 return RewriteUpdate(consumed, released, mod_down_flags, flags); | |
| 160 } | |
| 161 | |
| 162 ui::EventRewriteStatus StickyKeysController::NextDispatchEvent( | |
| 163 std::unique_ptr<ui::Event>* new_event) { | |
| 164 DCHECK(new_event); | |
| 165 new_event->reset(); | |
| 166 int remaining = shift_sticky_key_->GetModifierUpEvent(new_event) + | |
| 167 alt_sticky_key_->GetModifierUpEvent(new_event) + | |
| 168 altgr_sticky_key_->GetModifierUpEvent(new_event) + | |
| 169 ctrl_sticky_key_->GetModifierUpEvent(new_event) + | |
| 170 mod3_sticky_key_->GetModifierUpEvent(new_event) + | |
| 171 search_sticky_key_->GetModifierUpEvent(new_event); | |
| 172 if (!new_event) | |
| 173 return ui::EVENT_REWRITE_CONTINUE; | |
| 174 if (remaining) | |
| 175 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; | |
| 176 return ui::EVENT_REWRITE_REWRITTEN; | |
| 177 } | |
| 178 | |
| 179 void StickyKeysController::UpdateOverlay() { | 180 void StickyKeysController::UpdateOverlay() { |
| 180 overlay_->SetModifierKeyState(ui::EF_SHIFT_DOWN, | 181 overlay_->SetModifierKeyState(ui::EF_SHIFT_DOWN, |
| 181 shift_sticky_key_->current_state()); | 182 shift_sticky_key_->current_state()); |
| 182 overlay_->SetModifierKeyState(ui::EF_CONTROL_DOWN, | 183 overlay_->SetModifierKeyState(ui::EF_CONTROL_DOWN, |
| 183 ctrl_sticky_key_->current_state()); | 184 ctrl_sticky_key_->current_state()); |
| 184 overlay_->SetModifierKeyState(ui::EF_ALT_DOWN, | 185 overlay_->SetModifierKeyState(ui::EF_ALT_DOWN, |
| 185 alt_sticky_key_->current_state()); | 186 alt_sticky_key_->current_state()); |
| 186 overlay_->SetModifierKeyState(ui::EF_COMMAND_DOWN, | 187 overlay_->SetModifierKeyState(ui::EF_COMMAND_DOWN, |
| 187 search_sticky_key_->current_state()); | 188 search_sticky_key_->current_state()); |
| 188 overlay_->SetModifierKeyState(ui::EF_ALTGR_DOWN, | 189 overlay_->SetModifierKeyState(ui::EF_ALTGR_DOWN, |
| 189 altgr_sticky_key_->current_state()); | 190 altgr_sticky_key_->current_state()); |
| 190 overlay_->SetModifierKeyState(ui::EF_MOD3_DOWN, | 191 overlay_->SetModifierKeyState(ui::EF_MOD3_DOWN, |
| 191 mod3_sticky_key_->current_state()); | 192 mod3_sticky_key_->current_state()); |
| 192 | 193 |
| 193 bool key_in_use = | 194 bool key_in_use = |
| 194 shift_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || | 195 shift_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || |
| 195 alt_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || | 196 alt_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || |
| 196 altgr_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || | 197 altgr_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || |
| 197 ctrl_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || | 198 ctrl_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || |
| 198 search_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || | 199 search_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || |
| 199 mod3_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED; | 200 mod3_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED; |
| 200 | 201 |
| 201 overlay_->Show(enabled_ && key_in_use); | 202 overlay_->Show(enabled_ && key_in_use); |
| 202 } | 203 } |
| 203 | 204 |
| 204 StickyKeysOverlay* StickyKeysController::GetOverlayForTest() { | |
| 205 return overlay_.get(); | |
| 206 } | |
| 207 | |
| 208 /////////////////////////////////////////////////////////////////////////////// | 205 /////////////////////////////////////////////////////////////////////////////// |
| 209 // StickyKeysHandler | 206 // StickyKeysHandler |
| 210 StickyKeysHandler::StickyKeysHandler(ui::EventFlags modifier_flag) | 207 StickyKeysHandler::StickyKeysHandler(ui::EventFlags modifier_flag) |
| 211 : modifier_flag_(modifier_flag), | 208 : modifier_flag_(modifier_flag), |
| 212 current_state_(STICKY_KEY_STATE_DISABLED), | 209 current_state_(STICKY_KEY_STATE_DISABLED), |
| 213 preparing_to_enable_(false), | 210 preparing_to_enable_(false), |
| 214 scroll_delta_(0) {} | 211 scroll_delta_(0) {} |
| 215 | 212 |
| 216 StickyKeysHandler::~StickyKeysHandler() {} | 213 StickyKeysHandler::~StickyKeysHandler() {} |
| 217 | 214 |
| 218 bool StickyKeysHandler::HandleKeyEvent(const ui::KeyEvent& event, | 215 bool StickyKeysHandler::HandleKeyEvent(const ui::KeyEvent& event, |
| 219 ui::KeyboardCode key_code, | |
| 220 int* mod_down_flags, | 216 int* mod_down_flags, |
| 221 bool* released) { | 217 bool* released) { |
| 222 switch (current_state_) { | 218 switch (current_state_) { |
| 223 case STICKY_KEY_STATE_DISABLED: | 219 case STICKY_KEY_STATE_DISABLED: |
| 224 return HandleDisabledState(event, key_code); | 220 return HandleDisabledState(event); |
| 225 case STICKY_KEY_STATE_ENABLED: | 221 case STICKY_KEY_STATE_ENABLED: |
| 226 return HandleEnabledState(event, key_code, mod_down_flags, released); | 222 return HandleEnabledState(event, mod_down_flags, released); |
| 227 case STICKY_KEY_STATE_LOCKED: | 223 case STICKY_KEY_STATE_LOCKED: |
| 228 return HandleLockedState(event, key_code, mod_down_flags, released); | 224 return HandleLockedState(event, mod_down_flags, released); |
| 229 } | 225 } |
| 230 NOTREACHED(); | 226 NOTREACHED(); |
| 231 return false; | 227 return false; |
| 232 } | 228 } |
| 233 | 229 |
| 234 bool StickyKeysHandler::HandleMouseEvent(const ui::MouseEvent& event, | 230 bool StickyKeysHandler::HandleMouseEvent(const ui::MouseEvent& event, |
| 235 int* mod_down_flags, | 231 int* mod_down_flags, |
| 236 bool* released) { | 232 bool* released) { |
| 237 if (ShouldModifyMouseEvent(event)) | 233 if (ShouldModifyMouseEvent(event)) |
| 238 preparing_to_enable_ = false; | 234 preparing_to_enable_ = false; |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 327 return type == ui::ET_KEY_PRESSED ? NORMAL_KEY_DOWN : NORMAL_KEY_UP; | 323 return type == ui::ET_KEY_PRESSED ? NORMAL_KEY_DOWN : NORMAL_KEY_UP; |
| 328 } | 324 } |
| 329 | 325 |
| 330 if (is_target_key) { | 326 if (is_target_key) { |
| 331 return type == ui::ET_KEY_PRESSED ? TARGET_MODIFIER_DOWN | 327 return type == ui::ET_KEY_PRESSED ? TARGET_MODIFIER_DOWN |
| 332 : TARGET_MODIFIER_UP; | 328 : TARGET_MODIFIER_UP; |
| 333 } | 329 } |
| 334 return type == ui::ET_KEY_PRESSED ? OTHER_MODIFIER_DOWN : OTHER_MODIFIER_UP; | 330 return type == ui::ET_KEY_PRESSED ? OTHER_MODIFIER_DOWN : OTHER_MODIFIER_UP; |
| 335 } | 331 } |
| 336 | 332 |
| 337 bool StickyKeysHandler::HandleDisabledState(const ui::KeyEvent& event, | 333 bool StickyKeysHandler::HandleDisabledState(const ui::KeyEvent& event) { |
| 338 ui::KeyboardCode key_code) { | 334 switch (TranslateKeyEvent(event.type(), event.key_code())) { |
| 339 switch (TranslateKeyEvent(event.type(), key_code)) { | |
| 340 case TARGET_MODIFIER_UP: | 335 case TARGET_MODIFIER_UP: |
| 341 if (preparing_to_enable_) { | 336 if (preparing_to_enable_) { |
| 342 preparing_to_enable_ = false; | 337 preparing_to_enable_ = false; |
| 343 scroll_delta_ = 0; | 338 scroll_delta_ = 0; |
| 344 current_state_ = STICKY_KEY_STATE_ENABLED; | 339 current_state_ = STICKY_KEY_STATE_ENABLED; |
| 345 modifier_up_event_.reset(new ui::KeyEvent(event)); | 340 modifier_up_event_.reset(new ui::KeyEvent(event)); |
| 346 return true; | 341 return true; |
| 347 } | 342 } |
| 348 return false; | 343 return false; |
| 349 case TARGET_MODIFIER_DOWN: | 344 case TARGET_MODIFIER_DOWN: |
| 350 preparing_to_enable_ = true; | 345 preparing_to_enable_ = true; |
| 351 return false; | 346 return false; |
| 352 case NORMAL_KEY_DOWN: | 347 case NORMAL_KEY_DOWN: |
| 353 preparing_to_enable_ = false; | 348 preparing_to_enable_ = false; |
| 354 return false; | 349 return false; |
| 355 case NORMAL_KEY_UP: | 350 case NORMAL_KEY_UP: |
| 356 case OTHER_MODIFIER_DOWN: | 351 case OTHER_MODIFIER_DOWN: |
| 357 case OTHER_MODIFIER_UP: | 352 case OTHER_MODIFIER_UP: |
| 358 return false; | 353 return false; |
| 359 } | 354 } |
| 360 NOTREACHED(); | 355 NOTREACHED(); |
| 361 return false; | 356 return false; |
| 362 } | 357 } |
| 363 | 358 |
| 364 bool StickyKeysHandler::HandleEnabledState(const ui::KeyEvent& event, | 359 bool StickyKeysHandler::HandleEnabledState(const ui::KeyEvent& event, |
| 365 ui::KeyboardCode key_code, | |
| 366 int* mod_down_flags, | 360 int* mod_down_flags, |
| 367 bool* released) { | 361 bool* released) { |
| 368 switch (TranslateKeyEvent(event.type(), key_code)) { | 362 switch (TranslateKeyEvent(event.type(), event.key_code())) { |
| 369 case NORMAL_KEY_UP: | 363 case NORMAL_KEY_UP: |
| 370 case TARGET_MODIFIER_DOWN: | 364 case TARGET_MODIFIER_DOWN: |
| 371 return false; | 365 return false; |
| 372 case TARGET_MODIFIER_UP: | 366 case TARGET_MODIFIER_UP: |
| 373 current_state_ = STICKY_KEY_STATE_LOCKED; | 367 current_state_ = STICKY_KEY_STATE_LOCKED; |
| 374 modifier_up_event_.reset(); | 368 modifier_up_event_.reset(); |
| 375 return true; | 369 return true; |
| 376 case NORMAL_KEY_DOWN: { | 370 case NORMAL_KEY_DOWN: { |
| 377 current_state_ = STICKY_KEY_STATE_DISABLED; | 371 current_state_ = STICKY_KEY_STATE_DISABLED; |
| 378 *mod_down_flags |= modifier_flag_; | 372 *mod_down_flags |= modifier_flag_; |
| 379 *released = true; | 373 *released = true; |
| 380 return false; | 374 return false; |
| 381 } | 375 } |
| 382 case OTHER_MODIFIER_DOWN: | 376 case OTHER_MODIFIER_DOWN: |
| 383 case OTHER_MODIFIER_UP: | 377 case OTHER_MODIFIER_UP: |
| 384 return false; | 378 return false; |
| 385 } | 379 } |
| 386 NOTREACHED(); | 380 NOTREACHED(); |
| 387 return false; | 381 return false; |
| 388 } | 382 } |
| 389 | 383 |
| 390 bool StickyKeysHandler::HandleLockedState(const ui::KeyEvent& event, | 384 bool StickyKeysHandler::HandleLockedState(const ui::KeyEvent& event, |
| 391 ui::KeyboardCode key_code, | |
| 392 int* mod_down_flags, | 385 int* mod_down_flags, |
| 393 bool* released) { | 386 bool* released) { |
| 394 switch (TranslateKeyEvent(event.type(), key_code)) { | 387 switch (TranslateKeyEvent(event.type(), event.key_code())) { |
| 395 case TARGET_MODIFIER_DOWN: | 388 case TARGET_MODIFIER_DOWN: |
| 396 return true; | 389 return true; |
| 397 case TARGET_MODIFIER_UP: | 390 case TARGET_MODIFIER_UP: |
| 398 current_state_ = STICKY_KEY_STATE_DISABLED; | 391 current_state_ = STICKY_KEY_STATE_DISABLED; |
| 399 return false; | 392 return false; |
| 400 case NORMAL_KEY_DOWN: | 393 case NORMAL_KEY_DOWN: |
| 401 case NORMAL_KEY_UP: | 394 case NORMAL_KEY_UP: |
| 402 *mod_down_flags |= modifier_flag_; | 395 *mod_down_flags |= modifier_flag_; |
| 403 return false; | 396 return false; |
| 404 case OTHER_MODIFIER_DOWN: | 397 case OTHER_MODIFIER_DOWN: |
| 405 case OTHER_MODIFIER_UP: | 398 case OTHER_MODIFIER_UP: |
| 406 return false; | 399 return false; |
| 407 } | 400 } |
| 408 NOTREACHED(); | 401 NOTREACHED(); |
| 409 return false; | 402 return false; |
| 410 } | 403 } |
| 411 | 404 |
| 412 } // namespace ash | 405 } // namespace ash |
| OLD | NEW |