diff --git a/scim-wnn/src/romkan.cpp b/scim-wnn/src/romkan.cpp index 36aa55b..6e3282f 100644 --- a/scim-wnn/src/romkan.cpp +++ b/scim-wnn/src/romkan.cpp @@ -245,3 +245,19 @@ { convKataHira(text); } + + +/*! + \fn Romkan::keyEventHook(const KeyEvent &key) + */ +bool Romkan::keyEventHook(const KeyEvent &key) +{ + if (text.empty()) return(false); + if (text.substr(pos - 1,1) == utf8_mbstowcs("Z")) { + if (key.code == SCIM_KEY_space) { + insert(key.get_ascii_code()); + return(true); + } + } + return(false); +} diff --git a/scim-wnn/src/romkan.h b/scim-wnn/src/romkan.h index 649d4be..ca3d54e 100644 --- a/scim-wnn/src/romkan.h +++ b/scim-wnn/src/romkan.h @@ -24,6 +24,7 @@ #include #include #include +#include using namespace std; using namespace scim; @@ -50,6 +51,7 @@ void convKataHira(WideString &t); void hiraKata(); void kataHira(); + bool keyEventHook(const KeyEvent &key); protected: WideString text; diff --git a/scim-wnn/src/scim_wnn_imengine.cpp b/scim-wnn/src/scim_wnn_imengine.cpp index 909942d..b749408 100644 --- a/scim-wnn/src/scim_wnn_imengine.cpp +++ b/scim-wnn/src/scim_wnn_imengine.cpp @@ -276,6 +276,12 @@ */ bool WnnInstance::process_preedit_key_event(const KeyEvent &key) { + if (m_rk.keyEventHook(key)) { + show_preedit_string(); + update_preedit_string(m_rk.getText()); + update_preedit_caret(m_rk.getPos()); + return(true); + } else if (k_conversion_start.comp(key)) { if (!m_rk.getTextLength()) { return(false);