| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_ibus.h" | 5 #include "chrome/browser/chromeos/input_method/input_method_engine_ibus.h" |
| 6 | 6 |
| 7 #define XK_MISCELLANY | 7 #define XK_MISCELLANY |
| 8 #include <X11/keysymdef.h> | 8 #include <X11/keysymdef.h> |
| 9 #include <map> | 9 #include <map> |
| 10 | 10 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 #include "chromeos/ime/ibus_keymap.h" | 25 #include "chromeos/ime/ibus_keymap.h" |
| 26 #include "chromeos/ime/input_method_manager.h" | 26 #include "chromeos/ime/input_method_manager.h" |
| 27 #include "dbus/object_path.h" | 27 #include "dbus/object_path.h" |
| 28 | 28 |
| 29 namespace chromeos { | 29 namespace chromeos { |
| 30 const char* kErrorNotActive = "IME is not active"; | 30 const char* kErrorNotActive = "IME is not active"; |
| 31 const char* kErrorWrongContext = "Context is not active"; | 31 const char* kErrorWrongContext = "Context is not active"; |
| 32 const char* kCandidateNotFound = "Candidate not found"; | 32 const char* kCandidateNotFound = "Candidate not found"; |
| 33 const char* kEngineBusPrefix = "org.freedesktop.IBus."; | 33 const char* kEngineBusPrefix = "org.freedesktop.IBus."; |
| 34 | 34 |
| 35 namespace { | |
| 36 const uint32 kIBusAltKeyMask = 1 << 3; | |
| 37 const uint32 kIBusCtrlKeyMask = 1 << 2; | |
| 38 const uint32 kIBusShiftKeyMask = 1 << 0; | |
| 39 const uint32 kIBusCapsLockMask = 1 << 1; | |
| 40 const uint32 kIBusKeyReleaseMask = 1 << 30; | |
| 41 } | |
| 42 | |
| 43 InputMethodEngineIBus::InputMethodEngineIBus() | 35 InputMethodEngineIBus::InputMethodEngineIBus() |
| 44 : focused_(false), | 36 : focused_(false), |
| 45 active_(false), | 37 active_(false), |
| 46 context_id_(0), | 38 context_id_(0), |
| 47 next_context_id_(1), | 39 next_context_id_(1), |
| 48 aux_text_(new IBusText()), | 40 aux_text_(new IBusText()), |
| 49 aux_text_visible_(false), | 41 aux_text_visible_(false), |
| 50 observer_(NULL), | 42 observer_(NULL), |
| 51 preedit_text_(new IBusText()), | 43 preedit_text_(new IBusText()), |
| 52 preedit_cursor_(0), | 44 preedit_cursor_(0), |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 460 | 452 |
| 461 void InputMethodEngineIBus::SetCapability( | 453 void InputMethodEngineIBus::SetCapability( |
| 462 IBusCapability capability) { | 454 IBusCapability capability) { |
| 463 } | 455 } |
| 464 | 456 |
| 465 void InputMethodEngineIBus::Reset() { | 457 void InputMethodEngineIBus::Reset() { |
| 466 observer_->OnReset(engine_id_); | 458 observer_->OnReset(engine_id_); |
| 467 } | 459 } |
| 468 | 460 |
| 469 void InputMethodEngineIBus::ProcessKeyEvent( | 461 void InputMethodEngineIBus::ProcessKeyEvent( |
| 470 uint32 keysym, | 462 const std::string& keysym, |
| 471 uint32 keycode, | 463 const std::string& keycode, |
| 472 uint32 state, | 464 bool is_key_down, |
| 465 bool is_alt_down, |
| 466 bool is_ctrl_down, |
| 467 bool is_shift_down, |
| 468 bool is_caps_lock_down, |
| 473 const KeyEventDoneCallback& callback) { | 469 const KeyEventDoneCallback& callback) { |
| 474 | |
| 475 KeyEventDoneCallback *handler = new KeyEventDoneCallback(); | 470 KeyEventDoneCallback *handler = new KeyEventDoneCallback(); |
| 476 *handler = callback; | 471 *handler = callback; |
| 477 | 472 |
| 478 KeyboardEvent event; | 473 KeyboardEvent event; |
| 479 event.type = !(state & kIBusKeyReleaseMask) ? "keydown" : "keyup"; | 474 event.type = is_key_down ? "keydown" : "keyup"; |
| 480 event.key = input_method::GetIBusKey(keysym); | 475 event.key = keysym; |
| 481 event.code = input_method::GetIBusKeyCode(keycode); | 476 event.code = keycode; |
| 482 event.alt_key = state & kIBusAltKeyMask; | 477 event.alt_key = is_alt_down; |
| 483 event.ctrl_key = state & kIBusCtrlKeyMask; | 478 event.ctrl_key = is_ctrl_down; |
| 484 event.shift_key = state & kIBusShiftKeyMask; | 479 event.shift_key = is_shift_down; |
| 485 event.caps_lock = state & kIBusCapsLockMask; | 480 event.caps_lock = is_caps_lock_down; |
| 486 observer_->OnKeyEvent( | 481 observer_->OnKeyEvent( |
| 487 engine_id_, | 482 engine_id_, |
| 488 event, | 483 event, |
| 489 reinterpret_cast<input_method::KeyEventHandle*>(handler)); | 484 reinterpret_cast<input_method::KeyEventHandle*>(handler)); |
| 490 } | 485 } |
| 491 | 486 |
| 492 void InputMethodEngineIBus::CandidateClicked(uint32 index, | 487 void InputMethodEngineIBus::CandidateClicked(uint32 index, |
| 493 ibus::IBusMouseButton button, | 488 ibus::IBusMouseButton button, |
| 494 uint32 state) { | 489 uint32 state) { |
| 495 if (index > candidate_ids_.size()) { | 490 if (index > candidate_ids_.size()) { |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 611 DBusThreadManager::Get()->RemoveIBusEngineService(object_path_); | 606 DBusThreadManager::Get()->RemoveIBusEngineService(object_path_); |
| 612 | 607 |
| 613 object_path_ = DBusThreadManager::Get()->GetIBusEngineFactoryService()-> | 608 object_path_ = DBusThreadManager::Get()->GetIBusEngineFactoryService()-> |
| 614 GenerateUniqueObjectPath(); | 609 GenerateUniqueObjectPath(); |
| 615 | 610 |
| 616 GetCurrentService()->SetEngine(this); | 611 GetCurrentService()->SetEngine(this); |
| 617 sender.Run(object_path_); | 612 sender.Run(object_path_); |
| 618 } | 613 } |
| 619 | 614 |
| 620 } // namespace chromeos | 615 } // namespace chromeos |
| OLD | NEW |