diff --git a/honoka/libhonoka/preeditor.cpp b/honoka/libhonoka/preeditor.cpp index bdef56f..beb5380 100644 --- a/honoka/libhonoka/preeditor.cpp +++ b/honoka/libhonoka/preeditor.cpp @@ -416,11 +416,16 @@ /*! - \fn Honoka::PreEditor::isPrintable(KeyEvent &key) + \fn Honoka::PreEditor::isPrintable(const KeyEvent &key) */ -bool Honoka::PreEditor::isPrintable(KeyEvent &key) +bool Honoka::PreEditor::isPrintable(const KeyEvent &key) { - if (key.get_unicode_code()) return true; + if ((key.code == SCIM_KEY_Return) || + (key.code == SCIM_KEY_Linefeed) || + (key.code == SCIM_KEY_Tab)) return false; + + if (key.get_unicode_code() && (!key.is_alt_down()) && (!key.is_control_down())) return true; + return false; } diff --git a/honoka/libhonoka/preeditor.h b/honoka/libhonoka/preeditor.h index 111efd5..0c3447c 100644 --- a/honoka/libhonoka/preeditor.h +++ b/honoka/libhonoka/preeditor.h @@ -91,7 +91,7 @@ virtual void unSelected(); static const WideString getCommitString(); static void resetCommitString(); - static bool isPrintable(KeyEvent &key); + static bool isPrintable(const KeyEvent &key); protected: static WideString text; diff --git a/honoka/plugins/asciiinput.cpp b/honoka/plugins/asciiinput.cpp index 1319b5b..0dfc790 100644 --- a/honoka/plugins/asciiinput.cpp +++ b/honoka/plugins/asciiinput.cpp @@ -261,7 +261,7 @@ if (autoCommit) { if (autoCommitKey.comp(key)) { - if (key.get_unicode_code()) + if (isPrintable(key)) setCommitString(text.substr(0,pos) + key.get_unicode_code()); else setCommitString(text.substr(0,pos)); reset(); @@ -270,7 +270,7 @@ } } - if (key.get_unicode_code() && (!key.is_alt_down()) && (!key.is_control_down())) { + if (isPrintable(key)) { text = text.substr(0,pos) + key.get_unicode_code() + text.substr(pos); pos ++; return true; diff --git a/honoka/plugins/kanainput.cpp b/honoka/plugins/kanainput.cpp index 0605b54..5b2faa1 100644 --- a/honoka/plugins/kanainput.cpp +++ b/honoka/plugins/kanainput.cpp @@ -232,7 +232,7 @@ } } } - if (key.get_unicode_code()) { + if (isPrintable(key)) { text = text.substr(0,pos) + key.get_unicode_code() + text.substr(pos); pos ++; return true; diff --git a/honoka/plugins/nicolainput.cpp b/honoka/plugins/nicolainput.cpp index d749194..daf780b 100644 --- a/honoka/plugins/nicolainput.cpp +++ b/honoka/plugins/nicolainput.cpp @@ -274,7 +274,7 @@ map::iterator it = keymap.find(key); if (it == keymap.end()) { - if (key.get_unicode_code() && (!key.is_alt_down()) && (!key.is_control_down())) { + if (isPrintable(key)) { text = text.substr(0,pos) + key.get_unicode_code() + text.substr(pos); pos ++; return true;