| 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 "chrome/browser/chromeos/input_method/input_method_engine.h" | 5 #include "chrome/browser/chromeos/input_method/input_method_engine.h" |
| 6 | 6 |
| 7 #undef FocusIn | 7 #undef FocusIn |
| 8 #undef FocusOut | 8 #undef FocusOut |
| 9 #undef RootWindow | 9 #undef RootWindow |
| 10 #include <map> | 10 #include <map> |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 event.key_code(), | 85 event.key_code(), |
| 86 event.flags() ^ ui::EF_CONTROL_DOWN, | 86 event.flags() ^ ui::EF_CONTROL_DOWN, |
| 87 false); | 87 false); |
| 88 ch = event_no_ctrl.GetCharacter(); | 88 ch = event_no_ctrl.GetCharacter(); |
| 89 } else { | 89 } else { |
| 90 ch = event.GetCharacter(); | 90 ch = event.GetCharacter(); |
| 91 } | 91 } |
| 92 return base::UTF16ToUTF8(base::string16(1, ch)); | 92 return base::UTF16ToUTF8(base::string16(1, ch)); |
| 93 } | 93 } |
| 94 | 94 |
| 95 void GetExtensionKeyboardEventFromKeyEvent( |
| 96 const ui::KeyEvent& event, |
| 97 InputMethodEngine::KeyboardEvent* ext_event) { |
| 98 DCHECK(event.type() == ui::ET_KEY_RELEASED || |
| 99 event.type() == ui::ET_KEY_PRESSED); |
| 100 DCHECK(ext_event); |
| 101 ext_event->type = (event.type() == ui::ET_KEY_RELEASED) ? "keyup" : "keydown"; |
| 102 |
| 103 ext_event->code = event.code(); |
| 104 ext_event->key_code = static_cast<int>(event.key_code()); |
| 105 ext_event->alt_key = event.IsAltDown(); |
| 106 ext_event->ctrl_key = event.IsControlDown(); |
| 107 ext_event->shift_key = event.IsShiftDown(); |
| 108 ext_event->caps_lock = event.IsCapsLockDown(); |
| 109 ext_event->key = GetKeyFromEvent(event); |
| 110 } |
| 111 |
| 95 } // namespace | 112 } // namespace |
| 96 | 113 |
| 97 InputMethodEngine::InputMethodEngine() | 114 InputMethodEngine::InputMethodEngine() |
| 98 : current_input_type_(ui::TEXT_INPUT_TYPE_NONE), | 115 : current_input_type_(ui::TEXT_INPUT_TYPE_NONE), |
| 99 active_(false), | 116 active_(false), |
| 100 context_id_(0), | 117 context_id_(0), |
| 101 next_context_id_(1), | 118 next_context_id_(1), |
| 102 composition_text_(new CompositionText()), | 119 composition_text_(new CompositionText()), |
| 103 composition_cursor_(0), | 120 composition_cursor_(0), |
| 104 candidate_window_(new ui::CandidateWindow()), | 121 candidate_window_(new ui::CandidateWindow()), |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 return false; | 297 return false; |
| 281 } | 298 } |
| 282 | 299 |
| 283 ui::EventProcessor* dispatcher = | 300 ui::EventProcessor* dispatcher = |
| 284 ash::Shell::GetPrimaryRootWindow()->GetHost()->event_processor(); | 301 ash::Shell::GetPrimaryRootWindow()->GetHost()->event_processor(); |
| 285 | 302 |
| 286 for (size_t i = 0; i < events.size(); ++i) { | 303 for (size_t i = 0; i < events.size(); ++i) { |
| 287 const KeyboardEvent& event = events[i]; | 304 const KeyboardEvent& event = events[i]; |
| 288 const ui::EventType type = | 305 const ui::EventType type = |
| 289 (event.type == "keyup") ? ui::ET_KEY_RELEASED : ui::ET_KEY_PRESSED; | 306 (event.type == "keyup") ? ui::ET_KEY_RELEASED : ui::ET_KEY_PRESSED; |
| 307 ui::KeyboardCode key_code = static_cast<ui::KeyboardCode>(event.key_code); |
| 308 if (key_code == ui::VKEY_UNKNOWN) |
| 309 key_code = ui::DomKeycodeToKeyboardCode(event.code); |
| 290 | 310 |
| 291 int flags = ui::EF_NONE; | 311 int flags = ui::EF_NONE; |
| 292 flags |= event.alt_key ? ui::EF_ALT_DOWN : ui::EF_NONE; | 312 flags |= event.alt_key ? ui::EF_ALT_DOWN : ui::EF_NONE; |
| 293 flags |= event.ctrl_key ? ui::EF_CONTROL_DOWN : ui::EF_NONE; | 313 flags |= event.ctrl_key ? ui::EF_CONTROL_DOWN : ui::EF_NONE; |
| 294 flags |= event.shift_key ? ui::EF_SHIFT_DOWN : ui::EF_NONE; | 314 flags |= event.shift_key ? ui::EF_SHIFT_DOWN : ui::EF_NONE; |
| 295 flags |= event.caps_lock ? ui::EF_CAPS_LOCK_DOWN : ui::EF_NONE; | 315 flags |= event.caps_lock ? ui::EF_CAPS_LOCK_DOWN : ui::EF_NONE; |
| 296 | 316 |
| 297 ui::KeyEvent ui_event(type, | 317 ui::KeyEvent ui_event(type, |
| 298 ui::DomKeycodeToKeyboardCode(event.code), | 318 key_code, |
| 299 event.code, | 319 event.code, |
| 300 flags, | 320 flags, |
| 301 false /* is_char */); | 321 false /* is_char */); |
| 302 if (!event.key.empty()) | 322 if (!event.key.empty()) |
| 303 ui_event.set_character(base::UTF8ToUTF16(event.key)[0]); | 323 ui_event.set_character(base::UTF8ToUTF16(event.key)[0]); |
| 304 base::AutoReset<const ui::KeyEvent*> reset_sent_key(&sent_key_event_, | 324 base::AutoReset<const ui::KeyEvent*> reset_sent_key(&sent_key_event_, |
| 305 &ui_event); | 325 &ui_event); |
| 306 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&ui_event); | 326 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&ui_event); |
| 307 if (details.dispatcher_destroyed) | 327 if (details.dispatcher_destroyed) |
| 308 break; | 328 break; |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 } | 594 } |
| 575 | 595 |
| 576 void InputMethodEngine::PropertyActivate(const std::string& property_name) { | 596 void InputMethodEngine::PropertyActivate(const std::string& property_name) { |
| 577 observer_->OnMenuItemActivated(engine_id_, property_name); | 597 observer_->OnMenuItemActivated(engine_id_, property_name); |
| 578 } | 598 } |
| 579 | 599 |
| 580 void InputMethodEngine::Reset() { | 600 void InputMethodEngine::Reset() { |
| 581 observer_->OnReset(engine_id_); | 601 observer_->OnReset(engine_id_); |
| 582 } | 602 } |
| 583 | 603 |
| 584 namespace { | |
| 585 | |
| 586 void GetExtensionKeyboardEventFromKeyEvent( | |
| 587 const ui::KeyEvent& event, | |
| 588 InputMethodEngine::KeyboardEvent* ext_event) { | |
| 589 DCHECK(event.type() == ui::ET_KEY_RELEASED || | |
| 590 event.type() == ui::ET_KEY_PRESSED); | |
| 591 DCHECK(ext_event); | |
| 592 ext_event->type = (event.type() == ui::ET_KEY_RELEASED) ? "keyup" : "keydown"; | |
| 593 | |
| 594 ext_event->code = event.code(); | |
| 595 ext_event->alt_key = event.IsAltDown(); | |
| 596 ext_event->ctrl_key = event.IsControlDown(); | |
| 597 ext_event->shift_key = event.IsShiftDown(); | |
| 598 ext_event->caps_lock = event.IsCapsLockDown(); | |
| 599 ext_event->key = GetKeyFromEvent(event); | |
| 600 } | |
| 601 | |
| 602 } // namespace | |
| 603 | |
| 604 void InputMethodEngine::ProcessKeyEvent( | 604 void InputMethodEngine::ProcessKeyEvent( |
| 605 const ui::KeyEvent& key_event, | 605 const ui::KeyEvent& key_event, |
| 606 const KeyEventDoneCallback& callback) { | 606 const KeyEventDoneCallback& callback) { |
| 607 | 607 |
| 608 KeyEventDoneCallback *handler = new KeyEventDoneCallback(); | 608 KeyEventDoneCallback *handler = new KeyEventDoneCallback(); |
| 609 *handler = callback; | 609 *handler = callback; |
| 610 | 610 |
| 611 KeyboardEvent ext_event; | 611 KeyboardEvent ext_event; |
| 612 GetExtensionKeyboardEventFromKeyEvent(key_event, &ext_event); | 612 GetExtensionKeyboardEventFromKeyEvent(key_event, &ext_event); |
| 613 | 613 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 679 // TODO(nona): Implement it. | 679 // TODO(nona): Implement it. |
| 680 break; | 680 break; |
| 681 } | 681 } |
| 682 } | 682 } |
| 683 } | 683 } |
| 684 | 684 |
| 685 // TODO(nona): Support item.children. | 685 // TODO(nona): Support item.children. |
| 686 } | 686 } |
| 687 | 687 |
| 688 } // namespace chromeos | 688 } // namespace chromeos |
| OLD | NEW |