diff --git a/scim-wnn/src/scim_wnn_imengine.cpp b/scim-wnn/src/scim_wnn_imengine.cpp index 19d2342..aa54bbe 100644 --- a/scim-wnn/src/scim_wnn_imengine.cpp +++ b/scim-wnn/src/scim_wnn_imengine.cpp @@ -426,6 +426,22 @@ } else if (isprint(key.code)) { if (key.mask & (SCIM_KEY_AltMask | SCIM_KEY_ControlMask)) return(false); + if (m_lookup) { + char numk[] = "1234567890"; + int numc = 0; + for(;numk[numc]; ++ numc) + if (key.get_ascii_code() == numk[numc]) break; + if (m_lookup_table.get_current_page_size() < numc) return(true); + m_convList.pos = numc + m_lookup_table.get_current_page_start(); + wnn.select(m_convList.pos); + wnn.setPos(wnn.getPos() + 1); + m_convList = wnn.getConversionList(); + update_preedit_string(wnn.getText(),wnn.getAttributeList()); + update_preedit_caret(wnn.getCaretPos()); + startLookup(); + return(true); + } + commit_string(wnn.getText()); wnn.updateFrequency(); m_rk.reset(); diff --git a/scim-wnn/src/wnnconversion.cpp b/scim-wnn/src/wnnconversion.cpp index 704e0f3..bb7aed8 100644 --- a/scim-wnn/src/wnnconversion.cpp +++ b/scim-wnn/src/wnnconversion.cpp @@ -264,8 +264,8 @@ */ int WnnConversion::setPos(int p) { - if (p >= bunsetu) p = bunsetu - 1; - else if (p < 0) p = 0; + if (p >= bunsetu) p = (p % bunsetu); + else if (p < 0) p = bunsetu - (abs(p) % bunsetu); pos = p; createText();