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 |