diff --git a/scim-wnn/src/scim_wnn_imengine.cpp b/scim-wnn/src/scim_wnn_imengine.cpp index cdd3949..1166207 100644 --- a/scim-wnn/src/scim_wnn_imengine.cpp +++ b/scim-wnn/src/scim_wnn_imengine.cpp @@ -61,7 +61,7 @@ #define SCIM_CONFIG_WNN_SERVER "/IMEngine/Wnn/Server" #define SCIM_CONFIG_WNN_RC "/IMEngine/Wnn/Rc" -#define SCIM_CONFIG_WNN_KEY "/IMEngine/Wnn/Key" +#define SCIM_CONFIG_WNN_KEY "/IMEngine/Wnn/Key/" static Pointer _scim_wnn_factory; static ConfigPointer _scim_config; @@ -270,7 +270,7 @@ update_preedit_string(wnn.getText(),wnn.getAttributeList()); update_preedit_caret(wnn.getText().length()); return(true); - } + } else if (k_commit.comp(key)) { if (!m_rk.getTextLength()) { return(false); @@ -279,7 +279,7 @@ m_rk.reset(); hide_preedit_string(); return(true); - } + } else if (k_forward.comp(key) || k_backward.comp(key)) { if (!m_rk.getTextLength()) { return(false); @@ -287,7 +287,7 @@ k_backward.comp(key) ? m_rk.setPos(m_rk.getPos() - 1) : m_rk.setPos(m_rk.getPos() + 1); update_preedit_caret(m_rk.getPos()); return(true); - } + } else if (k_backspace.comp(key)) { if (!m_rk.getTextLength()) { return(false); @@ -296,7 +296,7 @@ update_preedit_string(m_rk.getText()); update_preedit_caret(m_rk.getPos()); return(true); - } + } else if (k_delete.comp(key)) { if (!m_rk.getTextLength()) { return(false); @@ -305,7 +305,15 @@ update_preedit_string(m_rk.getText()); update_preedit_caret(m_rk.getPos()); return(true); - } + } else + if (k_cancel.comp(key)) { + if (!m_rk.getTextLength()) { + return(false); + } + m_rk.reset(); + hide_preedit_string(); + return(true); + } else if (isprint(key.code)) { show_preedit_string(); SCIM_DEBUG_IMENGINE(1) << key.get_key_string() << "\n";