| 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 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 } | 613 } |
| 594 | 614 |
| 595 void InputMethodEngine::PropertyActivate(const std::string& property_name) { | 615 void InputMethodEngine::PropertyActivate(const std::string& property_name) { |
| 596 observer_->OnMenuItemActivated(engine_id_, property_name); | 616 observer_->OnMenuItemActivated(engine_id_, property_name); |
| 597 } | 617 } |
| 598 | 618 |
| 599 void InputMethodEngine::Reset() { | 619 void InputMethodEngine::Reset() { |
| 600 observer_->OnReset(engine_id_); | 620 observer_->OnReset(engine_id_); |
| 601 } | 621 } |
| 602 | 622 |
| 603 namespace { | |
| 604 | |
| 605 void GetExtensionKeyboardEventFromKeyEvent( | |
| 606 const ui::KeyEvent& event, | |
| 607 InputMethodEngine::KeyboardEvent* ext_event) { | |
| 608 DCHECK(event.type() == ui::ET_KEY_RELEASED || | |
| 609 event.type() == ui::ET_KEY_PRESSED); | |
| 610 DCHECK(ext_event); | |
| 611 ext_event->type = (event.type() == ui::ET_KEY_RELEASED) ? "keyup" : "keydown"; | |
| 612 | |
| 613 ext_event->code = event.code(); | |
| 614 ext_event->alt_key = event.IsAltDown(); | |
| 615 ext_event->ctrl_key = event.IsControlDown(); | |
| 616 ext_event->shift_key = event.IsShiftDown(); | |
| 617 ext_event->caps_lock = event.IsCapsLockDown(); | |
| 618 ext_event->key = GetKeyFromEvent(event); | |
| 619 } | |
| 620 | |
| 621 } // namespace | |
| 622 | |
| 623 void InputMethodEngine::ProcessKeyEvent( | 623 void InputMethodEngine::ProcessKeyEvent( |
| 624 const ui::KeyEvent& key_event, | 624 const ui::KeyEvent& key_event, |
| 625 const KeyEventDoneCallback& callback) { | 625 const KeyEventDoneCallback& callback) { |
| 626 | 626 |
| 627 KeyEventDoneCallback *handler = new KeyEventDoneCallback(); | 627 KeyEventDoneCallback *handler = new KeyEventDoneCallback(); |
| 628 *handler = callback; | 628 *handler = callback; |
| 629 | 629 |
| 630 KeyboardEvent ext_event; | 630 KeyboardEvent ext_event; |
| 631 GetExtensionKeyboardEventFromKeyEvent(key_event, &ext_event); | 631 GetExtensionKeyboardEventFromKeyEvent(key_event, &ext_event); |
| 632 | 632 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 698 // TODO(nona): Implement it. | 698 // TODO(nona): Implement it. |
| 699 break; | 699 break; |
| 700 } | 700 } |
| 701 } | 701 } |
| 702 } | 702 } |
| 703 | 703 |
| 704 // TODO(nona): Support item.children. | 704 // TODO(nona): Support item.children. |
| 705 } | 705 } |
| 706 | 706 |
| 707 } // namespace chromeos | 707 } // namespace chromeos |
| OLD | NEW |