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 |