diff --git a/scim-wnn/src/scim_wnn_imengine.cpp b/scim-wnn/src/scim_wnn_imengine.cpp
index 222ff1d..a4b66a0 100644
--- a/scim-wnn/src/scim_wnn_imengine.cpp
+++ b/scim-wnn/src/scim_wnn_imengine.cpp
@@ -88,7 +88,7 @@
         if (factory != 0) return NULL;
         if (_scim_wnn_factory.null ()) {
             _scim_wnn_factory =
-                new WnnFactory (utf8_mbstowcs (String (_("WNN"))),String("ja_JP"));
+                new WnnFactory (utf8_mbstowcs (String (_("Wnn"))),String("ja_JP"));
         }
         return _scim_wnn_factory;
     }
@@ -262,6 +262,7 @@
         wnn.select(m_convList.pos);
         update_preedit_string(wnn.getText(),wnn.getAttributeList());
         update_preedit_caret(wnn.getText().length());
+        return(true);
     }
     if ((key.code == SCIM_KEY_Left) || (key.code == SCIM_KEY_Right)) {
         key.code == SCIM_KEY_Left ? wnn.setPos(wnn.getPos() - 1) : wnn.setPos(wnn.getPos() + 1);
@@ -269,6 +270,15 @@
         update_preedit_string(wnn.getText(),wnn.getAttributeList());
         return(true);
     }
+    if (isprint(key.code)) {
+        commit_string(wnn.getText());
+        m_rk.reset();
+        wnn.reset();
+        m_conversion = false;
+        hide_preedit_string();
+        return(process_preedit_key_event(key));
+    }
+
 
     return(true);
 }