diff --git a/honoka/src/honoka_def.h b/honoka/src/honoka_def.h index 939a2fc..c81b210 100644 --- a/honoka/src/honoka_def.h +++ b/honoka/src/honoka_def.h @@ -33,6 +33,8 @@ #define HONOKA_DEFAULT_KEY_BACKSPACE "BackSpace" #define HONOKA_CONFIG_KEY_COMMIT "/IMEngine/Honoka/Key/Commit" #define HONOKA_DEFAULT_KEY_COMMIT "Return" +#define HONOKA_CONFIG_KEY_FURIGANA_COMMIT "/IMEngine/Honoka/Key/Furigana" +#define HONOKA_DEFAULT_KEY_FURIGANA_COMMIT "Shift+Return" #define HONOKA_CONFIG_KEY_CONVERSION_NEXT "/IMEngine/Honoka/Key/ConversionNext" #define HONOKA_DEFAULT_KEY_CONVERSION_NEXT "space,Down" #define HONOKA_CONFIG_KEY_CONVERSION_PREV "/IMEngine/Honoka/Key/ConversionPrev" diff --git a/honoka/src/honoka_imengine.cpp b/honoka/src/honoka_imengine.cpp index bdd7fe4..f10005a 100644 --- a/honoka/src/honoka_imengine.cpp +++ b/honoka/src/honoka_imengine.cpp @@ -347,6 +347,9 @@ scim_string_to_key_list(k_commit, _scim_config->read(String(HONOKA_CONFIG_KEY_COMMIT), String(HONOKA_DEFAULT_KEY_COMMIT))); + scim_string_to_key_list(k_furigana_commit, + _scim_config->read(String(HONOKA_CONFIG_KEY_FURIGANA_COMMIT), + String(HONOKA_DEFAULT_KEY_FURIGANA_COMMIT))); scim_string_to_key_list(k_conversion_next, _scim_config->read(String(HONOKA_CONFIG_KEY_CONVERSION_NEXT), String(HONOKA_DEFAULT_KEY_CONVERSION_NEXT))); @@ -1011,6 +1014,40 @@ } } else + // �դ꤬���դ����ꥭ��(�¸�Ū) + if (k_furigana_commit.comp(key)) { + WideString cm; + for(unsigned int i = 0;i < segments.size();i ++) { + if (segments[i].getKanji() == segments[i].getYomi()) { + cm += segments[i].getKanji(); + } else { + for(unsigned int j = 0;segments[i].getYomi().length() - j != 0;j ++) { + if (segments[i].getKanji()[segments[i].getKanji().length() - j - 1] != + segments[i].getYomi()[segments[i].getYomi().length() - j - 1]) { + cm += segments[i].getKanji().substr(0,segments[i].getKanji().length() - j); + cm += utf8_mbstowcs(String("(")); + cm += segments[i].getYomi().substr(0,segments[i].getYomi().length() - j); + cm += utf8_mbstowcs(String(")")); + cm += segments[i].getKanji().substr(segments[i].getKanji().length() - j,segments[i].getKanji().length()); + break; + } + } + } + } + commit_string(cm); + m_convertor->updateFrequency(); + if (prediction) if (m_predictor->isConnected()) m_predictor->update(getConvertedText(),m_preeditor->getText(true)); + m_preeditor->reset(); + m_convertor->reset(); + m_conversion = false; + updatePreEditor(); + m_lookup = false; + alp_count = 1; + if (m_def_convertor != m_convertor) m_convertor = m_def_convertor; + updateProperty(); + return true; + } else + // ���ꥭ�� if (k_commit.comp(key)) { commit_string(getConvertedText()); diff --git a/honoka/src/honoka_imengine.h b/honoka/src/honoka_imengine.h index 119eea3..c0f9b43 100644 --- a/honoka/src/honoka_imengine.h +++ b/honoka/src/honoka_imengine.h @@ -202,6 +202,7 @@ k_prev_convertor, // �����Ѵ����󥸥�� k_reconversion, // ���Ѵ� k_result_to_preedit, // �Ѵ���̤�PreEditor��push + k_furigana_commit, // �դ꤬���դ����� // for Wnn7 k_conversion_ikeiji, // �۷����Ѵ�