diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 2ce1ae6..f79c324 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1,5 +1,5 @@
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/ChangeLog.txt b/ChangeLog.txt
new file mode 100644
index 0000000..73d6b3c
--- /dev/null
+++ b/ChangeLog.txt
@@ -0,0 +1,98 @@
+------------------------------------------------------------------------------
+                              [OpenWnn ChangeLog]
+
+     (C) Copyright OMRON SOFTWARE Co., Ltd. 2008-2012 All Rights Reserved.
+------------------------------------------------------------------------------
+
+[Version 1.3.6 release] Apr 12, 2012
+------------------------------------
+  Update features:
+   * Android 4.0 (ICS) support.
+   * Improving Large Qwerty.
+     - Display style of the candidates view is changed.
+   * Improving usability.
+     - Focus in the candidate list can move arround using keyboard operation.
+     - Layout of soft keyboard is changed.
+     - Layout of symbol list is changed.
+     - Layout of emoticon list is changed.
+     - Support for H/W12key
+     - Support for Bluetooth Keyboard
+
+  Bug fix:
+   * If the ICS, bug when displaying the user dictionary, Exception occurs.
+   * Corresponding vulnerability of DB files
+
+[Version 1.3.5 release] Dec 25, 2009
+------------------------------------
+  Update features:
+   * Importing some improvement from iWnn IME.
+
+  Bug fix:
+   * Bug of Romaji-to-Kana conversion on phonetic text field is fixed.
+   * Some minor bugs are fixed.
+
+[Version 1.3.4 release] Oct 29, 2009
+------------------------------------
+  Bug fix:
+   * User Dictionary's bug on WVGA is fixed.
+   * Hardware keyboard support on Android 2.0 (eclair)
+
+[Version 1.3.3 release] Sep 30, 2009
+------------------------------------
+  Update features:
+   * Android 2.0 (eclair) support.
+
+[Version 1.3.2 internal version] Sep 25, 2009
+---------------------------------------------
+  Update features:
+   * Android 1.6 (donut) support.
+   * Adding images for 240dpi display.
+   * Japanese input on E-mail address field is allowed.
+
+[Version 1.3.1 release] Jun 12, 2009
+------------------------------------
+  Update features:
+   * Emoji is disabled.
+   * Improving display size compatibility.
+
+[Version 1.3 release]   May 14, 2009
+------------------------------------
+  Update features:
+   * Improving usability.
+     - Layout of software keyboards are changed.
+     - Display style of the candidates view is changed.
+     - Simple tutorial is added.
+   * Improving speed of registering to the learning dictionary.
+
+  Bug fix:
+   * Some minor bugs are fixed.
+
+[Version 1.2 release]   Mar 27, 2009
+------------------------------------
+  The first release implemented following features:
+   * (Simplified) Chinese input method
+
+  Update features:
+   * Switcher of "Auto Capitalization" to the setting menu is added.
+   * Changer of the keyboard image to the setting menu is added.
+   * User dictionary manager's user interface is changed.
+   * Changes for improving usability.
+
+  Bug fix:
+   * Some minor bugs are fixed.
+
+------------------------------------------------------------------------------
+[Version 1.1 release]   Feb. 23, 2009
+-------------------------------------
+  The first release implemented following features:
+   * Japanese input method
+   * English input method
+
+------------------------------------------------------------------------------
+[Version 1.0 release]   Dec 04, 2008
+-------------------------------------
+  The first release implemented following features:
+   * Dictionary search library
+   * English dictionary
+
+------------------------------------------------------------------------------
diff --git a/README.txt b/README.txt
index 3b0ac1d..af4ace3 100644
--- a/README.txt
+++ b/README.txt
@@ -1,9 +1,9 @@
 -------------------------------------------------------------------------------
                               OpenWnn Japnese README
 
-                                   Version 1.3.5
-                  
-     (C) Copyright OMRON SOFTWARE Co., Ltd. 2008,2009 All Rights Reserved.
+                                Version 1.3.6
+ 
+     (C) Copyright OMRON SOFTWARE Co., Ltd. 2008-2012 All Rights Reserved.
 -------------------------------------------------------------------------------
 
 1. About OpenWnn
@@ -83,18 +83,38 @@
             *.png                             |
         drawable-ja/                          |
             *.png                             |
+        drawable-xlarge/                      |
+            *.xml                             |
+            *.png                             |
+        drawable-xlarge-hdpi/                 |
+            *.xml                             |
+            *.png                             |
+        drawable-xlarge-land-hdpi/            |
+            *.png                             |
         layout/                               |
             *.xml                             |
+        layout-xlarge/                        |
+            *.xml                             |
         raw/                                  |
             type.ogg                          |
         values/                               |
             *.xml                             |
         values-ja/                            |
             *.xml                             |
+        values-land/                          |
+            *.xml                             |
+        values-xlarge/                        |
+            *.xml                             |
+        values-xlarge-land/                   |
+            *.xml                             |
         values-zh-rCN                         |
             *.xml                             |
         xml/                                  |
             *.xml                             |
+        xml-land/                             |
+            *.xml                             |
+        xml-xlarge/                           |
+            *.xml                             |
 
     src/                                      IME source code (Java)
         jp/                                   |
diff --git a/libs/libwnnDictionary/Android.mk b/libs/libwnnDictionary/Android.mk
index e14069f..b7b88b2 100644
--- a/libs/libwnnDictionary/Android.mk
+++ b/libs/libwnnDictionary/Android.mk
@@ -30,6 +30,4 @@
 LOCAL_CFLAGS += \
 	 -O
 
-
-
 include $(BUILD_SHARED_LIBRARY)
diff --git a/libs/libwnnDictionary/OpenWnnDictionaryImplJni.c b/libs/libwnnDictionary/OpenWnnDictionaryImplJni.c
index 133888d..b112baa 100644
--- a/libs/libwnnDictionary/OpenWnnDictionaryImplJni.c
+++ b/libs/libwnnDictionary/OpenWnnDictionaryImplJni.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/OpenWnnJni.h b/libs/libwnnDictionary/OpenWnnJni.h
index 360d558..bd35999 100644
--- a/libs/libwnnDictionary/OpenWnnJni.h
+++ b/libs/libwnnDictionary/OpenWnnJni.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/engine/ndapi.c b/libs/libwnnDictionary/engine/ndapi.c
index a41cdab..55971c6 100644
--- a/libs/libwnnDictionary/engine/ndapi.c
+++ b/libs/libwnnDictionary/engine/ndapi.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/engine/ndbdic.c b/libs/libwnnDictionary/engine/ndbdic.c
index fbb387f..6cf73da 100644
--- a/libs/libwnnDictionary/engine/ndbdic.c
+++ b/libs/libwnnDictionary/engine/ndbdic.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/engine/ndcommon.c b/libs/libwnnDictionary/engine/ndcommon.c
index d3d493f..fc1c25a 100644
--- a/libs/libwnnDictionary/engine/ndcommon.c
+++ b/libs/libwnnDictionary/engine/ndcommon.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/engine/ndfdic.c b/libs/libwnnDictionary/engine/ndfdic.c
index a737943..65a842e 100644
--- a/libs/libwnnDictionary/engine/ndfdic.c
+++ b/libs/libwnnDictionary/engine/ndfdic.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/engine/ndldic.c b/libs/libwnnDictionary/engine/ndldic.c
index f7658d2..d140ea2 100644
--- a/libs/libwnnDictionary/engine/ndldic.c
+++ b/libs/libwnnDictionary/engine/ndldic.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/engine/ndrdic.c b/libs/libwnnDictionary/engine/ndrdic.c
index 15c5712..b8fe634 100644
--- a/libs/libwnnDictionary/engine/ndrdic.c
+++ b/libs/libwnnDictionary/engine/ndrdic.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/engine/neapi.c b/libs/libwnnDictionary/engine/neapi.c
index 49d5aed..4b59aac 100644
--- a/libs/libwnnDictionary/engine/neapi.c
+++ b/libs/libwnnDictionary/engine/neapi.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/engine/necode.c b/libs/libwnnDictionary/engine/necode.c
index 9bab3fa..ca33186 100644
--- a/libs/libwnnDictionary/engine/necode.c
+++ b/libs/libwnnDictionary/engine/necode.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/engine/nj_str.c b/libs/libwnnDictionary/engine/nj_str.c
index d450e85..1892458 100644
--- a/libs/libwnnDictionary/engine/nj_str.c
+++ b/libs/libwnnDictionary/engine/nj_str.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/include/nj_dic.h b/libs/libwnnDictionary/include/nj_dic.h
index c2c4b98..47b54ac 100644
--- a/libs/libwnnDictionary/include/nj_dic.h
+++ b/libs/libwnnDictionary/include/nj_dic.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/include/nj_err.h b/libs/libwnnDictionary/include/nj_err.h
index 4f7a214..3b4010c 100644
--- a/libs/libwnnDictionary/include/nj_err.h
+++ b/libs/libwnnDictionary/include/nj_err.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/include/nj_ext.h b/libs/libwnnDictionary/include/nj_ext.h
index 1a08bbf..c2e7356 100644
--- a/libs/libwnnDictionary/include/nj_ext.h
+++ b/libs/libwnnDictionary/include/nj_ext.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/include/nj_lib.h b/libs/libwnnDictionary/include/nj_lib.h
index 3a89200..d4dae0d 100644
--- a/libs/libwnnDictionary/include/nj_lib.h
+++ b/libs/libwnnDictionary/include/nj_lib.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/include/njd.h b/libs/libwnnDictionary/include/njd.h
index ae3b338..937a009 100644
--- a/libs/libwnnDictionary/include/njd.h
+++ b/libs/libwnnDictionary/include/njd.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/include/njx_lib.h b/libs/libwnnDictionary/include/njx_lib.h
index 8ff6b03..91755e7 100644
--- a/libs/libwnnDictionary/include/njx_lib.h
+++ b/libs/libwnnDictionary/include/njx_lib.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/jp_co_omronsoft_openwnn_OpenWnnDictionaryImplJni.h b/libs/libwnnDictionary/jp_co_omronsoft_openwnn_OpenWnnDictionaryImplJni.h
index 45700bf..bf5f7df 100644
--- a/libs/libwnnDictionary/jp_co_omronsoft_openwnn_OpenWnnDictionaryImplJni.h
+++ b/libs/libwnnDictionary/jp_co_omronsoft_openwnn_OpenWnnDictionaryImplJni.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnDictionary/predef_table.h b/libs/libwnnDictionary/predef_table.h
index 703777d..34b6b66 100644
--- a/libs/libwnnDictionary/predef_table.h
+++ b/libs/libwnnDictionary/predef_table.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnEngDic/Android.mk b/libs/libwnnEngDic/Android.mk
index a71c82e..85d452a 100644
--- a/libs/libwnnEngDic/Android.mk
+++ b/libs/libwnnEngDic/Android.mk
@@ -20,6 +20,4 @@
 LOCAL_CFLAGS += \
 	-O
 
-
-
 include $(BUILD_SHARED_LIBRARY)
diff --git a/libs/libwnnEngDic/WnnEngDic.c b/libs/libwnnEngDic/WnnEngDic.c
index 4b92fac..9b19411 100644
--- a/libs/libwnnEngDic/WnnEngDic.c
+++ b/libs/libwnnEngDic/WnnEngDic.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/libs/libwnnJpnDic/Android.mk b/libs/libwnnJpnDic/Android.mk
index c2310d6..0ba69c6 100644
--- a/libs/libwnnJpnDic/Android.mk
+++ b/libs/libwnnJpnDic/Android.mk
@@ -20,6 +20,4 @@
 LOCAL_CFLAGS += \
 	-O
 
-
-
 include $(BUILD_SHARED_LIBRARY)
diff --git a/libs/libwnnJpnDic/WnnJpnDic.c b/libs/libwnnJpnDic/WnnJpnDic.c
index c019d30..d392959 100644
--- a/libs/libwnnJpnDic/WnnJpnDic.c
+++ b/libs/libwnnJpnDic/WnnJpnDic.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/res/drawable-hdpi/btn_close.xml b/res/drawable-hdpi/btn_close.xml
new file mode 100644
index 0000000..5af18f3
--- /dev/null
+++ b/res/drawable-hdpi/btn_close.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_pressed="false"
+        android:drawable="@drawable/btn_close_normal" />
+
+    <item android:state_pressed="true"
+        android:drawable="@drawable/btn_close_pressed" />
+
+</selector>
diff --git a/res/drawable-hdpi/btn_close_normal.png b/res/drawable-hdpi/btn_close_normal.png
new file mode 100644
index 0000000..ecc4dde
--- /dev/null
+++ b/res/drawable-hdpi/btn_close_normal.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_close_pressed.png b/res/drawable-hdpi/btn_close_pressed.png
new file mode 100644
index 0000000..49223c5
--- /dev/null
+++ b/res/drawable-hdpi/btn_close_pressed.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key.xml b/res/drawable-hdpi/btn_keyboard_key.xml
new file mode 100644
index 0000000..5b3b4b1
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <!-- Toggle keys. Use checkable/checked state. -->
+ 
+    <!-- Normal keys -->
+
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed" />
+    <item
+          android:drawable="@drawable/btn_keyboard_key_normal" />
+ 
+</selector>
diff --git a/res/drawable-hdpi/btn_keyboard_key_2nd.xml b/res/drawable-hdpi/btn_keyboard_key_2nd.xml
new file mode 100644
index 0000000..991634f
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_2nd.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <!-- Toggle keys. Use checkable/checked state. -->
+ 
+    <item android:state_checkable="true" android:state_checked="true" 
+          android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed_on_2nd" />
+    <item android:state_checkable="true" android:state_checked="true"
+          android:drawable="@drawable/btn_keyboard_key_normal_on_2nd" />
+
+    <!-- Normal keys -->
+
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed_2nd" />
+    <item
+          android:drawable="@drawable/btn_keyboard_key_normal_2nd" />
+ 
+</selector>
diff --git a/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png b/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png
new file mode 100644
index 0000000..9fed21e
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png b/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png
new file mode 100644
index 0000000..e6a1dce
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/res/drawable-hdpi/btn_keyboard_key_normal.9.png
new file mode 100644
index 0000000..32168a3
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_normal_2nd.9.png b/res/drawable-hdpi/btn_keyboard_key_normal_2nd.9.png
new file mode 100644
index 0000000..0f43c2e
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_normal_2nd.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_normal_on_2nd.9.png b/res/drawable-hdpi/btn_keyboard_key_normal_on_2nd.9.png
new file mode 100644
index 0000000..fe125f3
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_normal_on_2nd.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
new file mode 100644
index 0000000..5e52bb2
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed_2nd.9.png b/res/drawable-hdpi/btn_keyboard_key_pressed_2nd.9.png
new file mode 100644
index 0000000..9a79706
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_pressed_2nd.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed_on_2nd.9.png b/res/drawable-hdpi/btn_keyboard_key_pressed_on_2nd.9.png
new file mode 100644
index 0000000..0e12b9f
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_pressed_on_2nd.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_std.xml b/res/drawable-hdpi/btn_keyboard_key_std.xml
new file mode 100644
index 0000000..b30ba33
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_std.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <!-- Toggle keys. Use checkable/checked state. -->
+ 
+    <item android:state_checkable="true" android:state_checked="true"
+          android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_std_pressed_on" />
+    <item android:state_checkable="true" android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_std_pressed_off" />
+    <item android:state_checkable="true" android:state_checked="true"
+          android:drawable="@drawable/btn_keyboard_key_std_normal_on" />
+    <item android:state_checkable="true"
+          android:drawable="@drawable/btn_keyboard_key_std_normal_off" />
+
+    <!-- Normal keys -->
+
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_std_pressed" />
+    <item
+          android:drawable="@drawable/btn_keyboard_key_std_normal" />
+ 
+</selector>
diff --git a/res/drawable-hdpi/btn_keyboard_key_std_normal.9.png b/res/drawable-hdpi/btn_keyboard_key_std_normal.9.png
new file mode 100644
index 0000000..42c7c14
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_std_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_std_normal_off.9.png b/res/drawable-hdpi/btn_keyboard_key_std_normal_off.9.png
new file mode 100644
index 0000000..01e2506
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_std_normal_off.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_std_normal_on.9.png b/res/drawable-hdpi/btn_keyboard_key_std_normal_on.9.png
new file mode 100644
index 0000000..83c6eb3
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_std_normal_on.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_std_pressed.9.png b/res/drawable-hdpi/btn_keyboard_key_std_pressed.9.png
new file mode 100644
index 0000000..e047eaf
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_std_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_std_pressed_off.9.png b/res/drawable-hdpi/btn_keyboard_key_std_pressed_off.9.png
new file mode 100644
index 0000000..218a2d2
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_std_pressed_off.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_std_pressed_on.9.png b/res/drawable-hdpi/btn_keyboard_key_std_pressed_on.9.png
new file mode 100644
index 0000000..afe4951
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_std_pressed_on.9.png
Binary files differ
diff --git a/res/drawable-hdpi/cand_back.xml b/res/drawable-hdpi/cand_back.xml
new file mode 100644
index 0000000..7033505
--- /dev/null
+++ b/res/drawable-hdpi/cand_back.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/cand_back_pressed" />
+    <item android:state_focused="true"
+          android:drawable="@drawable/cand_back_focused" />
+    <item android:state_pressed="false"
+          android:drawable="@drawable/cand_back_normal" />
+</selector>
diff --git a/res/drawable-hdpi/cand_back_1line.xml b/res/drawable-hdpi/cand_back_1line.xml
new file mode 100644
index 0000000..018eddb
--- /dev/null
+++ b/res/drawable-hdpi/cand_back_1line.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/cand_back_pressed" />
+    <item android:state_focused="true"
+          android:drawable="@drawable/cand_back_focused" />
+    <item android:state_pressed="false"
+          android:drawable="@drawable/cand_back_normal_1line" />
+</selector>
diff --git a/res/drawable-hdpi/cand_back_focuse.xml b/res/drawable-hdpi/cand_back_focuse.xml
new file mode 100644
index 0000000..9f48c62
--- /dev/null
+++ b/res/drawable-hdpi/cand_back_focuse.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/cand_back_pressed" />
+    <item android:state_pressed="false"
+          android:drawable="@drawable/cand_back_focused" />
+</selector>
diff --git a/res/drawable-hdpi/cand_back_focused.9.png b/res/drawable-hdpi/cand_back_focused.9.png
new file mode 100644
index 0000000..0803b70
--- /dev/null
+++ b/res/drawable-hdpi/cand_back_focused.9.png
Binary files differ
diff --git a/res/drawable-hdpi/cand_back_normal.9.png b/res/drawable-hdpi/cand_back_normal.9.png
index c5c8d04..6b829f5 100644
--- a/res/drawable-hdpi/cand_back_normal.9.png
+++ b/res/drawable-hdpi/cand_back_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi/cand_back_normal_1line.9.png b/res/drawable-hdpi/cand_back_normal_1line.9.png
new file mode 100644
index 0000000..523e905
--- /dev/null
+++ b/res/drawable-hdpi/cand_back_normal_1line.9.png
Binary files differ
diff --git a/res/drawable-hdpi/cand_down.png b/res/drawable-hdpi/cand_down.png
index 4122bdf..3a8e2e9 100644
--- a/res/drawable-hdpi/cand_down.png
+++ b/res/drawable-hdpi/cand_down.png
Binary files differ
diff --git a/res/drawable-hdpi/cand_down_press.png b/res/drawable-hdpi/cand_down_press.png
index 4d38c28..1a61074 100644
--- a/res/drawable-hdpi/cand_down_press.png
+++ b/res/drawable-hdpi/cand_down_press.png
Binary files differ
diff --git a/res/drawable-hdpi/cand_left.png b/res/drawable-hdpi/cand_left.png
new file mode 100644
index 0000000..e375f26
--- /dev/null
+++ b/res/drawable-hdpi/cand_left.png
Binary files differ
diff --git a/res/drawable-hdpi/cand_right.png b/res/drawable-hdpi/cand_right.png
new file mode 100644
index 0000000..d38ae75
--- /dev/null
+++ b/res/drawable-hdpi/cand_right.png
Binary files differ
diff --git a/res/drawable-hdpi/cand_tab.xml b/res/drawable-hdpi/cand_tab.xml
new file mode 100644
index 0000000..aed0a42
--- /dev/null
+++ b/res/drawable-hdpi/cand_tab.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/tab_press" />
+    <item android:state_pressed="false"
+          android:drawable="@drawable/tab_select" />
+</selector>
diff --git a/res/drawable-hdpi/cand_tab_noselect.xml b/res/drawable-hdpi/cand_tab_noselect.xml
new file mode 100644
index 0000000..761da6e
--- /dev/null
+++ b/res/drawable-hdpi/cand_tab_noselect.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/tab_press" />
+    <item android:state_pressed="false"
+          android:drawable="@drawable/tab_no_select" />
+</selector>
diff --git a/res/drawable-hdpi/cand_up.png b/res/drawable-hdpi/cand_up.png
index ce8b563..5774597 100644
--- a/res/drawable-hdpi/cand_up.png
+++ b/res/drawable-hdpi/cand_up.png
Binary files differ
diff --git a/res/drawable-hdpi/cand_up_press.png b/res/drawable-hdpi/cand_up_press.png
index cedbc9f..34a7979 100644
--- a/res/drawable-hdpi/cand_up_press.png
+++ b/res/drawable-hdpi/cand_up_press.png
Binary files differ
diff --git a/res/drawable-hdpi/candidate.png b/res/drawable-hdpi/candidate.png
new file mode 100644
index 0000000..e8f8f3f
--- /dev/null
+++ b/res/drawable-hdpi/candidate.png
Binary files differ
diff --git a/res/drawable-hdpi/candidate_top.9.png b/res/drawable-hdpi/candidate_top.9.png
new file mode 100644
index 0000000..fb6018f
--- /dev/null
+++ b/res/drawable-hdpi/candidate_top.9.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha0.png b/res/drawable-hdpi/key_12key_alpha0.png
index e3360d7..6b93bd0 100644
--- a/res/drawable-hdpi/key_12key_alpha0.png
+++ b/res/drawable-hdpi/key_12key_alpha0.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha0_b.png b/res/drawable-hdpi/key_12key_alpha0_b.png
index 2392459..2b0032f 100644
--- a/res/drawable-hdpi/key_12key_alpha0_b.png
+++ b/res/drawable-hdpi/key_12key_alpha0_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha1.png b/res/drawable-hdpi/key_12key_alpha1.png
index 559a0d5..1e3a2a4 100644
--- a/res/drawable-hdpi/key_12key_alpha1.png
+++ b/res/drawable-hdpi/key_12key_alpha1.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha1_b.png b/res/drawable-hdpi/key_12key_alpha1_b.png
index af2466e..4ac7bd3 100644
--- a/res/drawable-hdpi/key_12key_alpha1_b.png
+++ b/res/drawable-hdpi/key_12key_alpha1_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha2.png b/res/drawable-hdpi/key_12key_alpha2.png
index 970c4e4..3e37d05 100644
--- a/res/drawable-hdpi/key_12key_alpha2.png
+++ b/res/drawable-hdpi/key_12key_alpha2.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha2_b.png b/res/drawable-hdpi/key_12key_alpha2_b.png
index 2dd2897..2a23205 100644
--- a/res/drawable-hdpi/key_12key_alpha2_b.png
+++ b/res/drawable-hdpi/key_12key_alpha2_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha3.png b/res/drawable-hdpi/key_12key_alpha3.png
index c4c031f..e6212f0 100644
--- a/res/drawable-hdpi/key_12key_alpha3.png
+++ b/res/drawable-hdpi/key_12key_alpha3.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha3_b.png b/res/drawable-hdpi/key_12key_alpha3_b.png
index 2c12a40..51eefdf 100644
--- a/res/drawable-hdpi/key_12key_alpha3_b.png
+++ b/res/drawable-hdpi/key_12key_alpha3_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha4.png b/res/drawable-hdpi/key_12key_alpha4.png
index cd4d00c..60faf68 100644
--- a/res/drawable-hdpi/key_12key_alpha4.png
+++ b/res/drawable-hdpi/key_12key_alpha4.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha4_b.png b/res/drawable-hdpi/key_12key_alpha4_b.png
index 5b98435..b125b17 100644
--- a/res/drawable-hdpi/key_12key_alpha4_b.png
+++ b/res/drawable-hdpi/key_12key_alpha4_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha5.png b/res/drawable-hdpi/key_12key_alpha5.png
index 9f0e92b..3a597ca 100644
--- a/res/drawable-hdpi/key_12key_alpha5.png
+++ b/res/drawable-hdpi/key_12key_alpha5.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha5_b.png b/res/drawable-hdpi/key_12key_alpha5_b.png
index f214550..27d1bd9 100644
--- a/res/drawable-hdpi/key_12key_alpha5_b.png
+++ b/res/drawable-hdpi/key_12key_alpha5_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha6.png b/res/drawable-hdpi/key_12key_alpha6.png
index 10d970b..65cb606 100644
--- a/res/drawable-hdpi/key_12key_alpha6.png
+++ b/res/drawable-hdpi/key_12key_alpha6.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha6_b.png b/res/drawable-hdpi/key_12key_alpha6_b.png
index d3beae0..8a9b47f 100644
--- a/res/drawable-hdpi/key_12key_alpha6_b.png
+++ b/res/drawable-hdpi/key_12key_alpha6_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha7.png b/res/drawable-hdpi/key_12key_alpha7.png
index cbe3cc1..50eed41 100644
--- a/res/drawable-hdpi/key_12key_alpha7.png
+++ b/res/drawable-hdpi/key_12key_alpha7.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha7_b.png b/res/drawable-hdpi/key_12key_alpha7_b.png
index 6584b60..2de0fc3 100644
--- a/res/drawable-hdpi/key_12key_alpha7_b.png
+++ b/res/drawable-hdpi/key_12key_alpha7_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha8.png b/res/drawable-hdpi/key_12key_alpha8.png
index 793c005..a953908 100644
--- a/res/drawable-hdpi/key_12key_alpha8.png
+++ b/res/drawable-hdpi/key_12key_alpha8.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha8_b.png b/res/drawable-hdpi/key_12key_alpha8_b.png
index f8eed53..357c51d 100644
--- a/res/drawable-hdpi/key_12key_alpha8_b.png
+++ b/res/drawable-hdpi/key_12key_alpha8_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha9.png b/res/drawable-hdpi/key_12key_alpha9.png
index afb0d92..dd680c5 100644
--- a/res/drawable-hdpi/key_12key_alpha9.png
+++ b/res/drawable-hdpi/key_12key_alpha9.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_alpha9_b.png b/res/drawable-hdpi/key_12key_alpha9_b.png
index 7bdf491..1bdc3bc 100644
--- a/res/drawable-hdpi/key_12key_alpha9_b.png
+++ b/res/drawable-hdpi/key_12key_alpha9_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_caps.png b/res/drawable-hdpi/key_12key_caps.png
index a4f2885..1072b52 100644
--- a/res/drawable-hdpi/key_12key_caps.png
+++ b/res/drawable-hdpi/key_12key_caps.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_caps_b.png b/res/drawable-hdpi/key_12key_caps_b.png
index a4922e5..1072b52 100644
--- a/res/drawable-hdpi/key_12key_caps_b.png
+++ b/res/drawable-hdpi/key_12key_caps_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_dakuten.png b/res/drawable-hdpi/key_12key_dakuten.png
index 6bbf010..03d71da 100644
--- a/res/drawable-hdpi/key_12key_dakuten.png
+++ b/res/drawable-hdpi/key_12key_dakuten.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_dakuten_b.png b/res/drawable-hdpi/key_12key_dakuten_b.png
index d6e7505..dbc5224 100644
--- a/res/drawable-hdpi/key_12key_dakuten_b.png
+++ b/res/drawable-hdpi/key_12key_dakuten_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_del.png b/res/drawable-hdpi/key_12key_del.png
deleted file mode 100644
index fda82fa..0000000
--- a/res/drawable-hdpi/key_12key_del.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_del_b.png b/res/drawable-hdpi/key_12key_del_b.png
deleted file mode 100644
index e93f2e0..0000000
--- a/res/drawable-hdpi/key_12key_del_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_del_b_landscape.png b/res/drawable-hdpi/key_12key_del_b_landscape.png
deleted file mode 100644
index e183c93..0000000
--- a/res/drawable-hdpi/key_12key_del_b_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_del_landscape.png b/res/drawable-hdpi/key_12key_del_landscape.png
deleted file mode 100644
index b227fd4..0000000
--- a/res/drawable-hdpi/key_12key_del_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_eisukana.png b/res/drawable-hdpi/key_12key_eisukana.png
index 0cb9637..a025bcf 100644
--- a/res/drawable-hdpi/key_12key_eisukana.png
+++ b/res/drawable-hdpi/key_12key_eisukana.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_eisukana_b.png b/res/drawable-hdpi/key_12key_eisukana_b.png
index d6d8d30..5e84935 100644
--- a/res/drawable-hdpi/key_12key_eisukana_b.png
+++ b/res/drawable-hdpi/key_12key_eisukana_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_enter.png b/res/drawable-hdpi/key_12key_enter.png
deleted file mode 100644
index 4dae5b6..0000000
--- a/res/drawable-hdpi/key_12key_enter.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_enter_b.png b/res/drawable-hdpi/key_12key_enter_b.png
deleted file mode 100644
index 6899036..0000000
--- a/res/drawable-hdpi/key_12key_enter_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_enter_jp.png b/res/drawable-hdpi/key_12key_enter_jp.png
deleted file mode 100644
index 59ccc07..0000000
--- a/res/drawable-hdpi/key_12key_enter_jp.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_enter_jp_b.png b/res/drawable-hdpi/key_12key_enter_jp_b.png
deleted file mode 100644
index 3bb83f4..0000000
--- a/res/drawable-hdpi/key_12key_enter_jp_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_enter_landscape.png b/res/drawable-hdpi/key_12key_enter_landscape.png
deleted file mode 100644
index 9bf47ab..0000000
--- a/res/drawable-hdpi/key_12key_enter_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_enter_landscape_b.png b/res/drawable-hdpi/key_12key_enter_landscape_b.png
deleted file mode 100644
index 98b2d99..0000000
--- a/res/drawable-hdpi/key_12key_enter_landscape_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_enter_landscape_jp.png b/res/drawable-hdpi/key_12key_enter_landscape_jp.png
deleted file mode 100644
index fd98c6b..0000000
--- a/res/drawable-hdpi/key_12key_enter_landscape_jp.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_enter_landscape_jp_b.png b/res/drawable-hdpi/key_12key_enter_landscape_jp_b.png
deleted file mode 100644
index af60064..0000000
--- a/res/drawable-hdpi/key_12key_enter_landscape_jp_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana0.png b/res/drawable-hdpi/key_12key_hiragana0.png
index eb25b1c..ee91793 100644
--- a/res/drawable-hdpi/key_12key_hiragana0.png
+++ b/res/drawable-hdpi/key_12key_hiragana0.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana0_b.png b/res/drawable-hdpi/key_12key_hiragana0_b.png
index 2144788..87d2d46 100644
--- a/res/drawable-hdpi/key_12key_hiragana0_b.png
+++ b/res/drawable-hdpi/key_12key_hiragana0_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana1.png b/res/drawable-hdpi/key_12key_hiragana1.png
index 32b51fa..c9dc92a 100644
--- a/res/drawable-hdpi/key_12key_hiragana1.png
+++ b/res/drawable-hdpi/key_12key_hiragana1.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana1_b.png b/res/drawable-hdpi/key_12key_hiragana1_b.png
index f5f21f0..8e4ed36 100644
--- a/res/drawable-hdpi/key_12key_hiragana1_b.png
+++ b/res/drawable-hdpi/key_12key_hiragana1_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana2.png b/res/drawable-hdpi/key_12key_hiragana2.png
index f9ba3c6..ef4d7b6 100644
--- a/res/drawable-hdpi/key_12key_hiragana2.png
+++ b/res/drawable-hdpi/key_12key_hiragana2.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana2_b.png b/res/drawable-hdpi/key_12key_hiragana2_b.png
index d12cb7c..ba9713c 100644
--- a/res/drawable-hdpi/key_12key_hiragana2_b.png
+++ b/res/drawable-hdpi/key_12key_hiragana2_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana3.png b/res/drawable-hdpi/key_12key_hiragana3.png
index 0b68d99..ae65c10 100644
--- a/res/drawable-hdpi/key_12key_hiragana3.png
+++ b/res/drawable-hdpi/key_12key_hiragana3.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana3_b.png b/res/drawable-hdpi/key_12key_hiragana3_b.png
index 13f7c56..bc212fc 100644
--- a/res/drawable-hdpi/key_12key_hiragana3_b.png
+++ b/res/drawable-hdpi/key_12key_hiragana3_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana4.png b/res/drawable-hdpi/key_12key_hiragana4.png
index 5e8a855..c745d54 100644
--- a/res/drawable-hdpi/key_12key_hiragana4.png
+++ b/res/drawable-hdpi/key_12key_hiragana4.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana4_b.png b/res/drawable-hdpi/key_12key_hiragana4_b.png
index 3b9e352..b448f65 100644
--- a/res/drawable-hdpi/key_12key_hiragana4_b.png
+++ b/res/drawable-hdpi/key_12key_hiragana4_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana5.png b/res/drawable-hdpi/key_12key_hiragana5.png
index 8c9361e..05d944b 100644
--- a/res/drawable-hdpi/key_12key_hiragana5.png
+++ b/res/drawable-hdpi/key_12key_hiragana5.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana5_b.png b/res/drawable-hdpi/key_12key_hiragana5_b.png
index 616b43d..118c56c 100644
--- a/res/drawable-hdpi/key_12key_hiragana5_b.png
+++ b/res/drawable-hdpi/key_12key_hiragana5_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana6.png b/res/drawable-hdpi/key_12key_hiragana6.png
index 4912b4f..4447e2b 100644
--- a/res/drawable-hdpi/key_12key_hiragana6.png
+++ b/res/drawable-hdpi/key_12key_hiragana6.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana6_b.png b/res/drawable-hdpi/key_12key_hiragana6_b.png
index e92957a..5fcdfc2 100644
--- a/res/drawable-hdpi/key_12key_hiragana6_b.png
+++ b/res/drawable-hdpi/key_12key_hiragana6_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana7.png b/res/drawable-hdpi/key_12key_hiragana7.png
index dbc5bc3..bc8d5e9 100644
--- a/res/drawable-hdpi/key_12key_hiragana7.png
+++ b/res/drawable-hdpi/key_12key_hiragana7.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana7_b.png b/res/drawable-hdpi/key_12key_hiragana7_b.png
index 2eab3f6..fff76cb 100644
--- a/res/drawable-hdpi/key_12key_hiragana7_b.png
+++ b/res/drawable-hdpi/key_12key_hiragana7_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana8.png b/res/drawable-hdpi/key_12key_hiragana8.png
index 63e02c9..52c9e3b 100644
--- a/res/drawable-hdpi/key_12key_hiragana8.png
+++ b/res/drawable-hdpi/key_12key_hiragana8.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana8_b.png b/res/drawable-hdpi/key_12key_hiragana8_b.png
index 9389ced..1da4c2e 100644
--- a/res/drawable-hdpi/key_12key_hiragana8_b.png
+++ b/res/drawable-hdpi/key_12key_hiragana8_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana9.png b/res/drawable-hdpi/key_12key_hiragana9.png
index 76fcf40..307509d 100644
--- a/res/drawable-hdpi/key_12key_hiragana9.png
+++ b/res/drawable-hdpi/key_12key_hiragana9.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_hiragana9_b.png b/res/drawable-hdpi/key_12key_hiragana9_b.png
index 15471e6..a09572a 100644
--- a/res/drawable-hdpi/key_12key_hiragana9_b.png
+++ b/res/drawable-hdpi/key_12key_hiragana9_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_left.png b/res/drawable-hdpi/key_12key_left.png
index 8adfc19..b04d095 100644
--- a/res/drawable-hdpi/key_12key_left.png
+++ b/res/drawable-hdpi/key_12key_left.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_left_b.png b/res/drawable-hdpi/key_12key_left_b.png
index 767f2d4..4df6446 100644
--- a/res/drawable-hdpi/key_12key_left_b.png
+++ b/res/drawable-hdpi/key_12key_left_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_full_alpha.png b/res/drawable-hdpi/key_12key_mode_full_alpha.png
deleted file mode 100644
index c875bf5..0000000
--- a/res/drawable-hdpi/key_12key_mode_full_alpha.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_full_alpha_landscape.png b/res/drawable-hdpi/key_12key_mode_full_alpha_landscape.png
deleted file mode 100644
index 927d56b..0000000
--- a/res/drawable-hdpi/key_12key_mode_full_alpha_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_full_kata.png b/res/drawable-hdpi/key_12key_mode_full_kata.png
deleted file mode 100644
index 6786f1c..0000000
--- a/res/drawable-hdpi/key_12key_mode_full_kata.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_full_kata_landscape.png b/res/drawable-hdpi/key_12key_mode_full_kata_landscape.png
deleted file mode 100644
index edd502c..0000000
--- a/res/drawable-hdpi/key_12key_mode_full_kata_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_full_num.png b/res/drawable-hdpi/key_12key_mode_full_num.png
deleted file mode 100644
index d0699b5..0000000
--- a/res/drawable-hdpi/key_12key_mode_full_num.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_full_num_landscape.png b/res/drawable-hdpi/key_12key_mode_full_num_landscape.png
deleted file mode 100644
index 7e286c5..0000000
--- a/res/drawable-hdpi/key_12key_mode_full_num_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_half_alpha.png b/res/drawable-hdpi/key_12key_mode_half_alpha.png
deleted file mode 100644
index 3f6d081..0000000
--- a/res/drawable-hdpi/key_12key_mode_half_alpha.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_half_alpha_landscape.png b/res/drawable-hdpi/key_12key_mode_half_alpha_landscape.png
deleted file mode 100644
index c6f5245..0000000
--- a/res/drawable-hdpi/key_12key_mode_half_alpha_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_half_kata.png b/res/drawable-hdpi/key_12key_mode_half_kata.png
deleted file mode 100644
index 296731a..0000000
--- a/res/drawable-hdpi/key_12key_mode_half_kata.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_half_kata_landscape.png b/res/drawable-hdpi/key_12key_mode_half_kata_landscape.png
deleted file mode 100644
index c8acb6d..0000000
--- a/res/drawable-hdpi/key_12key_mode_half_kata_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_half_num.png b/res/drawable-hdpi/key_12key_mode_half_num.png
deleted file mode 100644
index 6172775..0000000
--- a/res/drawable-hdpi/key_12key_mode_half_num.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_half_num_landscape.png b/res/drawable-hdpi/key_12key_mode_half_num_landscape.png
deleted file mode 100644
index fb2f61a..0000000
--- a/res/drawable-hdpi/key_12key_mode_half_num_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_hira.png b/res/drawable-hdpi/key_12key_mode_hira.png
deleted file mode 100644
index ea62e79..0000000
--- a/res/drawable-hdpi/key_12key_mode_hira.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_mode_hira_landscape.png b/res/drawable-hdpi/key_12key_mode_hira_landscape.png
deleted file mode 100644
index 9fd9d08..0000000
--- a/res/drawable-hdpi/key_12key_mode_hira_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_period_comma.png b/res/drawable-hdpi/key_12key_period_comma.png
index 8a4c7fc..71c2edc 100644
--- a/res/drawable-hdpi/key_12key_period_comma.png
+++ b/res/drawable-hdpi/key_12key_period_comma.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_period_comma_b.png b/res/drawable-hdpi/key_12key_period_comma_b.png
index 29fc223..ae0b110 100644
--- a/res/drawable-hdpi/key_12key_period_comma_b.png
+++ b/res/drawable-hdpi/key_12key_period_comma_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_pict_sym.png b/res/drawable-hdpi/key_12key_pict_sym.png
index 1121b98..a3f8105 100644
--- a/res/drawable-hdpi/key_12key_pict_sym.png
+++ b/res/drawable-hdpi/key_12key_pict_sym.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_reverse.png b/res/drawable-hdpi/key_12key_reverse.png
index f1e18c3..27d4635 100644
--- a/res/drawable-hdpi/key_12key_reverse.png
+++ b/res/drawable-hdpi/key_12key_reverse.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_reverse_b.png b/res/drawable-hdpi/key_12key_reverse_b.png
index 184c694..06bc8e9 100644
--- a/res/drawable-hdpi/key_12key_reverse_b.png
+++ b/res/drawable-hdpi/key_12key_reverse_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_right.png b/res/drawable-hdpi/key_12key_right.png
index 8cb8ee9..fdbb7d8 100644
--- a/res/drawable-hdpi/key_12key_right.png
+++ b/res/drawable-hdpi/key_12key_right.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_right_b.png b/res/drawable-hdpi/key_12key_right_b.png
index 61402c5..d0b2c75 100644
--- a/res/drawable-hdpi/key_12key_right_b.png
+++ b/res/drawable-hdpi/key_12key_right_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_space.png b/res/drawable-hdpi/key_12key_space.png
index 5ddbc1e..d1fd1b4 100644
--- a/res/drawable-hdpi/key_12key_space.png
+++ b/res/drawable-hdpi/key_12key_space.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_space_b.png b/res/drawable-hdpi/key_12key_space_b.png
index d51f357..729f558 100644
--- a/res/drawable-hdpi/key_12key_space_b.png
+++ b/res/drawable-hdpi/key_12key_space_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_space_jp.png b/res/drawable-hdpi/key_12key_space_jp.png
index 22932e5..cd05723 100644
--- a/res/drawable-hdpi/key_12key_space_jp.png
+++ b/res/drawable-hdpi/key_12key_space_jp.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_space_jp_b.png b/res/drawable-hdpi/key_12key_space_jp_b.png
index 54e8b19..95ed7ab 100644
--- a/res/drawable-hdpi/key_12key_space_jp_b.png
+++ b/res/drawable-hdpi/key_12key_space_jp_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_ten.png b/res/drawable-hdpi/key_12key_ten.png
index 62f6fc4..947686f 100644
--- a/res/drawable-hdpi/key_12key_ten.png
+++ b/res/drawable-hdpi/key_12key_ten.png
Binary files differ
diff --git a/res/drawable-hdpi/key_12key_ten_b.png b/res/drawable-hdpi/key_12key_ten_b.png
index a6a4d37..c8c2e0c 100644
--- a/res/drawable-hdpi/key_12key_ten_b.png
+++ b/res/drawable-hdpi/key_12key_ten_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_del.png b/res/drawable-hdpi/key_del.png
new file mode 100644
index 0000000..0b1bdf6
--- /dev/null
+++ b/res/drawable-hdpi/key_del.png
Binary files differ
diff --git a/res/drawable-hdpi/key_del_b.png b/res/drawable-hdpi/key_del_b.png
new file mode 100644
index 0000000..efa0204
--- /dev/null
+++ b/res/drawable-hdpi/key_del_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_enter.png b/res/drawable-hdpi/key_enter.png
new file mode 100644
index 0000000..87f37c5
--- /dev/null
+++ b/res/drawable-hdpi/key_enter.png
Binary files differ
diff --git a/res/drawable-hdpi/key_enter_b.png b/res/drawable-hdpi/key_enter_b.png
new file mode 100644
index 0000000..37b6b01
--- /dev/null
+++ b/res/drawable-hdpi/key_enter_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_mode_change_b.png b/res/drawable-hdpi/key_mode_change_b.png
index 24abfd4..f8dda2a 100644
--- a/res/drawable-hdpi/key_mode_change_b.png
+++ b/res/drawable-hdpi/key_mode_change_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_mode_full_alpha.png b/res/drawable-hdpi/key_mode_full_alpha.png
new file mode 100644
index 0000000..cf263ef
--- /dev/null
+++ b/res/drawable-hdpi/key_mode_full_alpha.png
Binary files differ
diff --git a/res/drawable-hdpi/key_mode_full_kata.png b/res/drawable-hdpi/key_mode_full_kata.png
new file mode 100644
index 0000000..400e2ca
--- /dev/null
+++ b/res/drawable-hdpi/key_mode_full_kata.png
Binary files differ
diff --git a/res/drawable-hdpi/key_mode_full_num.png b/res/drawable-hdpi/key_mode_full_num.png
new file mode 100644
index 0000000..8e97c4b
--- /dev/null
+++ b/res/drawable-hdpi/key_mode_full_num.png
Binary files differ
diff --git a/res/drawable-hdpi/key_mode_half_alpha.png b/res/drawable-hdpi/key_mode_half_alpha.png
new file mode 100644
index 0000000..440a9d3
--- /dev/null
+++ b/res/drawable-hdpi/key_mode_half_alpha.png
Binary files differ
diff --git a/res/drawable-hdpi/key_mode_half_kata.png b/res/drawable-hdpi/key_mode_half_kata.png
new file mode 100644
index 0000000..8cff2db
--- /dev/null
+++ b/res/drawable-hdpi/key_mode_half_kata.png
Binary files differ
diff --git a/res/drawable-hdpi/key_mode_half_num.png b/res/drawable-hdpi/key_mode_half_num.png
new file mode 100644
index 0000000..2e34935
--- /dev/null
+++ b/res/drawable-hdpi/key_mode_half_num.png
Binary files differ
diff --git a/res/drawable-hdpi/key_mode_hira.png b/res/drawable-hdpi/key_mode_hira.png
new file mode 100644
index 0000000..3de2cf2
--- /dev/null
+++ b/res/drawable-hdpi/key_mode_hira.png
Binary files differ
diff --git a/res/drawable-hdpi/key_mode_panel_kbd_12key_b.png b/res/drawable-hdpi/key_mode_panel_kbd_12key_b.png
index 7b0f7f0..2ed8f3d 100644
--- a/res/drawable-hdpi/key_mode_panel_kbd_12key_b.png
+++ b/res/drawable-hdpi/key_mode_panel_kbd_12key_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_pict_sym_b.png b/res/drawable-hdpi/key_pict_sym_b.png
new file mode 100644
index 0000000..e528ef9
--- /dev/null
+++ b/res/drawable-hdpi/key_pict_sym_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_del.png b/res/drawable-hdpi/key_qwerty_del.png
deleted file mode 100644
index c02e66c..0000000
--- a/res/drawable-hdpi/key_qwerty_del.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_del_b.png b/res/drawable-hdpi/key_qwerty_del_b.png
deleted file mode 100644
index df084c1..0000000
--- a/res/drawable-hdpi/key_qwerty_del_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_del_b_landscape.png b/res/drawable-hdpi/key_qwerty_del_b_landscape.png
deleted file mode 100644
index db71256..0000000
--- a/res/drawable-hdpi/key_qwerty_del_b_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_del_landscape.png b/res/drawable-hdpi/key_qwerty_del_landscape.png
deleted file mode 100644
index 2855634..0000000
--- a/res/drawable-hdpi/key_qwerty_del_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_enter.png b/res/drawable-hdpi/key_qwerty_enter.png
deleted file mode 100644
index 6243499..0000000
--- a/res/drawable-hdpi/key_qwerty_enter.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_enter_b.png b/res/drawable-hdpi/key_qwerty_enter_b.png
deleted file mode 100644
index 2d38865..0000000
--- a/res/drawable-hdpi/key_qwerty_enter_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_enter_jp.png b/res/drawable-hdpi/key_qwerty_enter_jp.png
deleted file mode 100644
index 54c82b5..0000000
--- a/res/drawable-hdpi/key_qwerty_enter_jp.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_enter_jp_b.png b/res/drawable-hdpi/key_qwerty_enter_jp_b.png
deleted file mode 100644
index b2fad3e..0000000
--- a/res/drawable-hdpi/key_qwerty_enter_jp_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_enter_landscape.png b/res/drawable-hdpi/key_qwerty_enter_landscape.png
deleted file mode 100644
index fd0231c..0000000
--- a/res/drawable-hdpi/key_qwerty_enter_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_enter_landscape_b.png b/res/drawable-hdpi/key_qwerty_enter_landscape_b.png
deleted file mode 100644
index 574c896..0000000
--- a/res/drawable-hdpi/key_qwerty_enter_landscape_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_enter_landscape_jp.png b/res/drawable-hdpi/key_qwerty_enter_landscape_jp.png
deleted file mode 100644
index bb9d835..0000000
--- a/res/drawable-hdpi/key_qwerty_enter_landscape_jp.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_enter_landscape_jp_b.png b/res/drawable-hdpi/key_qwerty_enter_landscape_jp_b.png
deleted file mode 100644
index a43e717..0000000
--- a/res/drawable-hdpi/key_qwerty_enter_landscape_jp_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_left.png b/res/drawable-hdpi/key_qwerty_left.png
new file mode 100644
index 0000000..1e6de0e
--- /dev/null
+++ b/res/drawable-hdpi/key_qwerty_left.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_left_b.png b/res/drawable-hdpi/key_qwerty_left_b.png
new file mode 100644
index 0000000..1ef2ff4
--- /dev/null
+++ b/res/drawable-hdpi/key_qwerty_left_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_full_alpha.png b/res/drawable-hdpi/key_qwerty_mode_full_alpha.png
deleted file mode 100644
index 004cd36..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_full_alpha.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_full_alpha_landscape.png b/res/drawable-hdpi/key_qwerty_mode_full_alpha_landscape.png
deleted file mode 100644
index a7152ad..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_full_alpha_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_full_kata.png b/res/drawable-hdpi/key_qwerty_mode_full_kata.png
deleted file mode 100644
index 1a37099..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_full_kata.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_full_kata_landscape.png b/res/drawable-hdpi/key_qwerty_mode_full_kata_landscape.png
deleted file mode 100644
index d3a537e..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_full_kata_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_full_num.png b/res/drawable-hdpi/key_qwerty_mode_full_num.png
deleted file mode 100644
index 442b93d..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_full_num.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_full_num_landscape.png b/res/drawable-hdpi/key_qwerty_mode_full_num_landscape.png
deleted file mode 100644
index b0e530e..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_full_num_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_half_alpha.png b/res/drawable-hdpi/key_qwerty_mode_half_alpha.png
deleted file mode 100644
index 7d58689..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_half_alpha.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_half_alpha_landscape.png b/res/drawable-hdpi/key_qwerty_mode_half_alpha_landscape.png
deleted file mode 100644
index f87d42b..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_half_alpha_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_half_kata.png b/res/drawable-hdpi/key_qwerty_mode_half_kata.png
deleted file mode 100644
index 4c219a3..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_half_kata.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_half_kata_landscape.png b/res/drawable-hdpi/key_qwerty_mode_half_kata_landscape.png
deleted file mode 100644
index 05eee0a..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_half_kata_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_half_num.png b/res/drawable-hdpi/key_qwerty_mode_half_num.png
deleted file mode 100644
index a181e33..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_half_num.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_half_num_landscape.png b/res/drawable-hdpi/key_qwerty_mode_half_num_landscape.png
deleted file mode 100644
index 2aec40b..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_half_num_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_hira.png b/res/drawable-hdpi/key_qwerty_mode_hira.png
deleted file mode 100644
index 077d7da..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_hira.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_mode_hira_landscape.png b/res/drawable-hdpi/key_qwerty_mode_hira_landscape.png
deleted file mode 100644
index 5d3fd29..0000000
--- a/res/drawable-hdpi/key_qwerty_mode_hira_landscape.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_pict_sym.png b/res/drawable-hdpi/key_qwerty_pict_sym.png
index 276fc9d..befaecb 100644
--- a/res/drawable-hdpi/key_qwerty_pict_sym.png
+++ b/res/drawable-hdpi/key_qwerty_pict_sym.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_pict_sym_b.png b/res/drawable-hdpi/key_qwerty_pict_sym_b.png
deleted file mode 100644
index 43472f2..0000000
--- a/res/drawable-hdpi/key_qwerty_pict_sym_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_return.png b/res/drawable-hdpi/key_qwerty_return.png
new file mode 100644
index 0000000..99fa13c
--- /dev/null
+++ b/res/drawable-hdpi/key_qwerty_return.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_right.png b/res/drawable-hdpi/key_qwerty_right.png
new file mode 100644
index 0000000..0bf054c
--- /dev/null
+++ b/res/drawable-hdpi/key_qwerty_right.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_right_b.png b/res/drawable-hdpi/key_qwerty_right_b.png
new file mode 100644
index 0000000..2a9d807
--- /dev/null
+++ b/res/drawable-hdpi/key_qwerty_right_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_shift_b.png b/res/drawable-hdpi/key_qwerty_shift_b.png
index 73cbec8..8d9d8ed 100644
--- a/res/drawable-hdpi/key_qwerty_shift_b.png
+++ b/res/drawable-hdpi/key_qwerty_shift_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_shift_locked.png b/res/drawable-hdpi/key_qwerty_shift_locked.png
new file mode 100644
index 0000000..930a799
--- /dev/null
+++ b/res/drawable-hdpi/key_qwerty_shift_locked.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_space.png b/res/drawable-hdpi/key_qwerty_space.png
index a9bbdbe..74c4f3d 100644
--- a/res/drawable-hdpi/key_qwerty_space.png
+++ b/res/drawable-hdpi/key_qwerty_space.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_space_b.png b/res/drawable-hdpi/key_qwerty_space_b.png
index 0cbaf57..b0b9acf 100644
--- a/res/drawable-hdpi/key_qwerty_space_b.png
+++ b/res/drawable-hdpi/key_qwerty_space_b.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_space_conv.png b/res/drawable-hdpi/key_qwerty_space_conv.png
index e120c85..e66a564 100644
--- a/res/drawable-hdpi/key_qwerty_space_conv.png
+++ b/res/drawable-hdpi/key_qwerty_space_conv.png
Binary files differ
diff --git a/res/drawable-hdpi/key_qwerty_space_conv_b.png b/res/drawable-hdpi/key_qwerty_space_conv_b.png
index f79e545..30f65f0 100644
--- a/res/drawable-hdpi/key_qwerty_space_conv_b.png
+++ b/res/drawable-hdpi/key_qwerty_space_conv_b.png
Binary files differ
diff --git a/res/drawable-hdpi/keybg_ice_bg.png b/res/drawable-hdpi/keybg_ice_bg.png
new file mode 100644
index 0000000..3b5f87a
--- /dev/null
+++ b/res/drawable-hdpi/keybg_ice_bg.png
Binary files differ
diff --git a/res/drawable-hdpi/keyboard_background.png b/res/drawable-hdpi/keyboard_background.png
new file mode 100644
index 0000000..8b8bb8c
--- /dev/null
+++ b/res/drawable-hdpi/keyboard_background.png
Binary files differ
diff --git a/res/drawable-hdpi/keyboard_key_feedback_background.9.png b/res/drawable-hdpi/keyboard_key_feedback_background.9.png
new file mode 100644
index 0000000..af33c73
--- /dev/null
+++ b/res/drawable-hdpi/keyboard_key_feedback_background.9.png
Binary files differ
diff --git a/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png b/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
new file mode 100644
index 0000000..428fa90
--- /dev/null
+++ b/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
Binary files differ
diff --git a/res/drawable-hdpi/keyboard_popup_panel_background.9.png b/res/drawable-hdpi/keyboard_popup_panel_background.9.png
new file mode 100644
index 0000000..36d75df
--- /dev/null
+++ b/res/drawable-hdpi/keyboard_popup_panel_background.9.png
Binary files differ
diff --git a/res/drawable-hdpi/tab_no_select.9.png b/res/drawable-hdpi/tab_no_select.9.png
new file mode 100644
index 0000000..d5f4ba4
--- /dev/null
+++ b/res/drawable-hdpi/tab_no_select.9.png
Binary files differ
diff --git a/res/drawable-hdpi/tab_press.9.png b/res/drawable-hdpi/tab_press.9.png
new file mode 100644
index 0000000..4eeda4d
--- /dev/null
+++ b/res/drawable-hdpi/tab_press.9.png
Binary files differ
diff --git a/res/drawable-hdpi/tab_select.9.png b/res/drawable-hdpi/tab_select.9.png
new file mode 100644
index 0000000..20f9b5f
--- /dev/null
+++ b/res/drawable-hdpi/tab_select.9.png
Binary files differ
diff --git a/res/drawable-hdpi/tutorial_12key_enter.png b/res/drawable-hdpi/tutorial_12key_enter.png
index 283883f..a30a8f3 100644
--- a/res/drawable-hdpi/tutorial_12key_enter.png
+++ b/res/drawable-hdpi/tutorial_12key_enter.png
Binary files differ
diff --git a/res/drawable-hdpi/tutorial_12key_mode.png b/res/drawable-hdpi/tutorial_12key_mode.png
index 05066f9..d5cb55a 100644
--- a/res/drawable-hdpi/tutorial_12key_mode.png
+++ b/res/drawable-hdpi/tutorial_12key_mode.png
Binary files differ
diff --git a/res/drawable-ja/tutorial_12key_mode.png b/res/drawable-ja/tutorial_12key_mode.png
index d287c13..15d9a4c 100644
--- a/res/drawable-ja/tutorial_12key_mode.png
+++ b/res/drawable-ja/tutorial_12key_mode.png
Binary files differ
diff --git a/res/drawable-sw768dp-hdpi/cand_tab.xml b/res/drawable-sw768dp-hdpi/cand_tab.xml
new file mode 100644
index 0000000..aed0a42
--- /dev/null
+++ b/res/drawable-sw768dp-hdpi/cand_tab.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/tab_press" />
+    <item android:state_pressed="false"
+          android:drawable="@drawable/tab_select" />
+</selector>
diff --git a/res/drawable-sw768dp-hdpi/cand_tab_noselect.xml b/res/drawable-sw768dp-hdpi/cand_tab_noselect.xml
new file mode 100644
index 0000000..761da6e
--- /dev/null
+++ b/res/drawable-sw768dp-hdpi/cand_tab_noselect.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/tab_press" />
+    <item android:state_pressed="false"
+          android:drawable="@drawable/tab_no_select" />
+</selector>
diff --git a/res/drawable-sw768dp-hdpi/key_del.png b/res/drawable-sw768dp-hdpi/key_del.png
new file mode 100644
index 0000000..7c12f79
--- /dev/null
+++ b/res/drawable-sw768dp-hdpi/key_del.png
Binary files differ
diff --git a/res/drawable-sw768dp-hdpi/key_qwerty_shift.png b/res/drawable-sw768dp-hdpi/key_qwerty_shift.png
new file mode 100644
index 0000000..ade2134
--- /dev/null
+++ b/res/drawable-sw768dp-hdpi/key_qwerty_shift.png
Binary files differ
diff --git a/res/drawable-sw768dp-hdpi/key_qwerty_shift_locked.png b/res/drawable-sw768dp-hdpi/key_qwerty_shift_locked.png
new file mode 100644
index 0000000..9e9b999
--- /dev/null
+++ b/res/drawable-sw768dp-hdpi/key_qwerty_shift_locked.png
Binary files differ
diff --git a/res/drawable-sw768dp-hdpi/tab_no_select.9.png b/res/drawable-sw768dp-hdpi/tab_no_select.9.png
new file mode 100644
index 0000000..d1179e4
--- /dev/null
+++ b/res/drawable-sw768dp-hdpi/tab_no_select.9.png
Binary files differ
diff --git a/res/drawable-sw768dp-hdpi/tab_press.9.png b/res/drawable-sw768dp-hdpi/tab_press.9.png
new file mode 100644
index 0000000..2f491b1
--- /dev/null
+++ b/res/drawable-sw768dp-hdpi/tab_press.9.png
Binary files differ
diff --git a/res/drawable-sw768dp-hdpi/tab_select.9.png b/res/drawable-sw768dp-hdpi/tab_select.9.png
new file mode 100644
index 0000000..de538cc
--- /dev/null
+++ b/res/drawable-sw768dp-hdpi/tab_select.9.png
Binary files differ
diff --git a/res/drawable-sw768dp-land-hdpi/key_qwerty_shift.png b/res/drawable-sw768dp-land-hdpi/key_qwerty_shift.png
new file mode 100644
index 0000000..906b713
--- /dev/null
+++ b/res/drawable-sw768dp-land-hdpi/key_qwerty_shift.png
Binary files differ
diff --git a/res/drawable-sw768dp-land-hdpi/key_qwerty_shift_locked.png b/res/drawable-sw768dp-land-hdpi/key_qwerty_shift_locked.png
new file mode 100644
index 0000000..376f584
--- /dev/null
+++ b/res/drawable-sw768dp-land-hdpi/key_qwerty_shift_locked.png
Binary files differ
diff --git a/res/drawable-sw768dp/btn_keyboard_key.xml b/res/drawable-sw768dp/btn_keyboard_key.xml
new file mode 100644
index 0000000..2708442
--- /dev/null
+++ b/res/drawable-sw768dp/btn_keyboard_key.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <!-- Toggle keys. Use checkable/checked state. -->
+
+    <!-- Normal keys -->
+
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_light_pressed_holo" />
+    <item
+          android:drawable="@drawable/btn_keyboard_key_normal" />
+ 
+</selector>
diff --git a/res/drawable-sw768dp/btn_keyboard_key_2nd.xml b/res/drawable-sw768dp/btn_keyboard_key_2nd.xml
new file mode 100644
index 0000000..e9b116e
--- /dev/null
+++ b/res/drawable-sw768dp/btn_keyboard_key_2nd.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <!-- Toggle keys. Use checkable/checked state. -->
+
+    <item android:state_checkable="true" android:state_checked="true"
+          android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_dark_pressed_holo" />
+    <item android:state_checkable="true" android:state_checked="true"
+          android:drawable="@drawable/btn_keyboard_key_normal_on_2nd" />
+
+    <!-- Normal keys -->
+
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_dark_pressed_holo" />
+    <item
+          android:drawable="@drawable/btn_keyboard_key_normal_2nd" />
+ 
+</selector>
diff --git a/res/drawable-sw768dp/btn_keyboard_key_normal.9.png b/res/drawable-sw768dp/btn_keyboard_key_normal.9.png
new file mode 100644
index 0000000..cae8062
--- /dev/null
+++ b/res/drawable-sw768dp/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/res/drawable-sw768dp/cand_back_normal.9.png b/res/drawable-sw768dp/cand_back_normal.9.png
new file mode 100644
index 0000000..523e905
--- /dev/null
+++ b/res/drawable-sw768dp/cand_back_normal.9.png
Binary files differ
diff --git a/res/drawable-sw768dp/cand_back_pressed.9.png b/res/drawable-sw768dp/cand_back_pressed.9.png
new file mode 100644
index 0000000..2c4f82c
--- /dev/null
+++ b/res/drawable-sw768dp/cand_back_pressed.9.png
Binary files differ
diff --git a/res/drawable-sw768dp/key_mode_full_num.png b/res/drawable-sw768dp/key_mode_full_num.png
new file mode 100644
index 0000000..4f7125b
--- /dev/null
+++ b/res/drawable-sw768dp/key_mode_full_num.png
Binary files differ
diff --git a/res/drawable-sw768dp/key_mode_half_alpha.png b/res/drawable-sw768dp/key_mode_half_alpha.png
new file mode 100644
index 0000000..c035b55
--- /dev/null
+++ b/res/drawable-sw768dp/key_mode_half_alpha.png
Binary files differ
diff --git a/res/drawable-sw768dp/key_mode_half_num.png b/res/drawable-sw768dp/key_mode_half_num.png
new file mode 100644
index 0000000..b709eed
--- /dev/null
+++ b/res/drawable-sw768dp/key_mode_half_num.png
Binary files differ
diff --git a/res/drawable-sw768dp/key_mode_hira.png b/res/drawable-sw768dp/key_mode_hira.png
new file mode 100644
index 0000000..7c9442f
--- /dev/null
+++ b/res/drawable-sw768dp/key_mode_hira.png
Binary files differ
diff --git a/res/drawable-sw768dp/keyboard_background.png b/res/drawable-sw768dp/keyboard_background.png
new file mode 100644
index 0000000..250d1e9
--- /dev/null
+++ b/res/drawable-sw768dp/keyboard_background.png
Binary files differ
diff --git a/res/drawable/btn_close.xml b/res/drawable/btn_close.xml
new file mode 100644
index 0000000..5af18f3
--- /dev/null
+++ b/res/drawable/btn_close.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_pressed="false"
+        android:drawable="@drawable/btn_close_normal" />
+
+    <item android:state_pressed="true"
+        android:drawable="@drawable/btn_close_pressed" />
+
+</selector>
diff --git a/res/drawable/btn_close_normal.png b/res/drawable/btn_close_normal.png
new file mode 100644
index 0000000..06639c4
--- /dev/null
+++ b/res/drawable/btn_close_normal.png
Binary files differ
diff --git a/res/drawable/btn_close_pressed.png b/res/drawable/btn_close_pressed.png
new file mode 100644
index 0000000..3791da4
--- /dev/null
+++ b/res/drawable/btn_close_pressed.png
Binary files differ
diff --git a/res/drawable/btn_keyboard_key.xml b/res/drawable/btn_keyboard_key.xml
new file mode 100644
index 0000000..5b3b4b1
--- /dev/null
+++ b/res/drawable/btn_keyboard_key.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <!-- Toggle keys. Use checkable/checked state. -->
+ 
+    <!-- Normal keys -->
+
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed" />
+    <item
+          android:drawable="@drawable/btn_keyboard_key_normal" />
+ 
+</selector>
diff --git a/res/drawable/btn_keyboard_key_2nd.xml b/res/drawable/btn_keyboard_key_2nd.xml
new file mode 100644
index 0000000..8f3ff83
--- /dev/null
+++ b/res/drawable/btn_keyboard_key_2nd.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <!-- Toggle keys. Use checkable/checked state. -->
+
+    <item android:state_checkable="true" android:state_checked="true" 
+          android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed_on_2nd" />
+    <item android:state_checkable="true" android:state_checked="true"
+          android:drawable="@drawable/btn_keyboard_key_normal_on_2nd" />
+
+    <!-- Normal keys -->
+
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed_2nd" />
+    <item
+          android:drawable="@drawable/btn_keyboard_key_normal_2nd" />
+ 
+</selector>
diff --git a/res/drawable/cand_back.xml b/res/drawable/cand_back.xml
index a06d2b3..1049d58 100644
--- a/res/drawable/cand_back.xml
+++ b/res/drawable/cand_back.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -14,10 +14,11 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true" 
           android:drawable="@drawable/cand_back_pressed" />
+    <item android:state_focused="true"
+          android:drawable="@drawable/cand_back_focused" />
     <item android:state_pressed="false"
           android:drawable="@drawable/cand_back_normal" />
 </selector>
diff --git a/res/drawable/cand_back_normal.9.png b/res/drawable/cand_back_normal.9.png
index 4ed524b..6b829f5 100644
--- a/res/drawable/cand_back_normal.9.png
+++ b/res/drawable/cand_back_normal.9.png
Binary files differ
diff --git a/res/drawable/cand_down.png b/res/drawable/cand_down.png
deleted file mode 100644
index e73aad2..0000000
--- a/res/drawable/cand_down.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/cand_down_press.png b/res/drawable/cand_down_press.png
deleted file mode 100644
index cb72e57..0000000
--- a/res/drawable/cand_down_press.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/cand_up.png b/res/drawable/cand_up.png
deleted file mode 100644
index 17b59f4..0000000
--- a/res/drawable/cand_up.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/cand_up_press.png b/res/drawable/cand_up_press.png
deleted file mode 100644
index e89d647..0000000
--- a/res/drawable/cand_up_press.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/candidate.png b/res/drawable/candidate.png
index e8f8f3f..a08b624 100644
--- a/res/drawable/candidate.png
+++ b/res/drawable/candidate.png
Binary files differ
diff --git a/res/drawable/candidate_top.9.png b/res/drawable/candidate_top.9.png
new file mode 100644
index 0000000..fb6018f
--- /dev/null
+++ b/res/drawable/candidate_top.9.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha0.png b/res/drawable/key_12key_alpha0.png
index af50aae..b410229 100644
--- a/res/drawable/key_12key_alpha0.png
+++ b/res/drawable/key_12key_alpha0.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha0_b.png b/res/drawable/key_12key_alpha0_b.png
index ee99d6c..412be11 100644
--- a/res/drawable/key_12key_alpha0_b.png
+++ b/res/drawable/key_12key_alpha0_b.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha1.png b/res/drawable/key_12key_alpha1.png
index ede30b2..a7f5a15 100644
--- a/res/drawable/key_12key_alpha1.png
+++ b/res/drawable/key_12key_alpha1.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha1_b.png b/res/drawable/key_12key_alpha1_b.png
index 430bec9..6ff54c6 100644
--- a/res/drawable/key_12key_alpha1_b.png
+++ b/res/drawable/key_12key_alpha1_b.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha2.png b/res/drawable/key_12key_alpha2.png
index 6c549fc..a26b135 100644
--- a/res/drawable/key_12key_alpha2.png
+++ b/res/drawable/key_12key_alpha2.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha2_b.png b/res/drawable/key_12key_alpha2_b.png
index 83f5924..914b3a3 100644
--- a/res/drawable/key_12key_alpha2_b.png
+++ b/res/drawable/key_12key_alpha2_b.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha3.png b/res/drawable/key_12key_alpha3.png
index 2690655..4f35c42 100644
--- a/res/drawable/key_12key_alpha3.png
+++ b/res/drawable/key_12key_alpha3.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha3_b.png b/res/drawable/key_12key_alpha3_b.png
index 7bd55a8..d1c0221 100644
--- a/res/drawable/key_12key_alpha3_b.png
+++ b/res/drawable/key_12key_alpha3_b.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha4.png b/res/drawable/key_12key_alpha4.png
index 6f0cfb8..296d379 100644
--- a/res/drawable/key_12key_alpha4.png
+++ b/res/drawable/key_12key_alpha4.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha4_b.png b/res/drawable/key_12key_alpha4_b.png
index 2c5a17c..b77e854 100644
--- a/res/drawable/key_12key_alpha4_b.png
+++ b/res/drawable/key_12key_alpha4_b.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha5.png b/res/drawable/key_12key_alpha5.png
index 232f4a4..375c2ad 100644
--- a/res/drawable/key_12key_alpha5.png
+++ b/res/drawable/key_12key_alpha5.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha5_b.png b/res/drawable/key_12key_alpha5_b.png
index 231b56a..d700050 100644
--- a/res/drawable/key_12key_alpha5_b.png
+++ b/res/drawable/key_12key_alpha5_b.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha6.png b/res/drawable/key_12key_alpha6.png
index 0455f97..e0112a7 100644
--- a/res/drawable/key_12key_alpha6.png
+++ b/res/drawable/key_12key_alpha6.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha6_b.png b/res/drawable/key_12key_alpha6_b.png
index 51fa129..7953ec9 100644
--- a/res/drawable/key_12key_alpha6_b.png
+++ b/res/drawable/key_12key_alpha6_b.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha7.png b/res/drawable/key_12key_alpha7.png
index 4409532..ed2bbff 100644
--- a/res/drawable/key_12key_alpha7.png
+++ b/res/drawable/key_12key_alpha7.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha7_b.png b/res/drawable/key_12key_alpha7_b.png
index 1d5d1e3..621a06e 100644
--- a/res/drawable/key_12key_alpha7_b.png
+++ b/res/drawable/key_12key_alpha7_b.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha8.png b/res/drawable/key_12key_alpha8.png
index 6cffeab..997dbc8 100644
--- a/res/drawable/key_12key_alpha8.png
+++ b/res/drawable/key_12key_alpha8.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha8_b.png b/res/drawable/key_12key_alpha8_b.png
index d077856..e565042 100644
--- a/res/drawable/key_12key_alpha8_b.png
+++ b/res/drawable/key_12key_alpha8_b.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha9.png b/res/drawable/key_12key_alpha9.png
index 7dd05f9..d87b8b8 100644
--- a/res/drawable/key_12key_alpha9.png
+++ b/res/drawable/key_12key_alpha9.png
Binary files differ
diff --git a/res/drawable/key_12key_alpha9_b.png b/res/drawable/key_12key_alpha9_b.png
index 1f7a23e..705d7a5 100644
--- a/res/drawable/key_12key_alpha9_b.png
+++ b/res/drawable/key_12key_alpha9_b.png
Binary files differ
diff --git a/res/drawable/key_12key_caps.png b/res/drawable/key_12key_caps.png
index d0c52c2..8ea679d 100644
--- a/res/drawable/key_12key_caps.png
+++ b/res/drawable/key_12key_caps.png
Binary files differ
diff --git a/res/drawable/key_12key_caps_b.png b/res/drawable/key_12key_caps_b.png
index 19b8d2d..8ea679d 100644
--- a/res/drawable/key_12key_caps_b.png
+++ b/res/drawable/key_12key_caps_b.png
Binary files differ
diff --git a/res/drawable/key_12key_dakuten.png b/res/drawable/key_12key_dakuten.png
index 8e979cc..74f0006 100644
--- a/res/drawable/key_12key_dakuten.png
+++ b/res/drawable/key_12key_dakuten.png
Binary files differ
diff --git a/res/drawable/key_12key_dakuten_b.png b/res/drawable/key_12key_dakuten_b.png
index 5b850bf..3f5888c 100644
--- a/res/drawable/key_12key_dakuten_b.png
+++ b/res/drawable/key_12key_dakuten_b.png
Binary files differ
diff --git a/res/drawable/key_12key_del.png b/res/drawable/key_12key_del.png
deleted file mode 100644
index 4aab087..0000000
--- a/res/drawable/key_12key_del.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_del_b.png b/res/drawable/key_12key_del_b.png
deleted file mode 100644
index ecc2dba..0000000
--- a/res/drawable/key_12key_del_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_eisukana.png b/res/drawable/key_12key_eisukana.png
index b28c9cd..ce46f19 100644
--- a/res/drawable/key_12key_eisukana.png
+++ b/res/drawable/key_12key_eisukana.png
Binary files differ
diff --git a/res/drawable/key_12key_eisukana_b.png b/res/drawable/key_12key_eisukana_b.png
index 805c5ea..ce46f19 100644
--- a/res/drawable/key_12key_eisukana_b.png
+++ b/res/drawable/key_12key_eisukana_b.png
Binary files differ
diff --git a/res/drawable/key_12key_enter.png b/res/drawable/key_12key_enter.png
deleted file mode 100644
index b2e729b..0000000
--- a/res/drawable/key_12key_enter.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_enter_b.png b/res/drawable/key_12key_enter_b.png
deleted file mode 100644
index d26baa6..0000000
--- a/res/drawable/key_12key_enter_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_enter_jp.png b/res/drawable/key_12key_enter_jp.png
deleted file mode 100644
index aeb461b..0000000
--- a/res/drawable/key_12key_enter_jp.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_enter_jp_b.png b/res/drawable/key_12key_enter_jp_b.png
deleted file mode 100644
index 784a7e9..0000000
--- a/res/drawable/key_12key_enter_jp_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_hiragana0.png b/res/drawable/key_12key_hiragana0.png
index 6c039d0..b704165 100644
--- a/res/drawable/key_12key_hiragana0.png
+++ b/res/drawable/key_12key_hiragana0.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana0_b.png b/res/drawable/key_12key_hiragana0_b.png
index 9baf830..4e96294 100644
--- a/res/drawable/key_12key_hiragana0_b.png
+++ b/res/drawable/key_12key_hiragana0_b.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana1.png b/res/drawable/key_12key_hiragana1.png
index ff33fd5..253f43f 100644
--- a/res/drawable/key_12key_hiragana1.png
+++ b/res/drawable/key_12key_hiragana1.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana1_b.png b/res/drawable/key_12key_hiragana1_b.png
index 5415e4b..918d282 100644
--- a/res/drawable/key_12key_hiragana1_b.png
+++ b/res/drawable/key_12key_hiragana1_b.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana2.png b/res/drawable/key_12key_hiragana2.png
index 2338b39..d4551b1 100644
--- a/res/drawable/key_12key_hiragana2.png
+++ b/res/drawable/key_12key_hiragana2.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana2_b.png b/res/drawable/key_12key_hiragana2_b.png
index 81b3c0b..e945c7f 100644
--- a/res/drawable/key_12key_hiragana2_b.png
+++ b/res/drawable/key_12key_hiragana2_b.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana3.png b/res/drawable/key_12key_hiragana3.png
index 6508763..0a3ee62 100644
--- a/res/drawable/key_12key_hiragana3.png
+++ b/res/drawable/key_12key_hiragana3.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana3_b.png b/res/drawable/key_12key_hiragana3_b.png
index 7b0173f..1fba929 100644
--- a/res/drawable/key_12key_hiragana3_b.png
+++ b/res/drawable/key_12key_hiragana3_b.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana4.png b/res/drawable/key_12key_hiragana4.png
index 79d9a03..d544396 100644
--- a/res/drawable/key_12key_hiragana4.png
+++ b/res/drawable/key_12key_hiragana4.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana4_b.png b/res/drawable/key_12key_hiragana4_b.png
index d34f52d..3faa527 100644
--- a/res/drawable/key_12key_hiragana4_b.png
+++ b/res/drawable/key_12key_hiragana4_b.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana5.png b/res/drawable/key_12key_hiragana5.png
index 62769a2..e9f101f 100644
--- a/res/drawable/key_12key_hiragana5.png
+++ b/res/drawable/key_12key_hiragana5.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana5_b.png b/res/drawable/key_12key_hiragana5_b.png
index c5bbc38..0613ceb 100644
--- a/res/drawable/key_12key_hiragana5_b.png
+++ b/res/drawable/key_12key_hiragana5_b.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana6.png b/res/drawable/key_12key_hiragana6.png
index a130fb8..64c0121 100644
--- a/res/drawable/key_12key_hiragana6.png
+++ b/res/drawable/key_12key_hiragana6.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana6_b.png b/res/drawable/key_12key_hiragana6_b.png
index f2d1246..61497dc 100644
--- a/res/drawable/key_12key_hiragana6_b.png
+++ b/res/drawable/key_12key_hiragana6_b.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana7.png b/res/drawable/key_12key_hiragana7.png
index f74e52a..6755d26 100644
--- a/res/drawable/key_12key_hiragana7.png
+++ b/res/drawable/key_12key_hiragana7.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana7_b.png b/res/drawable/key_12key_hiragana7_b.png
index 8246602..70f147e 100644
--- a/res/drawable/key_12key_hiragana7_b.png
+++ b/res/drawable/key_12key_hiragana7_b.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana8.png b/res/drawable/key_12key_hiragana8.png
index f2a3fdb..fd64e15 100644
--- a/res/drawable/key_12key_hiragana8.png
+++ b/res/drawable/key_12key_hiragana8.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana8_b.png b/res/drawable/key_12key_hiragana8_b.png
index 8ddf7b4..478c68b 100644
--- a/res/drawable/key_12key_hiragana8_b.png
+++ b/res/drawable/key_12key_hiragana8_b.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana9.png b/res/drawable/key_12key_hiragana9.png
index 35a2129..d34d476 100644
--- a/res/drawable/key_12key_hiragana9.png
+++ b/res/drawable/key_12key_hiragana9.png
Binary files differ
diff --git a/res/drawable/key_12key_hiragana9_b.png b/res/drawable/key_12key_hiragana9_b.png
index 516f847..b79d5e0 100644
--- a/res/drawable/key_12key_hiragana9_b.png
+++ b/res/drawable/key_12key_hiragana9_b.png
Binary files differ
diff --git a/res/drawable/key_12key_left.png b/res/drawable/key_12key_left.png
index d604272..f177aad 100644
--- a/res/drawable/key_12key_left.png
+++ b/res/drawable/key_12key_left.png
Binary files differ
diff --git a/res/drawable/key_12key_left_b.png b/res/drawable/key_12key_left_b.png
index 02fc93b..f177aad 100644
--- a/res/drawable/key_12key_left_b.png
+++ b/res/drawable/key_12key_left_b.png
Binary files differ
diff --git a/res/drawable/key_12key_mode_full_alpha.png b/res/drawable/key_12key_mode_full_alpha.png
deleted file mode 100644
index fd4f880..0000000
--- a/res/drawable/key_12key_mode_full_alpha.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_mode_full_kata.png b/res/drawable/key_12key_mode_full_kata.png
deleted file mode 100644
index 81b66e2..0000000
--- a/res/drawable/key_12key_mode_full_kata.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_mode_full_num.png b/res/drawable/key_12key_mode_full_num.png
deleted file mode 100644
index dc929a1..0000000
--- a/res/drawable/key_12key_mode_full_num.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_mode_half_alpha.png b/res/drawable/key_12key_mode_half_alpha.png
deleted file mode 100644
index 4bf6f99..0000000
--- a/res/drawable/key_12key_mode_half_alpha.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_mode_half_kata.png b/res/drawable/key_12key_mode_half_kata.png
deleted file mode 100644
index 322341a..0000000
--- a/res/drawable/key_12key_mode_half_kata.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_mode_half_num.png b/res/drawable/key_12key_mode_half_num.png
deleted file mode 100644
index 68a8760..0000000
--- a/res/drawable/key_12key_mode_half_num.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_mode_hira.png b/res/drawable/key_12key_mode_hira.png
deleted file mode 100644
index 9eb8584..0000000
--- a/res/drawable/key_12key_mode_hira.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_12key_period_comma.png b/res/drawable/key_12key_period_comma.png
index d0fdb93..4ed6144 100644
--- a/res/drawable/key_12key_period_comma.png
+++ b/res/drawable/key_12key_period_comma.png
Binary files differ
diff --git a/res/drawable/key_12key_period_comma_b.png b/res/drawable/key_12key_period_comma_b.png
index aa9ad02..d971689 100644
--- a/res/drawable/key_12key_period_comma_b.png
+++ b/res/drawable/key_12key_period_comma_b.png
Binary files differ
diff --git a/res/drawable/key_12key_pict_sym.png b/res/drawable/key_12key_pict_sym.png
index a4845e5..6b7c365 100644
--- a/res/drawable/key_12key_pict_sym.png
+++ b/res/drawable/key_12key_pict_sym.png
Binary files differ
diff --git a/res/drawable/key_12key_reverse.png b/res/drawable/key_12key_reverse.png
index dd40bd9..ace5fb5 100644
--- a/res/drawable/key_12key_reverse.png
+++ b/res/drawable/key_12key_reverse.png
Binary files differ
diff --git a/res/drawable/key_12key_reverse_b.png b/res/drawable/key_12key_reverse_b.png
index 6d96fa3..ace5fb5 100644
--- a/res/drawable/key_12key_reverse_b.png
+++ b/res/drawable/key_12key_reverse_b.png
Binary files differ
diff --git a/res/drawable/key_12key_right.png b/res/drawable/key_12key_right.png
index 94a288b..a9863ff 100644
--- a/res/drawable/key_12key_right.png
+++ b/res/drawable/key_12key_right.png
Binary files differ
diff --git a/res/drawable/key_12key_right_b.png b/res/drawable/key_12key_right_b.png
index 06e21d0..a9863ff 100644
--- a/res/drawable/key_12key_right_b.png
+++ b/res/drawable/key_12key_right_b.png
Binary files differ
diff --git a/res/drawable/key_12key_space.png b/res/drawable/key_12key_space.png
index d67c898..14826ca 100644
--- a/res/drawable/key_12key_space.png
+++ b/res/drawable/key_12key_space.png
Binary files differ
diff --git a/res/drawable/key_12key_space_b.png b/res/drawable/key_12key_space_b.png
index 35d1b19..14826ca 100644
--- a/res/drawable/key_12key_space_b.png
+++ b/res/drawable/key_12key_space_b.png
Binary files differ
diff --git a/res/drawable/key_12key_space_jp.png b/res/drawable/key_12key_space_jp.png
index 4735e01..ec76075 100644
--- a/res/drawable/key_12key_space_jp.png
+++ b/res/drawable/key_12key_space_jp.png
Binary files differ
diff --git a/res/drawable/key_12key_space_jp_b.png b/res/drawable/key_12key_space_jp_b.png
index 0dc5206..ec76075 100644
--- a/res/drawable/key_12key_space_jp_b.png
+++ b/res/drawable/key_12key_space_jp_b.png
Binary files differ
diff --git a/res/drawable/key_12key_ten.png b/res/drawable/key_12key_ten.png
index 7d93f4f..08e68a0 100644
--- a/res/drawable/key_12key_ten.png
+++ b/res/drawable/key_12key_ten.png
Binary files differ
diff --git a/res/drawable/key_12key_ten_b.png b/res/drawable/key_12key_ten_b.png
index f65bb2e..e5b2d11 100644
--- a/res/drawable/key_12key_ten_b.png
+++ b/res/drawable/key_12key_ten_b.png
Binary files differ
diff --git a/res/drawable/key_del.png b/res/drawable/key_del.png
new file mode 100644
index 0000000..3a8792a
--- /dev/null
+++ b/res/drawable/key_del.png
Binary files differ
diff --git a/res/drawable/key_del_b.png b/res/drawable/key_del_b.png
new file mode 100644
index 0000000..3a8792a
--- /dev/null
+++ b/res/drawable/key_del_b.png
Binary files differ
diff --git a/res/drawable/key_enter.png b/res/drawable/key_enter.png
new file mode 100644
index 0000000..0e2d072
--- /dev/null
+++ b/res/drawable/key_enter.png
Binary files differ
diff --git a/res/drawable/key_enter_b.png b/res/drawable/key_enter_b.png
new file mode 100644
index 0000000..0e2d072
--- /dev/null
+++ b/res/drawable/key_enter_b.png
Binary files differ
diff --git a/res/drawable/key_mode_change_b.png b/res/drawable/key_mode_change_b.png
index 58159d9..e18517c 100644
--- a/res/drawable/key_mode_change_b.png
+++ b/res/drawable/key_mode_change_b.png
Binary files differ
diff --git a/res/drawable/key_mode_full_alpha.png b/res/drawable/key_mode_full_alpha.png
new file mode 100644
index 0000000..3c2a0eb
--- /dev/null
+++ b/res/drawable/key_mode_full_alpha.png
Binary files differ
diff --git a/res/drawable/key_mode_full_kata.png b/res/drawable/key_mode_full_kata.png
new file mode 100644
index 0000000..899a546
--- /dev/null
+++ b/res/drawable/key_mode_full_kata.png
Binary files differ
diff --git a/res/drawable/key_mode_full_num.png b/res/drawable/key_mode_full_num.png
new file mode 100644
index 0000000..dcd3637
--- /dev/null
+++ b/res/drawable/key_mode_full_num.png
Binary files differ
diff --git a/res/drawable/key_mode_half_alpha.png b/res/drawable/key_mode_half_alpha.png
new file mode 100644
index 0000000..f620a1a
--- /dev/null
+++ b/res/drawable/key_mode_half_alpha.png
Binary files differ
diff --git a/res/drawable/key_mode_half_kata.png b/res/drawable/key_mode_half_kata.png
new file mode 100644
index 0000000..f0682fb
--- /dev/null
+++ b/res/drawable/key_mode_half_kata.png
Binary files differ
diff --git a/res/drawable/key_mode_half_num.png b/res/drawable/key_mode_half_num.png
new file mode 100644
index 0000000..913c5c5
--- /dev/null
+++ b/res/drawable/key_mode_half_num.png
Binary files differ
diff --git a/res/drawable/key_mode_hira.png b/res/drawable/key_mode_hira.png
new file mode 100644
index 0000000..494035f
--- /dev/null
+++ b/res/drawable/key_mode_hira.png
Binary files differ
diff --git a/res/drawable/key_mode_panel_kbd_12key_b.png b/res/drawable/key_mode_panel_kbd_12key_b.png
index eda8c03..a3fe255 100644
--- a/res/drawable/key_mode_panel_kbd_12key_b.png
+++ b/res/drawable/key_mode_panel_kbd_12key_b.png
Binary files differ
diff --git a/res/drawable/key_pict_sym_b.png b/res/drawable/key_pict_sym_b.png
new file mode 100644
index 0000000..19df062
--- /dev/null
+++ b/res/drawable/key_pict_sym_b.png
Binary files differ
diff --git a/res/drawable/key_qwerty_del.png b/res/drawable/key_qwerty_del.png
deleted file mode 100644
index 4aab087..0000000
--- a/res/drawable/key_qwerty_del.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_del_b.png b/res/drawable/key_qwerty_del_b.png
deleted file mode 100644
index ecc2dba..0000000
--- a/res/drawable/key_qwerty_del_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_enter.png b/res/drawable/key_qwerty_enter.png
deleted file mode 100644
index 35a3fb0..0000000
--- a/res/drawable/key_qwerty_enter.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_enter_b.png b/res/drawable/key_qwerty_enter_b.png
deleted file mode 100644
index 1a4cbfd..0000000
--- a/res/drawable/key_qwerty_enter_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_enter_jp.png b/res/drawable/key_qwerty_enter_jp.png
deleted file mode 100644
index 7f002e6..0000000
--- a/res/drawable/key_qwerty_enter_jp.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_enter_jp_b.png b/res/drawable/key_qwerty_enter_jp_b.png
deleted file mode 100644
index a77c39f..0000000
--- a/res/drawable/key_qwerty_enter_jp_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_left.png b/res/drawable/key_qwerty_left.png
new file mode 100644
index 0000000..f177aad
--- /dev/null
+++ b/res/drawable/key_qwerty_left.png
Binary files differ
diff --git a/res/drawable/key_qwerty_left_b.png b/res/drawable/key_qwerty_left_b.png
new file mode 100644
index 0000000..f177aad
--- /dev/null
+++ b/res/drawable/key_qwerty_left_b.png
Binary files differ
diff --git a/res/drawable/key_qwerty_mode_full_alpha.png b/res/drawable/key_qwerty_mode_full_alpha.png
deleted file mode 100644
index fd4f880..0000000
--- a/res/drawable/key_qwerty_mode_full_alpha.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_mode_full_kata.png b/res/drawable/key_qwerty_mode_full_kata.png
deleted file mode 100644
index 81b66e2..0000000
--- a/res/drawable/key_qwerty_mode_full_kata.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_mode_full_num.png b/res/drawable/key_qwerty_mode_full_num.png
deleted file mode 100644
index dc929a1..0000000
--- a/res/drawable/key_qwerty_mode_full_num.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_mode_half_alpha.png b/res/drawable/key_qwerty_mode_half_alpha.png
deleted file mode 100644
index 4bf6f99..0000000
--- a/res/drawable/key_qwerty_mode_half_alpha.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_mode_half_kata.png b/res/drawable/key_qwerty_mode_half_kata.png
deleted file mode 100644
index 322341a..0000000
--- a/res/drawable/key_qwerty_mode_half_kata.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_mode_half_num.png b/res/drawable/key_qwerty_mode_half_num.png
deleted file mode 100644
index 68a8760..0000000
--- a/res/drawable/key_qwerty_mode_half_num.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_mode_hira.png b/res/drawable/key_qwerty_mode_hira.png
deleted file mode 100644
index 9eb8584..0000000
--- a/res/drawable/key_qwerty_mode_hira.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_pict_sym.png b/res/drawable/key_qwerty_pict_sym.png
index ad89c49..d40ec42 100644
--- a/res/drawable/key_qwerty_pict_sym.png
+++ b/res/drawable/key_qwerty_pict_sym.png
Binary files differ
diff --git a/res/drawable/key_qwerty_pict_sym_b.png b/res/drawable/key_qwerty_pict_sym_b.png
deleted file mode 100644
index 43225a8..0000000
--- a/res/drawable/key_qwerty_pict_sym_b.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/key_qwerty_right.png b/res/drawable/key_qwerty_right.png
new file mode 100644
index 0000000..a9863ff
--- /dev/null
+++ b/res/drawable/key_qwerty_right.png
Binary files differ
diff --git a/res/drawable/key_qwerty_right_b.png b/res/drawable/key_qwerty_right_b.png
new file mode 100644
index 0000000..a9863ff
--- /dev/null
+++ b/res/drawable/key_qwerty_right_b.png
Binary files differ
diff --git a/res/drawable/key_qwerty_shift_b.png b/res/drawable/key_qwerty_shift_b.png
index bb6fe59..8c2f859 100644
--- a/res/drawable/key_qwerty_shift_b.png
+++ b/res/drawable/key_qwerty_shift_b.png
Binary files differ
diff --git a/res/drawable/key_qwerty_shift_locked.png b/res/drawable/key_qwerty_shift_locked.png
new file mode 100644
index 0000000..36b20c7
--- /dev/null
+++ b/res/drawable/key_qwerty_shift_locked.png
Binary files differ
diff --git a/res/drawable/key_qwerty_space.png b/res/drawable/key_qwerty_space.png
index 5ffcab5..f4ede08 100644
--- a/res/drawable/key_qwerty_space.png
+++ b/res/drawable/key_qwerty_space.png
Binary files differ
diff --git a/res/drawable/key_qwerty_space_b.png b/res/drawable/key_qwerty_space_b.png
index a9390e2..f4ede08 100644
--- a/res/drawable/key_qwerty_space_b.png
+++ b/res/drawable/key_qwerty_space_b.png
Binary files differ
diff --git a/res/drawable/key_qwerty_space_conv.png b/res/drawable/key_qwerty_space_conv.png
index 654bc2d..ec76075 100644
--- a/res/drawable/key_qwerty_space_conv.png
+++ b/res/drawable/key_qwerty_space_conv.png
Binary files differ
diff --git a/res/drawable/key_qwerty_space_conv_b.png b/res/drawable/key_qwerty_space_conv_b.png
index 07bd232..ec76075 100644
--- a/res/drawable/key_qwerty_space_conv_b.png
+++ b/res/drawable/key_qwerty_space_conv_b.png
Binary files differ
diff --git a/res/drawable/keybg_classic.9.png b/res/drawable/keybg_classic.9.png
new file mode 100644
index 0000000..ba57b14
--- /dev/null
+++ b/res/drawable/keybg_classic.9.png
Binary files differ
diff --git a/res/drawable/keybg_classic_bg.png b/res/drawable/keybg_classic_bg.png
new file mode 100644
index 0000000..6ec5225
--- /dev/null
+++ b/res/drawable/keybg_classic_bg.png
Binary files differ
diff --git a/res/drawable/keybg_classic_def.xml b/res/drawable/keybg_classic_def.xml
new file mode 100644
index 0000000..2260a9d
--- /dev/null
+++ b/res/drawable/keybg_classic_def.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
+	android:drawable="@drawable/keybg_classic_psfton" />
+  <item android:state_checkable="true" android:state_checked="true"
+	android:drawable="@drawable/keybg_classic_sfton" />
+  <item android:state_checkable="true" android:state_pressed="true"
+	android:drawable="@drawable/keybg_classic_psftoff" />
+  <item android:state_checkable="true"
+	android:drawable="@drawable/keybg_classic_sftoff" />
+  <item android:state_pressed="true"
+	android:drawable="@drawable/keybg_classic_p" />
+  <item android:drawable="@drawable/keybg_classic" />
+</selector>
diff --git a/res/drawable/keybg_classic_p.9.png b/res/drawable/keybg_classic_p.9.png
new file mode 100644
index 0000000..4020b40
--- /dev/null
+++ b/res/drawable/keybg_classic_p.9.png
Binary files differ
diff --git a/res/drawable/keybg_classic_psftoff.9.png b/res/drawable/keybg_classic_psftoff.9.png
new file mode 100644
index 0000000..51c1778
--- /dev/null
+++ b/res/drawable/keybg_classic_psftoff.9.png
Binary files differ
diff --git a/res/drawable/keybg_classic_psfton.9.png b/res/drawable/keybg_classic_psfton.9.png
new file mode 100644
index 0000000..273e3fe
--- /dev/null
+++ b/res/drawable/keybg_classic_psfton.9.png
Binary files differ
diff --git a/res/drawable/keybg_classic_sftoff.9.png b/res/drawable/keybg_classic_sftoff.9.png
new file mode 100644
index 0000000..358e6a4
--- /dev/null
+++ b/res/drawable/keybg_classic_sftoff.9.png
Binary files differ
diff --git a/res/drawable/keybg_classic_sfton.9.png b/res/drawable/keybg_classic_sfton.9.png
new file mode 100644
index 0000000..fcf74e7
--- /dev/null
+++ b/res/drawable/keybg_classic_sfton.9.png
Binary files differ
diff --git a/res/drawable/keybg_ice.9.png b/res/drawable/keybg_ice.9.png
new file mode 100644
index 0000000..b22dd6d
--- /dev/null
+++ b/res/drawable/keybg_ice.9.png
Binary files differ
diff --git a/res/drawable/keybg_ice_bg.png b/res/drawable/keybg_ice_bg.png
new file mode 100644
index 0000000..d26d8ae
--- /dev/null
+++ b/res/drawable/keybg_ice_bg.png
Binary files differ
diff --git a/res/drawable/keybg_ice_def.xml b/res/drawable/keybg_ice_def.xml
new file mode 100644
index 0000000..1336765
--- /dev/null
+++ b/res/drawable/keybg_ice_def.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
+	android:drawable="@drawable/keybg_ice_psfton" />
+  <item android:state_checkable="true" android:state_checked="true"
+	android:drawable="@drawable/keybg_ice_sfton" />
+  <item android:state_checkable="true" android:state_pressed="true"
+	android:drawable="@drawable/keybg_ice_psftoff" />
+  <item android:state_checkable="true"
+	android:drawable="@drawable/keybg_ice_sftoff" />
+  <item android:state_pressed="true"
+	android:drawable="@drawable/keybg_ice_p" />
+  <item android:drawable="@drawable/keybg_ice" />
+</selector>
diff --git a/res/drawable/keybg_ice_p.9.png b/res/drawable/keybg_ice_p.9.png
new file mode 100644
index 0000000..4984234
--- /dev/null
+++ b/res/drawable/keybg_ice_p.9.png
Binary files differ
diff --git a/res/drawable/keybg_ice_psftoff.9.png b/res/drawable/keybg_ice_psftoff.9.png
new file mode 100644
index 0000000..7b8662b
--- /dev/null
+++ b/res/drawable/keybg_ice_psftoff.9.png
Binary files differ
diff --git a/res/drawable/keybg_ice_psfton.9.png b/res/drawable/keybg_ice_psfton.9.png
new file mode 100644
index 0000000..5748d92
--- /dev/null
+++ b/res/drawable/keybg_ice_psfton.9.png
Binary files differ
diff --git a/res/drawable/keybg_ice_sftoff.9.png b/res/drawable/keybg_ice_sftoff.9.png
new file mode 100644
index 0000000..d82a1c7
--- /dev/null
+++ b/res/drawable/keybg_ice_sftoff.9.png
Binary files differ
diff --git a/res/drawable/keybg_ice_sfton.9.png b/res/drawable/keybg_ice_sfton.9.png
new file mode 100644
index 0000000..657b357
--- /dev/null
+++ b/res/drawable/keybg_ice_sfton.9.png
Binary files differ
diff --git a/res/drawable/keybg_kyoto.9.png b/res/drawable/keybg_kyoto.9.png
new file mode 100644
index 0000000..d4a02da
--- /dev/null
+++ b/res/drawable/keybg_kyoto.9.png
Binary files differ
diff --git a/res/drawable/keybg_kyoto_bg.png b/res/drawable/keybg_kyoto_bg.png
new file mode 100644
index 0000000..6f94b70
--- /dev/null
+++ b/res/drawable/keybg_kyoto_bg.png
Binary files differ
diff --git a/res/drawable/keybg_kyoto_def.xml b/res/drawable/keybg_kyoto_def.xml
new file mode 100644
index 0000000..a54f059
--- /dev/null
+++ b/res/drawable/keybg_kyoto_def.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
+	android:drawable="@drawable/keybg_kyoto_psfton" />
+  <item android:state_checkable="true" android:state_checked="true"
+	android:drawable="@drawable/keybg_kyoto_sfton" />
+  <item android:state_checkable="true" android:state_pressed="true"
+	android:drawable="@drawable/keybg_kyoto_psftoff" />
+  <item android:state_checkable="true"
+	android:drawable="@drawable/keybg_kyoto_sftoff" />
+  <item android:state_pressed="true"
+	android:drawable="@drawable/keybg_kyoto_p" />
+  <item android:drawable="@drawable/keybg_kyoto" />
+</selector>
diff --git a/res/drawable/keybg_kyoto_p.9.png b/res/drawable/keybg_kyoto_p.9.png
new file mode 100644
index 0000000..19127f1
--- /dev/null
+++ b/res/drawable/keybg_kyoto_p.9.png
Binary files differ
diff --git a/res/drawable/keybg_kyoto_psftoff.9.png b/res/drawable/keybg_kyoto_psftoff.9.png
new file mode 100644
index 0000000..273b479
--- /dev/null
+++ b/res/drawable/keybg_kyoto_psftoff.9.png
Binary files differ
diff --git a/res/drawable/keybg_kyoto_psfton.9.png b/res/drawable/keybg_kyoto_psfton.9.png
new file mode 100644
index 0000000..e32b35d
--- /dev/null
+++ b/res/drawable/keybg_kyoto_psfton.9.png
Binary files differ
diff --git a/res/drawable/keybg_kyoto_sftoff.9.png b/res/drawable/keybg_kyoto_sftoff.9.png
new file mode 100644
index 0000000..96fb094
--- /dev/null
+++ b/res/drawable/keybg_kyoto_sftoff.9.png
Binary files differ
diff --git a/res/drawable/keybg_kyoto_sfton.9.png b/res/drawable/keybg_kyoto_sfton.9.png
new file mode 100644
index 0000000..f4fc3dc
--- /dev/null
+++ b/res/drawable/keybg_kyoto_sfton.9.png
Binary files differ
diff --git a/res/drawable/keybg_light.9.png b/res/drawable/keybg_light.9.png
new file mode 100644
index 0000000..2b4aa98
--- /dev/null
+++ b/res/drawable/keybg_light.9.png
Binary files differ
diff --git a/res/drawable/keybg_light_def.xml b/res/drawable/keybg_light_def.xml
new file mode 100644
index 0000000..da38f22
--- /dev/null
+++ b/res/drawable/keybg_light_def.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
+	android:drawable="@drawable/keybg_light_psfton" />
+  <item android:state_checkable="true" android:state_checked="true"
+	android:drawable="@drawable/keybg_light_sfton" />
+  <item android:state_checkable="true" android:state_pressed="true"
+	android:drawable="@drawable/keybg_light_psftoff" />
+  <item android:state_checkable="true"
+	android:drawable="@drawable/keybg_light_sftoff" />
+  <item android:state_pressed="true"
+	android:drawable="@drawable/keybg_light_p" />
+  <item android:drawable="@drawable/keybg_light" />
+</selector>
diff --git a/res/drawable/keybg_light_p.9.png b/res/drawable/keybg_light_p.9.png
new file mode 100644
index 0000000..c1c1e1c
--- /dev/null
+++ b/res/drawable/keybg_light_p.9.png
Binary files differ
diff --git a/res/drawable/keybg_light_psftoff.9.png b/res/drawable/keybg_light_psftoff.9.png
new file mode 100644
index 0000000..edaf5ac
--- /dev/null
+++ b/res/drawable/keybg_light_psftoff.9.png
Binary files differ
diff --git a/res/drawable/keybg_light_psfton.9.png b/res/drawable/keybg_light_psfton.9.png
new file mode 100644
index 0000000..d39565a
--- /dev/null
+++ b/res/drawable/keybg_light_psfton.9.png
Binary files differ
diff --git a/res/drawable/keybg_light_sftoff.9.png b/res/drawable/keybg_light_sftoff.9.png
new file mode 100644
index 0000000..f26bfb5
--- /dev/null
+++ b/res/drawable/keybg_light_sftoff.9.png
Binary files differ
diff --git a/res/drawable/keybg_light_sfton.9.png b/res/drawable/keybg_light_sfton.9.png
new file mode 100644
index 0000000..65087be
--- /dev/null
+++ b/res/drawable/keybg_light_sfton.9.png
Binary files differ
diff --git a/res/drawable/keybg_metal_def.xml b/res/drawable/keybg_metal_def.xml
index 963fe11..d4989f8 100644
--- a/res/drawable/keybg_metal_def.xml
+++ b/res/drawable/keybg_metal_def.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/drawable/keybg_simple_def.xml b/res/drawable/keybg_simple_def.xml
index 322ce8c..77114b0 100644
--- a/res/drawable/keybg_simple_def.xml
+++ b/res/drawable/keybg_simple_def.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/drawable/keybg_wood.9.png b/res/drawable/keybg_wood.9.png
new file mode 100644
index 0000000..e588ed6
--- /dev/null
+++ b/res/drawable/keybg_wood.9.png
Binary files differ
diff --git a/res/drawable/keybg_wood_bg.png b/res/drawable/keybg_wood_bg.png
new file mode 100644
index 0000000..2dc9f8a
--- /dev/null
+++ b/res/drawable/keybg_wood_bg.png
Binary files differ
diff --git a/res/drawable/keybg_wood_def.xml b/res/drawable/keybg_wood_def.xml
new file mode 100644
index 0000000..cba026a
--- /dev/null
+++ b/res/drawable/keybg_wood_def.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
+	android:drawable="@drawable/keybg_wood_psfton" />
+  <item android:state_checkable="true" android:state_checked="true"
+	android:drawable="@drawable/keybg_wood_sfton" />
+  <item android:state_checkable="true" android:state_pressed="true"
+	android:drawable="@drawable/keybg_wood_psftoff" />
+  <item android:state_checkable="true"
+	android:drawable="@drawable/keybg_wood_sftoff" />
+  <item android:state_pressed="true"
+	android:drawable="@drawable/keybg_wood_p" />
+  <item android:drawable="@drawable/keybg_wood" />
+</selector>
diff --git a/res/drawable/keybg_wood_p.9.png b/res/drawable/keybg_wood_p.9.png
new file mode 100644
index 0000000..aa6c810
--- /dev/null
+++ b/res/drawable/keybg_wood_p.9.png
Binary files differ
diff --git a/res/drawable/keybg_wood_psftoff.9.png b/res/drawable/keybg_wood_psftoff.9.png
new file mode 100644
index 0000000..fba919e
--- /dev/null
+++ b/res/drawable/keybg_wood_psftoff.9.png
Binary files differ
diff --git a/res/drawable/keybg_wood_psfton.9.png b/res/drawable/keybg_wood_psfton.9.png
new file mode 100644
index 0000000..6887e7d
--- /dev/null
+++ b/res/drawable/keybg_wood_psfton.9.png
Binary files differ
diff --git a/res/drawable/keybg_wood_sftoff.9.png b/res/drawable/keybg_wood_sftoff.9.png
new file mode 100644
index 0000000..4622de4
--- /dev/null
+++ b/res/drawable/keybg_wood_sftoff.9.png
Binary files differ
diff --git a/res/drawable/keybg_wood_sfton.9.png b/res/drawable/keybg_wood_sfton.9.png
new file mode 100644
index 0000000..3b4e8f7
--- /dev/null
+++ b/res/drawable/keybg_wood_sfton.9.png
Binary files differ
diff --git a/res/drawable/keyboard_background.png b/res/drawable/keyboard_background.png
new file mode 100644
index 0000000..956456e
--- /dev/null
+++ b/res/drawable/keyboard_background.png
Binary files differ
diff --git a/res/drawable/keyboard_key_feedback.xml b/res/drawable/keyboard_key_feedback.xml
new file mode 100644
index 0000000..c483b76
--- /dev/null
+++ b/res/drawable/keyboard_key_feedback.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_long_pressable="true"
+            android:drawable="@drawable/keyboard_key_feedback_more_background" />
+
+    <item android:drawable="@drawable/keyboard_key_feedback_background" />
+</selector>
diff --git a/res/drawable/tutorial_12key_enter.png b/res/drawable/tutorial_12key_enter.png
index 61abffc..9f8921b 100644
--- a/res/drawable/tutorial_12key_enter.png
+++ b/res/drawable/tutorial_12key_enter.png
Binary files differ
diff --git a/res/drawable/tutorial_12key_mode.png b/res/drawable/tutorial_12key_mode.png
index 42b939f..c9b2d60 100644
--- a/res/drawable/tutorial_12key_mode.png
+++ b/res/drawable/tutorial_12key_mode.png
Binary files differ
diff --git a/res/layout-sw768dp/keyboard_android_default.xml b/res/layout-sw768dp/keyboard_android_default.xml
new file mode 100644
index 0000000..420281f
--- /dev/null
+++ b/res/layout-sw768dp/keyboard_android_default.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<jp.co.omronsoft.openwnn.KeyboardView
+   xmlns:android="http://schemas.android.com/apk/res/android"
+   xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+   android:id="@+id/keyboard"
+   android:layout_alignParentBottom="true"
+   android:layout_width="match_parent"
+   android:layout_height="wrap_content"
+   android:labelTextSize="@dimen/key_label_text_size"
+   android:keyTextSize="@dimen/key_text_size"
+   android:keyBackground="@drawable/btn_keyboard_key"
+   android:keyPreviewLayout="@layout/keyboard_key_preview"
+   android:popupLayout="@layout/keyboard_popup_keyboard"
+   android:background="@drawable/keyboard_background"
+   android:keyTextColor="@color/key_text_color"
+   android:paddingTop="10dip"
+   pj:keyBackground2nd="@drawable/btn_keyboard_key_2nd"
+   pj:keyTextColor2nd="@color/key_text_color_2nd"
+   />
+
diff --git a/res/layout-sw768dp/keyboard_metal.xml b/res/layout-sw768dp/keyboard_metal.xml
new file mode 100644
index 0000000..2d94a38
--- /dev/null
+++ b/res/layout-sw768dp/keyboard_metal.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<jp.co.omronsoft.openwnn.KeyboardView
+   xmlns:android="http://schemas.android.com/apk/res/android"
+   xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+   android:id="@+id/keyboard"
+   android:layout_alignParentBottom="true"
+   android:layout_width="match_parent"
+   android:layout_height="wrap_content"
+   android:labelTextSize="@dimen/key_label_text_size"
+   android:keyTextSize="@dimen/key_text_size"
+   android:keyBackground="@drawable/keybg_metal_def"
+   android:keyPreviewLayout="@layout/keyboard_key_preview"
+   android:popupLayout="@layout/keyboard_popup_keyboard"
+   android:background="@drawable/keyboard_background"
+   android:keyTextColor="@color/key_text_color"
+   pj:keyBackground2nd="@drawable/keybg_metal_def"
+   pj:keyTextColor2nd="@color/key_text_color"
+/>
diff --git a/res/layout-sw768dp/keyboard_simple.xml b/res/layout-sw768dp/keyboard_simple.xml
new file mode 100644
index 0000000..dc7187e
--- /dev/null
+++ b/res/layout-sw768dp/keyboard_simple.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<jp.co.omronsoft.openwnn.KeyboardView
+   xmlns:android="http://schemas.android.com/apk/res/android"
+   xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+   android:id="@+id/keyboard"
+   android:layout_alignParentBottom="true"
+   android:layout_width="match_parent"
+   android:layout_height="wrap_content"
+   android:labelTextSize="@dimen/key_label_text_size"
+   android:keyTextSize="@dimen/key_text_size"
+   android:keyBackground="@drawable/keybg_simple_def"
+   android:keyPreviewLayout="@layout/keyboard_key_preview"
+   android:popupLayout="@layout/keyboard_popup_keyboard"
+   android:background="@drawable/keybg_simple_bg"
+   android:keyTextColor="@color/key_text_color"
+   pj:keyBackground2nd="@drawable/keybg_simple_def"
+   pj:keyTextColor2nd="@color/key_text_color_2nd"
+/>
diff --git a/res/layout/bubble_text.xml b/res/layout/bubble_text.xml
index d754467..64b0a01 100644
--- a/res/layout/bubble_text.xml
+++ b/res/layout/bubble_text.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/layout/candidate_longpress_dialog.xml b/res/layout/candidate_longpress_dialog.xml
new file mode 100644
index 0000000..a0b4da2
--- /dev/null
+++ b/res/layout/candidate_longpress_dialog.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- candidate list -->
+<LinearLayout
+   xmlns:android="http://schemas.android.com/apk/res/android"
+   android:orientation="vertical"
+   android:layout_width="match_parent"
+   android:layout_height="wrap_content"
+   android:gravity="center"
+   >
+  <TextView
+     android:id="@+id/candidate_longpress_dialog_text"
+     android:layout_width="wrap_content"
+     android:layout_height="wrap_content"
+     android:textSize="@dimen/candidate_longpress_dialog_candidate_word_size"
+     android:textColor="@color/candidate_longpress_dialog_text"
+     android:gravity="center"
+   />
+  <HorizontalScrollView
+     xmlns:android="http://schemas.android.com/apk/res/android"
+     android:layout_width="wrap_content"
+     android:layout_height="match_parent"
+     >
+    <LinearLayout
+       android:orientation="horizontal"
+       android:layout_width="match_parent"
+       android:layout_height="wrap_content"
+       android:gravity="center"
+       >
+      <Button
+         android:id="@+id/candidate_longpress_dialog_cancel"
+         android:layout_height="match_parent"
+         android:layout_width="wrap_content"
+         android:text="@string/dialog_button_cancel"
+         android:textSize="@dimen/candidate_longpress_dialog_button_word_size"
+         android:soundEffectsEnabled="false"
+         />
+      <Button
+         android:id="@+id/candidate_longpress_dialog_select"
+         android:layout_height="match_parent"
+         android:layout_width="wrap_content"
+         android:text="@string/button_candidate_select"
+         android:textSize="@dimen/candidate_longpress_dialog_button_word_size"
+         android:soundEffectsEnabled="false"
+         />
+      <Button
+         android:id="@+id/candidate_longpress_dialog_delete"
+         android:layout_height="match_parent"
+         android:layout_width="wrap_content"
+         android:text="@string/button_candidate_delete"
+         android:textSize="@dimen/candidate_longpress_dialog_button_word_size"
+         android:visibility="gone"
+         android:soundEffectsEnabled="false"
+         />
+    </LinearLayout>
+  </HorizontalScrollView>
+</LinearLayout>
diff --git a/res/layout/candidate_scale_up.xml b/res/layout/candidate_scale_up.xml
deleted file mode 100644
index e1d52a1..0000000
--- a/res/layout/candidate_scale_up.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<!-- candidate list -->
-<LinearLayout
-   xmlns:android="http://schemas.android.com/apk/res/android"
-   android:orientation="vertical"
-   android:background="@color/candidate_back"
-   android:layout_width="match_parent"
-   android:layout_height="wrap_content"
-   >
-  <TextView
-     android:id="@+id/candidate_scale_up_text"
-     android:layout_width="match_parent"
-     android:layout_height="wrap_content"
-     android:background="@color/candidate_back"
-     android:textSize="@dimen/candidate_delete_word_size"
-     android:textColor="@color/candidate_text"
-     android:gravity="center"
-     />
-  <LinearLayout 
-     android:orientation="horizontal"
-     android:layout_width="match_parent" 
-     android:layout_height="wrap_content"
-     android:gravity="center"
-     >
-    <jp.co.omronsoft.openwnn.CandidateViewButton
-       android:id="@+id/candidate_select"
-       android:layout_height="match_parent"
-       android:layout_width="wrap_content" 
-       android:text="@string/button_candidate_select"
-       />
-    <jp.co.omronsoft.openwnn.CandidateViewButton
-       android:id="@+id/candidate_delete"
-       android:layout_height="match_parent"
-       android:layout_width="wrap_content" 
-       android:text="@string/button_candidate_delete"
-       android:visibility="gone"
-       />
-    <jp.co.omronsoft.openwnn.CandidateViewButton
-       android:id="@+id/candidate_cancel"
-       android:layout_height="match_parent"
-       android:layout_width="wrap_content" 
-       android:text="@string/button_candidate_cancel"
-       />
-  </LinearLayout>
-</LinearLayout>
diff --git a/res/layout/candidates.xml b/res/layout/candidates.xml
index dc26030..09246a2 100644
--- a/res/layout/candidates.xml
+++ b/res/layout/candidates.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -21,19 +21,66 @@
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
+  <LinearLayout
+     android:orientation="vertical"
+     android:layout_width="match_parent"
+     android:layout_height="wrap_content"
+     >
+
+  <LinearLayout
+     android:id="@+id/candview_tab"
+     android:orientation="vertical"
+     android:layout_width="match_parent"
+     android:layout_height="wrap_content"
+     >
+    <LinearLayout
+       android:orientation="horizontal"
+       android:layout_width="match_parent"
+       android:layout_height="wrap_content"
+       android:background="@color/candidate_tab_back"
+       >
+      <TextView
+         android:id="@+id/candview_symbol"
+         android:layout_width="match_parent"
+         android:layout_height="wrap_content"
+         android:layout_weight="1"
+         android:background="@drawable/cand_tab"
+         android:singleLine="true"
+         android:gravity="center"
+         android:text="@string/cand_tab_symbol_txt"
+         android:textColor="@color/tab_textcolor_no_select"
+         android:textSize="@dimen/tab_text_size"
+         android:soundEffectsEnabled="false"
+         />
+      <TextView
+         android:id="@+id/candview_emoticon"
+         android:layout_width="match_parent"
+         android:layout_height="wrap_content"
+         android:layout_weight="1"
+         android:background="@drawable/cand_tab"
+         android:singleLine="true"
+         android:gravity="center"
+         android:text="@string/cand_tab_emoticon_txt"
+         android:textColor="@color/tab_textcolor_no_select"
+         android:textSize="@dimen/tab_text_size"
+         android:soundEffectsEnabled="false"
+         />
+    </LinearLayout>
+  </LinearLayout>
+
   <ScrollView
      android:id="@+id/candview_scroll"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:fadingEdgeLength="0dip"
      android:scrollbars="vertical"
+     android:background="@color/candidate_back"
      >
     <LinearLayout 
        android:id="@+id/candview_base"
        android:orientation="vertical"
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"
-       android:background="@color/candidate_back"
        >
       <!--View
          android:layout_height="wrap_content" 
@@ -45,17 +92,15 @@
          android:orientation="vertical"
          android:layout_width="match_parent" 
          android:layout_height="wrap_content"
-         android:background="@color/candidate_back"
          />
       <AbsoluteLayout
          android:id="@+id/candidates_2nd_view"
          android:layout_width="match_parent" 
          android:layout_height="wrap_content"
-         android:background="@color/candidate_back"
          />
     </LinearLayout>
   </ScrollView>
-
+  </LinearLayout>
   <LinearLayout
      android:id="@+id/read_more"
      android:layout_width="match_parent"
@@ -65,9 +110,11 @@
      android:gravity="right"
      >
     <ImageView
-       android:id="@+id/read_more_text"
+       android:id="@+id/read_more_button"
        android:layout_height="wrap_content"
-       android:layout_width="wrap_content" 
+       android:layout_width="wrap_content"
+       android:paddingRight="2dip"
+       android:soundEffectsEnabled="false"
        />
   </LinearLayout>
 </FrameLayout>
diff --git a/res/layout/candidates_1line.xml b/res/layout/candidates_1line.xml
new file mode 100644
index 0000000..962486f
--- /dev/null
+++ b/res/layout/candidates_1line.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- candidate list -->
+<LinearLayout
+   xmlns:android="http://schemas.android.com/apk/res/android"
+   android:orientation="horizontal"
+   android:layout_width="match_parent"
+   android:layout_height="@dimen/candidate_layout_height"
+   >
+
+  <LinearLayout
+     android:id="@+id/left_more"
+     android:layout_width="wrap_content"
+     android:layout_height="@dimen/candidate_layout_height"
+     android:orientation="horizontal"
+     android:background="@drawable/cand_back_1line"
+     >
+    <ImageView
+       android:id="@+id/left_more_imageview"
+       android:src="@drawable/cand_left"
+       android:layout_width="@dimen/candidate_layout_width"
+       android:layout_height="match_parent"
+       android:clickable="true"
+       android:background="@color/candidate_back_1line"
+       android:soundEffectsEnabled="false"
+       />
+  </LinearLayout>
+
+  <HorizontalScrollView
+     android:id="@+id/candview_scroll_1line"
+     android:layout_width="wrap_content"
+     android:layout_height="@dimen/candidate_layout_height"
+     android:scrollbars="none"
+     android:layout_weight="1"
+     android:fadingEdge="horizontal"
+     android:background="@color/candidate_back_1line"
+     >
+    <LinearLayout
+       android:id="@+id/candidates_view_1line"
+       android:layout_width="match_parent"
+       android:layout_height="@dimen/candidate_layout_height"
+       android:background="@color/candidate_back_1line"
+       />
+  </HorizontalScrollView>
+
+  <LinearLayout
+     android:id="@+id/right_more"
+     android:layout_width="wrap_content"
+     android:layout_height="@dimen/candidate_layout_height"
+     android:orientation="horizontal"
+     android:background="@drawable/cand_back_1line"
+     >
+    <ImageView
+       android:id="@+id/right_more_imageview"
+       android:src="@drawable/cand_right"
+       android:layout_width="@dimen/candidate_layout_width"
+       android:layout_height="match_parent"
+       android:clickable="true"
+       android:background="@color/candidate_back_1line"
+       android:soundEffectsEnabled="false"
+       />
+  </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/debug_tool_engine.xml b/res/layout/debug_tool_engine.xml
new file mode 100644
index 0000000..134f5d2
--- /dev/null
+++ b/res/layout/debug_tool_engine.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent">
+
+    <TextView
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/openwnn_engine_label"
+    />
+    
+	<RadioGroup android:id="@+id/radio_group"
+	    android:layout_width="wrap_content"
+	    android:layout_height="wrap_content"
+	    android:orientation="vertical">
+
+	    <RadioButton android:id="@+id/radio_en"
+	        android:layout_width="wrap_content"
+	        android:layout_height="wrap_content"
+	        android:text="@string/debug_openwnn_engine_en"
+	        android:textSize="11sp"
+	    />
+	</RadioGroup>
+
+	<LinearLayout android:orientation="horizontal"
+					android:layout_width="fill_parent"
+					android:layout_height="wrap_content">
+
+		<Button android:id="@+id/execButton2"
+	        android:layout_width="wrap_content"
+	        android:layout_height="wrap_content"
+	        android:layout_marginRight="3dip"
+	        android:text="@string/execButton2"
+	        android:textSize="11sp"
+		/>
+
+		<TextView android:id="@+id/editText2"
+	   		android:layout_width="fill_parent"
+	   		android:layout_height="wrap_content"
+	   		android:textSize="11sp"
+		/>
+	</LinearLayout>
+
+	<ScrollView
+	    android:layout_width="fill_parent"
+    	android:layout_height="fill_parent"
+    	android:background="#000000">
+
+		<LinearLayout android:id="@+id/engine_scroll"
+        	          android:orientation="vertical"
+            	      android:layout_width="fill_parent"
+                	  android:layout_height="fill_parent">
+ 
+		</LinearLayout>
+	</ScrollView>
+</LinearLayout>
diff --git a/res/layout/debug_tool_onevent.xml b/res/layout/debug_tool_onevent.xml
new file mode 100644
index 0000000..9d82de0
--- /dev/null
+++ b/res/layout/debug_tool_onevent.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+   android:orientation="vertical"
+   android:layout_width="fill_parent"
+   android:layout_height="fill_parent">
+
+  <TextView
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="@string/app_openwnn_test"
+  />
+
+  <EditText android:id="@+id/editText"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+  />
+
+  <Button android:id="@+id/execButton"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginRight="3dip"
+    android:text="@string/execButton"/>
+
+    <ScrollView
+      android:layout_width="fill_parent"
+      android:layout_height="fill_parent"
+      android:background="#000000">
+      <TextView android:id="@+id/textView"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:textSize="5pt"
+      />
+    </ScrollView>
+</LinearLayout>
diff --git a/res/layout/debug_tool_text.xml b/res/layout/debug_tool_text.xml
new file mode 100644
index 0000000..680fbff
--- /dev/null
+++ b/res/layout/debug_tool_text.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent">
+
+   <LinearLayout android:orientation="vertical"
+     android:layout_width="fill_parent"
+     android:layout_height="wrap_content">
+
+     <LinearLayout android:orientation="horizontal"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content">
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/debug_texttype_anything"
+        />
+
+        <EditText
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+        />
+        </LinearLayout>
+
+           <LinearLayout android:orientation="horizontal"
+              android:layout_width="fill_parent"
+              android:layout_height="wrap_content">
+              <TextView
+                 android:layout_width="wrap_content"
+                 android:layout_height="wrap_content"
+                 android:text="@string/debug_texttype_integer"
+              />
+
+              <EditText 
+                 android:numeric="integer"
+                 android:layout_width="fill_parent" 
+                 android:layout_height="wrap_content" 	
+              />
+           </LinearLayout>
+
+           <LinearLayout android:orientation="horizontal"
+                 android:layout_width="fill_parent"
+                 android:layout_height="wrap_content">
+
+                 <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/debug_texttype_signed"
+                 />
+
+                 <EditText
+                    android:numeric="signed"
+                    android:layout_width="fill_parent"
+                    android:layout_height="wrap_content"
+                 />
+             </LinearLayout>
+
+             <LinearLayout android:orientation="horizontal"
+                 android:layout_width="fill_parent"
+                 android:layout_height="wrap_content">
+                 <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/debug_texttype_demical"
+                 />
+
+                 <EditText
+                    android:numeric="decimal"
+                    android:layout_width="fill_parent"
+                    android:layout_height="wrap_content"
+                 />
+                 </LinearLayout>
+
+                 <LinearLayout android:orientation="horizontal"
+                     android:layout_width="fill_parent"
+                     android:layout_height="wrap_content">
+
+                     <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/debug_texttype_password"
+                     />
+
+                     <EditText
+                        android:password="true"
+                        android:layout_width="fill_parent"
+                        android:layout_height="wrap_content"
+                     />
+
+                 </LinearLayout>
+
+                 <LinearLayout android:orientation="horizontal"
+                     android:layout_width="fill_parent"
+                     android:layout_height="wrap_content">
+                     <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/debug_texttype_phone"
+                     />
+
+                     <EditText
+                        android:layout_width="fill_parent"
+                        android:layout_height="wrap_content"
+                        android:phoneNumber="true"
+                     />
+                  </LinearLayout>
+
+                  <LinearLayout android:orientation="horizontal"
+                     android:layout_width="fill_parent"
+                     android:layout_height="wrap_content">
+                     <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/debug_texttype_singleLine"
+                     />
+
+                     <EditText
+                        android:id="@+id/singleLine"
+                        android:layout_width="fill_parent"
+                        android:layout_height="wrap_content"
+                        android:singleLine="true"
+                     />
+        </LinearLayout>
+    </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/keyboard_android_default.xml b/res/layout/keyboard_android_default.xml
index 3fd8738..3a0550b 100644
--- a/res/layout/keyboard_android_default.xml
+++ b/res/layout/keyboard_android_default.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -14,11 +14,26 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-<android.inputmethodservice.KeyboardView
+<jp.co.omronsoft.openwnn.KeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
+   xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
    android:id="@+id/keyboard"
    android:layout_alignParentBottom="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
+   android:background="@drawable/keyboard_background"
+   android:keyBackground="@drawable/btn_keyboard_key"
+   android:verticalCorrection="-10dip"
+   android:keyPreviewLayout="@layout/keyboard_key_preview"
+   android:keyPreviewOffset="-12dip"
+   android:keyPreviewHeight="80dip"
+   android:keyTextSize="22dip"
+   android:keyTextColor="@color/key_text_color"
+   android:labelTextSize="@dimen/key_label_text_size"
+   android:popupLayout="@layout/keyboard_popup_keyboard"
+   android:shadowColor="#BB000000"
+   android:shadowRadius="0.5"
+   pj:keyBackground2nd="@drawable/btn_keyboard_key_2nd"
+   pj:keyTextColor2nd="@color/key_text_color_2nd"
    />
 
diff --git a/res/layout/keyboard_classic.xml b/res/layout/keyboard_classic.xml
new file mode 100644
index 0000000..bcb1c6f
--- /dev/null
+++ b/res/layout/keyboard_classic.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<android.inputmethodservice.KeyboardView
+   xmlns:android="http://schemas.android.com/apk/res/android"
+   android:id="@+id/keyboard"
+   android:layout_alignParentBottom="true"
+   android:layout_width="match_parent"
+   android:layout_height="wrap_content"
+   android:keyBackground="@drawable/keybg_classic_def"
+   android:background="@drawable/keybg_classic_bg"
+/>
diff --git a/res/layout/keyboard_default_main.xml b/res/layout/keyboard_default_main.xml
index f93b7e8..c01e02c 100644
--- a/res/layout/keyboard_default_main.xml
+++ b/res/layout/keyboard_default_main.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -14,11 +14,11 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-          android:orientation="vertical"
-              android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-	      android:fadingEdge="vertical"
-	      android:fadingEdgeLength="5dip"
-          >
-</LinearLayout>
+
+<jp.co.omronsoft.openwnn.BaseInputView
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:requiresFadingEdge="vertical"
+        android:fadingEdgeLength="5dip"/>
diff --git a/res/layout/keyboard_default_sub.xml b/res/layout/keyboard_default_sub.xml
index 2be1552..6ec3fab 100644
--- a/res/layout/keyboard_default_sub.xml
+++ b/res/layout/keyboard_default_sub.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/layout/keyboard_ice.xml b/res/layout/keyboard_ice.xml
new file mode 100644
index 0000000..f0722d9
--- /dev/null
+++ b/res/layout/keyboard_ice.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<android.inputmethodservice.KeyboardView
+   xmlns:android="http://schemas.android.com/apk/res/android"
+   android:id="@+id/keyboard"
+   android:layout_alignParentBottom="true"
+   android:layout_width="match_parent"
+   android:layout_height="wrap_content"
+   android:keyBackground="@drawable/keybg_ice_def"
+   android:background="@drawable/keybg_ice_bg"
+/>
diff --git a/res/layout/keyboard_key_preview.xml b/res/layout/keyboard_key_preview.xml
new file mode 100644
index 0000000..7fe375a
--- /dev/null
+++ b/res/layout/keyboard_key_preview.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="80dip"
+    android:textSize="40dip"
+    android:textColor="@color/key_text_color"
+    android:minWidth="32dip"
+    android:gravity="center"
+    android:background="@drawable/keyboard_key_feedback"
+    />
diff --git a/res/layout/keyboard_kyoto.xml b/res/layout/keyboard_kyoto.xml
new file mode 100644
index 0000000..c313f3b
--- /dev/null
+++ b/res/layout/keyboard_kyoto.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<android.inputmethodservice.KeyboardView
+   xmlns:android="http://schemas.android.com/apk/res/android"
+   android:id="@+id/keyboard"
+   android:layout_alignParentBottom="true"
+   android:layout_width="match_parent"
+   android:layout_height="wrap_content"
+   android:keyBackground="@drawable/keybg_kyoto_def"
+   android:background="@drawable/keybg_kyoto_bg"
+/>
diff --git a/res/layout/keyboard_light.xml b/res/layout/keyboard_light.xml
new file mode 100644
index 0000000..2ffbc0f
--- /dev/null
+++ b/res/layout/keyboard_light.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<android.inputmethodservice.KeyboardView
+   xmlns:android="http://schemas.android.com/apk/res/android"
+   android:id="@+id/keyboard"
+   android:layout_alignParentBottom="true"
+   android:layout_width="match_parent"
+   android:layout_height="wrap_content"
+   android:keyBackground="@drawable/keybg_light_def"
+/>
diff --git a/res/layout/keyboard_metal.xml b/res/layout/keyboard_metal.xml
index 9acfa2c..9c5656b 100644
--- a/res/layout/keyboard_metal.xml
+++ b/res/layout/keyboard_metal.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -14,11 +14,18 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-<android.inputmethodservice.KeyboardView
+<jp.co.omronsoft.openwnn.KeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
+   xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
    android:id="@+id/keyboard"
    android:layout_alignParentBottom="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:keyBackground="@drawable/keybg_metal_def"
+   android:keyPreviewLayout="@layout/keyboard_key_preview"
+   android:popupLayout="@layout/keyboard_popup_keyboard"
+   android:background="@drawable/keyboard_background"
+   android:keyTextColor="@color/key_text_color"
+   pj:keyBackground2nd="@drawable/keybg_metal_def"
+   pj:keyTextColor2nd="@color/key_text_color"
 />
diff --git a/res/layout/keyboard_popup_keyboard.xml b/res/layout/keyboard_popup_keyboard.xml
new file mode 100644
index 0000000..0215cfe
--- /dev/null
+++ b/res/layout/keyboard_popup_keyboard.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:background="@drawable/keyboard_popup_panel_background"
+        >
+ 
+    <jp.co.omronsoft.openwnn.KeyboardView
+            android:id="@+id/keyboardView"
+            android:background="@android:color/transparent"
+            android:layout_alignParentBottom="true"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:keyBackground="@drawable/btn_keyboard_key_std"
+            android:verticalCorrection="-10dip"
+            android:keyPreviewLayout="@layout/keyboard_key_preview"
+            android:keyPreviewOffset="-12dip"
+            android:keyPreviewHeight="80dip"
+            android:keyTextSize="22dip"
+            android:keyTextColor="@color/key_text_color_std"
+            android:labelTextSize="14dip"
+            android:popupLayout="@layout/keyboard_popup_keyboard"
+            android:shadowColor="#BB000000"
+            android:shadowRadius="0.5"
+            />
+    <ImageButton android:id="@+id/closeButton"
+        android:background="@android:color/transparent"
+        android:src="@drawable/btn_close"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_marginLeft="8dp"
+        android:clickable="true"
+        />
+</LinearLayout>
diff --git a/res/layout/keyboard_simple.xml b/res/layout/keyboard_simple.xml
index befe34f..3eed320 100644
--- a/res/layout/keyboard_simple.xml
+++ b/res/layout/keyboard_simple.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -14,12 +14,18 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-<android.inputmethodservice.KeyboardView
+<jp.co.omronsoft.openwnn.KeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
+   xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
    android:id="@+id/keyboard"
    android:layout_alignParentBottom="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:keyBackground="@drawable/keybg_simple_def"
+   android:keyPreviewLayout="@layout/keyboard_key_preview"
+   android:popupLayout="@layout/keyboard_popup_keyboard"
    android:background="@drawable/keybg_simple_bg"
+   android:keyTextColor="@color/key_text_color"
+   pj:keyBackground2nd="@drawable/keybg_simple_def"
+   pj:keyTextColor2nd="@color/key_text_color_2nd"
 />
diff --git a/res/layout/keyboard_wood.xml b/res/layout/keyboard_wood.xml
new file mode 100644
index 0000000..81c136c
--- /dev/null
+++ b/res/layout/keyboard_wood.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<android.inputmethodservice.KeyboardView
+   xmlns:android="http://schemas.android.com/apk/res/android"
+   android:id="@+id/keyboard"
+   android:layout_alignParentBottom="true"
+   android:layout_width="match_parent"
+   android:layout_height="wrap_content"
+   android:keyBackground="@drawable/keybg_wood_def"
+   android:background="@drawable/keybg_wood_bg"
+/>
diff --git a/res/layout/user_dictionary_tools_edit.xml b/res/layout/user_dictionary_tools_edit.xml
index 5886857..39a074a 100644
--- a/res/layout/user_dictionary_tools_edit.xml
+++ b/res/layout/user_dictionary_tools_edit.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -46,22 +46,22 @@
         android:layout_height="?android:attr/listPreferredItemHeight"
         android:layout_marginTop="1dip"
         android:background="@android:drawable/bottom_bar">
-        <Button android:id="@+id/addButton"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerVertical="true"
-            android:layout_alignParentLeft="true"
-            android:text="@string/user_dictionary_add"
-            android:minWidth="120dip"
-            android:minHeight="48dip"/>
-
         <Button android:id="@+id/cancelButton"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerVertical="true"
-            android:layout_alignParentRight="true"
+            android:layout_alignParentLeft="true"
             android:text="@string/dialog_button_cancel"
             android:minWidth="120dip"
             android:minHeight="48dip"/>
+
+        <Button android:id="@+id/addButton"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_alignParentRight="true"
+            android:text="@string/user_dictionary_add"
+            android:minWidth="120dip"
+            android:minHeight="48dip"/>
     </RelativeLayout>
 </LinearLayout>
diff --git a/res/layout/user_dictionary_tools_edit_header.xml b/res/layout/user_dictionary_tools_edit_header.xml
index 5e4c5d6..f074cfc 100644
--- a/res/layout/user_dictionary_tools_edit_header.xml
+++ b/res/layout/user_dictionary_tools_edit_header.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/layout/user_dictionary_tools_list.xml b/res/layout/user_dictionary_tools_list.xml
index 4ebfbd8..3fa8888 100644
--- a/res/layout/user_dictionary_tools_list.xml
+++ b/res/layout/user_dictionary_tools_list.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -19,6 +19,13 @@
               android:paddingTop="5sp"
               android:layout_width="match_parent"
               android:layout_height="wrap_content">
+    <TextView
+        android:id="@+id/user_dictionary_tools_list_title_words_count"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="right"
+        android:gravity="right"
+        android:textColor="?android:attr/textColorPrimary"/>
     <LinearLayout
        android:orientation="horizontal"
        android:gravity="center"
diff --git a/res/layout/user_dictionary_tools_list_header.xml b/res/layout/user_dictionary_tools_list_header.xml
deleted file mode 100644
index 3e5159c..0000000
--- a/res/layout/user_dictionary_tools_list_header.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="2dip"
-        android:layout_alignParentLeft="true"
-        android:text="@string/user_dictionary_list_words_en"
-        android:textColor="?android:attr/textColorPrimary"/>
-    <TextView
-        android:id="@+id/user_dictionary_tools_list_title_words_count"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="2dip"
-        android:layout_alignParentRight="true"
-        android:textColor="?android:attr/textColorPrimary"/>
-</RelativeLayout>
diff --git a/res/layout/user_dictionary_tools_list_header_ja.xml b/res/layout/user_dictionary_tools_list_header_ja.xml
deleted file mode 100644
index 0db6f27..0000000
--- a/res/layout/user_dictionary_tools_list_header_ja.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="2dip"
-        android:layout_alignParentLeft="true"
-        android:text="@string/user_dictionary_list_words_ja"
-        android:textColor="?android:attr/textColorPrimary"/>
-    <TextView
-        android:id="@+id/user_dictionary_tools_list_title_words_count"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="2dip"
-        android:layout_alignParentRight="true"
-        android:textColor="?android:attr/textColorPrimary"/>
-</RelativeLayout>
diff --git a/res/values-ja/string.xml b/res/values-ja/string.xml
index 296da5a..3699a0d 100644
--- a/res/values-ja/string.xml
+++ b/res/values-ja/string.xml
@@ -1,6 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!--
+ Copyright (C) 2008-2011  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -40,15 +55,18 @@
     <string name="preference_keyboard_simple">シンプル</string>
     <string name="preference_keyboard_metal">メタリック</string>
 
-    <string name="preference_conversion_menu">変換設定</string>
+    <string name="preference_conversion_menu_ja">日本語変換設定</string>
+    <string name="preference_conversion_menu_en">英語変換設定</string>
 
-    <string name="preference_prediction_title">予測変換</string>
+    <string name="preference_prediction_title_ja">日本語予測変換</string>
+    <string name="preference_prediction_title_en">英語予測変換</string>
     <string name="preference_prediction_summary">文字を入力すると変換候補を表示する</string>
 
-    <string name="preference_correct_spell_title">入力ミス補正</string>
+    <string name="preference_correct_spell_title_en">英語入力ミス補正</string>
     <string name="preference_correct_spell_summary">入力間違いの修正候補を表示する</string>
 
-    <string name="preference_input_learning_title">候補学習</string>
+    <string name="preference_input_learning_title_ja">日本語候補学習</string>
+    <string name="preference_input_learning_title_en">英語候補学習</string>
     <string name="preference_input_learning_summary">変換で確定した語句を学習する</string>
 
     <string name="preference_aboutime_menu">IMEについて</string>
@@ -84,9 +102,6 @@
 
     <!-- user dictionary -->
     <string name="user_dictionary_list_words">単語一覧</string>
-    <string name="user_dictionary_list_words_en">英語ユーザー辞書 単語一覧</string>
-    <string name="user_dictionary_list_words_ja">日本語ユーザー辞書 単語一覧</string>
-    <string name="user_dictionary_list_words_zhcn">中国語ユーザー辞書 単語一覧</string>
     <string name="user_dictionary_edit_words">単語編集</string>
     <string name="user_dictionary_title_read">読み</string>
     <string name="user_dictionary_title_candidate">表記</string>
@@ -103,18 +118,28 @@
 
   <!-- IME dependency -->
     <!-- OpenWnn English -->
-    <string name="openwnn_english_copyright">Ver.1.3.5\nオムロン ソフトウェア(株)</string>
+    <string name="openwnn_english_copyright">Ver.1.3.6\nオムロン ソフトウェア(株)</string>
 
     <!-- OpenWnn Japanese -->
-    <string name="openwnn_japanese_copyright">Ver.1.3.5\nオムロン ソフトウェア(株)</string>
+    <string name="openwnn_japanese_copyright">Ver.1.3.6\nオムロン ソフトウェア(株)</string>
 
     <!-- OpenWnn Chinese -->
-    <string name="openwnn_china_copyright">Ver.1.3.5\nオムロン ソフトウェア(株)</string>
+    <string name="openwnn_china_copyright">Ver.1.3.6\nオムロン ソフトウェア(株)</string>
 
-  <!-- Candidate Delete -->
-      <string name="button_candidate_select">選　択</string>
-      <string name="button_candidate_delete">学習削除</string>
-      <string name="button_candidate_cancel">閉じる</string>
+    <!-- Candidate Delete -->
+    <string name="button_candidate_select">選　択</string>
+    <string name="button_candidate_delete">学習削除</string>
+
+    <!-- Candidate -->
+    <string name="cand_tab_symbol_txt">記号</string>
+    <string name="cand_tab_emoticon_txt">顔文字</string>
+
+    <!-- Symbol -->
+    <string name="half_symbol_txt">記号(半角)</string>
+    <string name="full_symbol_txt">記号(全角)</string>
+
+    <!-- Symbol keyboard -->
+    <string name="key_symbol_mode">戻る</string>
 
     <!-- Tutorial -->
     <string name="touch_to_continue">次へ &gt;&gt;</string>
@@ -132,5 +157,15 @@
     <string name="tip_to_step5"><b>入力が完了したら、携帯の\n「戻る」キー（←）を押して\nキーボードを閉じます。</b></string>
     <string name="tip_to_step6"><b>これでチュートリアルは終わりです。</b></string>
 
+    <string name="ti_input_mode_full_hirakana_title_txt">ひらがな漢字</string>
+    <string name="ti_input_mode_full_katakana_title_txt">全角カタカナ</string>
+    <string name="ti_input_mode_half_katakana_title_txt">半角カタカナ</string>
+    <string name="ti_input_mode_full_alphabet_title_txt">全角英字</string>
+    <string name="ti_input_mode_half_alphabet_title_txt">半角英字</string>
+    <string name="ti_input_mode_full_number_title_txt">全角数字</string>
+    <string name="ti_input_mode_half_number_title_txt">半角数字</string>
+
+    <string name="ti_long_press_dialog_input_mode_txt">入力モード切替</string>
+
 </resources>
 
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
new file mode 100644
index 0000000..f5606b4
--- /dev/null
+++ b/res/values-land/dimens.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+    <!-- key_height x 4 = keyboard_height -->
+    <!-- key_height = symbol_keyboard_height -->
+    <dimen name="key_height">40dip</dimen>
+    <dimen name="key_height_voice">80dip</dimen>
+    <dimen name="key_height_4">40dip</dimen>
+    <dimen name="key_height_5">36dip</dimen>
+    <dimen name="key_height_5_bottom">68dip</dimen>
+    <dimen name="key_height_adjustment">4dip</dimen>
+    <dimen name="key_height_4key">46dip</dimen>
+    <dimen name="candidate_delete_word_size">18dip</dimen>
+    <dimen name="key_text_size">17.5dip</dimen>
+    <dimen name="cand_space_width_emoji_symbol">0dip</dimen>
+    <dimen name="keyboard_height">160dip</dimen>
+    <dimen name="symbol_keyboard_height">40dip</dimen>
+    <dimen name="key_label_text_size">12dip</dimen>
+</resources>
diff --git a/res/values-sw768dp-land/dimens.xml b/res/values-sw768dp-land/dimens.xml
new file mode 100644
index 0000000..1e5a65a
--- /dev/null
+++ b/res/values-sw768dp-land/dimens.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+    <dimen name="key_height">85dip</dimen>
+    <dimen name="key_height_4">46dip</dimen>
+    <dimen name="key_height_4key">85dip</dimen>
+    <dimen name="candidate_delete_word_size">40dip</dimen>
+    <dimen name="key_text_size">30sp</dimen>
+    <dimen name="cand_space_width_emoji_symbol">0dip</dimen>
+    <dimen name="keyboard_height">340dip</dimen>
+    <dimen name="symbol_keyboard_height">85dip</dimen>
+    <dimen name="key_label_text_size">26sp</dimen>
+</resources>
diff --git a/res/values-sw768dp/colors.xml b/res/values-sw768dp/colors.xml
new file mode 100644
index 0000000..03d157d
--- /dev/null
+++ b/res/values-sw768dp/colors.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+    <color name="candidate_text">#FFFFFFFF</color>
+    <color name="candidate_back">#FF000000</color>
+</resources>
diff --git a/res/values-sw768dp/dimens.xml b/res/values-sw768dp/dimens.xml
new file mode 100644
index 0000000..733c66c
--- /dev/null
+++ b/res/values-sw768dp/dimens.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+    <dimen name="cand_minimum_height">60dip</dimen>
+    <dimen name="key_height">73dip</dimen>
+    <dimen name="key_height_4">50dip</dimen>
+    <dimen name="key_height_4key">73dip</dimen>
+    <dimen name="candidate_delete_word_size">40dip</dimen>
+    <dimen name="key_label_text_size">20sp</dimen>
+    <dimen name="key_text_size">24sp</dimen>
+	<dimen name="cand_normal_text_size">20sp</dimen>
+    <dimen name="cand_category_text_size">20sp</dimen>
+    <dimen name="cand_minimum_width">52dip</dimen>
+    <dimen name="cand_space_width">20dip</dimen>
+    <dimen name="cand_category_minimum_height">25dip</dimen>
+    <dimen name="cand_left_align_threshold">80dip</dimen>
+    <dimen name="keyboard_height">292dip</dimen>
+    <dimen name="symbol_keyboard_height">73dip</dimen>
+    <dimen name="tab_text_size">18sp</dimen>
+    <dimen name="candidate_layout_width">36dp</dimen>
+    <dimen name="candidate_layout_height">60dp</dimen>
+</resources>
diff --git a/res/values-zh-rCN/string.xml b/res/values-zh-rCN/string.xml
index 1f798a8..0d10514 100644
--- a/res/values-zh-rCN/string.xml
+++ b/res/values-zh-rCN/string.xml
@@ -1,6 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!--
+ Copyright (C) 2008-2011  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -36,15 +51,18 @@
     <string name="preference_keyboard_skin_title">键盘自定义</string>
     <string name="preference_keyboard_skin_summary">切换到键盘自定义功能。</string>
 
-    <string name="preference_conversion_menu">输入设定</string>
+    <string name="preference_conversion_menu_ja">日语用输入设定</string>
+    <string name="preference_conversion_menu_en">英语用输入设定</string>
 
-    <string name="preference_prediction_title">预测输入</string>
+    <string name="preference_prediction_title_ja">日语用预测输入</string>
+    <string name="preference_prediction_title_en">英语用预测输入</string>
     <string name="preference_prediction_summary">显示预测候选字词。</string>
 
-    <string name="preference_correct_spell_title">错误修正</string>
+    <string name="preference_correct_spell_title_en">英语用错误修正</string>
     <string name="preference_correct_spell_summary">修正错误输入并显示正确的候补词。</string>
 
-    <string name="preference_input_learning_title">学习词典</string>
+    <string name="preference_input_learning_title_ja">日语用学习词典</string>
+    <string name="preference_input_learning_title_en">英语用学习词典</string>
     <string name="preference_input_learning_summary">将输入的字词保存在学习词典。</string>
 
     <string name="preference_aboutime_menu">关于IME</string>
@@ -80,9 +98,6 @@
 
     <!-- user dictionary -->
     <string name="user_dictionary_list_words">单词一览</string>
-    <string name="user_dictionary_list_words_en">英语用户词典 单词一览</string>
-    <string name="user_dictionary_list_words_ja">日语用户词典 单词一览</string>
-    <string name="user_dictionary_list_words_zhcn">中文用户词典 单词一览</string>
     <string name="user_dictionary_edit_words">单词编辑</string>
     <string name="user_dictionary_title_read">读音</string>
     <string name="user_dictionary_title_candidate">候补词</string>
@@ -99,6 +114,16 @@
  
       <string name="button_candidate_select">选择</string>
       <string name="button_candidate_delete">删除</string>
-      <string name="button_candidate_cancel">关闭</string>
+
+    <string name="ti_input_mode_full_hirakana_title_txt">平假名-汉字</string>
+    <string name="ti_input_mode_full_katakana_title_txt">全角片假名</string>
+    <string name="ti_input_mode_half_katakana_title_txt">半角片假名</string>
+    <string name="ti_input_mode_full_alphabet_title_txt">全角字母</string>
+    <string name="ti_input_mode_half_alphabet_title_txt">半角字母</string>
+    <string name="ti_input_mode_full_number_title_txt">全角数字</string>
+    <string name="ti_input_mode_half_number_title_txt">半角数字</string>
+
+    <string name="ti_long_press_dialog_input_mode_txt">输入模式</string>
+
 </resources>
 
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 740668a..f0657de 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
new file mode 100644
index 0000000..5b86598
--- /dev/null
+++ b/res/values/attrs.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+    <declare-styleable name="WnnKeyboardView">
+        <!-- 2nd Image for the key. This image needs to be a StateListDrawable, with the following
+             possible states: normal, pressed, checkable, checkable+pressed, checkable+checked,
+             checkable+checked+pressed. -->
+        <attr name="keyBackground2nd" format="reference" />
+        <attr name="keyTextColor2nd" format="color" />
+    </declare-styleable>
+
+    <declare-styleable name="WnnKeyboard_Key">
+        <!-- Whether this is 2nd key -->
+        <attr name="isSecondKey" format="boolean" />
+    </declare-styleable>
+</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 66c1d9a..cfd19e0 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,16 +15,31 @@
  limitations under the License.
 -->
 <resources>
-    <color name="candidate_text">#ff404040</color>
-    <color name="candidate_back">#FFEFEBEF</color>
+    <color name="candidate_text">#FFFFFFFF</color>
+    <color name="candidate_text_1line">#FFFFFFFF</color>
+    <color name="candidate_back">#222222</color>
+    <color name="candidate_back_1line">#FF000000</color>
+    <color name="candidate_tab_back">#FF000000</color>
     <color name="indicator_textcolor_default">#0032CD32</color>
-    <color name="indicator_textcolor_caps_off">#0032CD32</color>
-    <color name="indicator_textcolor_caps_on">#Cd32CD32</color>
+    <color name="indicator_textcolor_caps_off">#FFC0C0C0</color>
+    <color name="indicator_textcolor_caps_on">#CD32CD32</color>
     <color name="indicator_textcolor_caps_lock">#FF32CD32</color>
-    <color name="indicator_textcolor_alt_off">#00ff8800</color>
-    <color name="indicator_textcolor_alt_on">#CDff8800</color>
-    <color name="indicator_textcolor_alt_lock">#ffff8800</color>
-    <color name="indicator_textbackground_default">#fff0f0f0</color>
+    <color name="indicator_textcolor_alt_off">#FFC0C0C0</color>
+    <color name="indicator_textcolor_alt_on">#CDFF8800</color>
+    <color name="indicator_textcolor_alt_lock">#FFFF8800</color>
+    <color name="indicator_textbackground_default">#FFF0F0F0</color>
     <color name="indicator_background_lock_caps">#5532CD32</color>
-    <color name="indicator_background_lock_alt">#55ff8800</color>
+    <color name="indicator_background_lock_alt">#55FF8800</color>
+    <color name="keybord_textcolor_default">#FFFFFFFF</color>
+    <color name="candidate_webapi_text">#FF0000FF</color>
+    <color name="nocandidate_text">#400000FF</color>
+    <color name="key_text_color">#FFFFFFFF</color>
+    <color name="key_text_color_2nd">#FFFFFFFF</color>
+    <color name="key_text_color_std">#FFFFFFFF</color>
+    <color name="symbol_tab">#FF000000</color>
+    <color name="symbol_tab_gray">#FFAAAAAA</color>
+    <color name="tab_textcolor_select">#FFFFFFFF</color>
+    <color name="tab_textcolor_no_select">#FFFFFFFF</color>
+    <color name="tab_textcolor_disable">#FF404040</color>
+    <color name="candidate_longpress_dialog_text">#FF000000</color>
 </resources>
diff --git a/res/values/debug_tool_values.xml b/res/values/debug_tool_values.xml
new file mode 100644
index 0000000..20b51aa
--- /dev/null
+++ b/res/values/debug_tool_values.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+    <string name="openwnn_label">OpenWnn</string>
+    <string name="app_openwnn_test">OpenWnn onEvent() Test</string>
+    <string name="execButton">Execute onEvent Test</string>
+    <string name="openwnn_engine_label">OpenWnnEngine</string>
+    <string name="execButton2">Engine All</string>
+
+    <string name="debug_openwnn_engine_en">OpenWnnEngineEN</string>
+    <string name="debug_openwnn_engine_jajp">OpenWnnEngineJAJP</string>
+    <string name="debug_openwnn_engine_znch">OpenWnnEngineZNCH</string>
+    <string name="debug_texttype_anything">textType:anything</string>
+    <string name="debug_texttype_integer">textType:integer</string>
+    <string name="debug_texttype_signed">textType:signed</string>
+    <string name="debug_texttype_demical">textType:demical</string>
+    <string name="debug_texttype_password">textType:password</string>
+    <string name="debug_texttype_phone">textType:phoneNumber</string>
+    <string name="debug_texttype_singleLine">android:singleLine</string>
+    <string name="debug_texttype_date_time">android:inputType</string>
+</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index d90f9aa..0bc61d0 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,10 +15,38 @@
  limitations under the License.
 -->
 <resources>
+    <!-- key_height x 4 = keyboard_height -->
+    <!-- key_height = symbol_keyboard_height -->
     <dimen name="key_height">50dip</dimen>
+    <dimen name="key_height_4">50dip</dimen>
+    <dimen name="key_height_5">40dip</dimen>
+    <dimen name="key_height_5_bottom">60dip</dimen>
+    <dimen name="key_height_qwerty">44dip</dimen>
     <dimen name="key_height_landscape">34dip</dimen>
-    <dimen name="candidate_font_size">20sp</dimen>
-    <dimen name="candidate_delete_word_size">28px</dimen>
-    <dimen name="candidate_delete_word_size_landscape">24px</dimen>
+    <dimen name="key_height_adjustment">0dip</dimen>
+    <dimen name="key_height_4key">50dip</dimen>
+    <dimen name="candidate_delete_word_size">28dip</dimen>
+    <dimen name="key_label_text_size">12dip</dimen>
+    <dimen name="key_text_size">22dip</dimen>
+    <dimen name="cand_normal_text_size">18sp</dimen>
+    <dimen name="cand_category_text_size">18dip</dimen>
+    <dimen name="cand_minimum_width">52dip</dimen>
+    <dimen name="cand_minimum_height">37dip</dimen>
+    <dimen name="cand_space_width">20dip</dimen>
+    <dimen name="cand_space_width_emoji_symbol">4dip</dimen>
+    <dimen name="cand_category_minimum_height">25dip</dimen>
+    <dimen name="cand_left_align_threshold">80dip</dimen>
+    <dimen name="keyboard_height">200dip</dimen>
+    <dimen name="symbol_keyboard_height">50dip</dimen>
+    <dimen name="preview_offset_candidate">37dip</dimen>
+    <dimen name="preview_offset_symbol">148dip</dimen>
+    <dimen name="tab_text_size">18dip</dimen>
+    <dimen name="list_preference_span_string_gap">22dip</dimen>
+    <dimen name="list_preference_span_image_gap">11dip</dimen>
+    <dimen name="list_preference_span_right_gap">10dip</dimen>
+    <dimen name="candidate_layout_width">36dp</dimen>
+    <dimen name="candidate_layout_height">60dp</dimen>
     <dimen name="bubble_pointer_offset">22dip</dimen>
-</resources>
+    <dimen name="candidate_longpress_dialog_button_word_size">12dip</dimen>
+    <dimen name="candidate_longpress_dialog_candidate_word_size">28dip</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 883a927..e9e1019 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1,6 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!--
+ Copyright (C) 2008-2011  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -41,14 +56,21 @@
     <string name="preference_keyboard_metal">Metal</string>
 
     <string name="preference_conversion_menu">Conversion</string>
+    <string name="preference_conversion_menu_ja">Japanese Conversion</string>
+    <string name="preference_conversion_menu_en">English Conversion</string>
 
     <string name="preference_prediction_title">Word Prediction</string>
+    <string name="preference_prediction_title_ja">Japanese Word Prediction</string>
+    <string name="preference_prediction_title_en">English Word Prediction</string>
     <string name="preference_prediction_summary">Display predicted words as conversion candidates.</string>
 
     <string name="preference_correct_spell_title">Typing Error Correction</string>
+    <string name="preference_correct_spell_title_en">English Typing Error Correction</string>
     <string name="preference_correct_spell_summary">Display predicted words for correcting typing error.</string>
 
     <string name="preference_input_learning_title">Input Word Learning</string>
+    <string name="preference_input_learning_title_ja">Japanese Input Word Learning</string>
+    <string name="preference_input_learning_title_en">English Input Word Learning</string>
     <string name="preference_input_learning_summary">Learn input words.</string>
 
     <string name="preference_aboutime_menu"> About IME </string>
@@ -84,9 +106,9 @@
 
     <!-- user dictionary -->
     <string name="user_dictionary_list_words">Registered words</string>
-    <string name="user_dictionary_list_words_en">Registered words in English User Dic</string>
-    <string name="user_dictionary_list_words_ja">Registered words in Japanese User Dic</string>
-    <string name="user_dictionary_list_words_zhcn">Registered words in Chinese User Dic</string>
+    <string name="user_dictionary_list_words_en">@string/preference_dictionary_menu_en</string>
+    <string name="user_dictionary_list_words_ja">@string/preference_dictionary_menu_ja</string>
+    <string name="user_dictionary_list_words_zhcn">@string/preference_dictionary_menu_zhcn</string>
     <string name="user_dictionary_edit_words">Edit</string>
     <string name="user_dictionary_title_read">Reading</string>
     <string name="user_dictionary_title_candidate">Word</string>
@@ -105,33 +127,44 @@
 
   <!-- IME dependency -->
     <!-- OpenWnn English -->
-    <string name="openwnn_english_copyright">Ver.1.3.5\nOMRON SOFTWARE Co., Ltd.</string>
+    <string name="openwnn_english_copyright">Ver.1.3.6\nOMRON SOFTWARE Co.,Ltd.</string>
     <string name="openwnn_english">OpenWnn English</string>
     <string name="openwnn_english_system_dictionary">/data/data/jp.co.omronsoft.openwnn/lib/libWnnEngDic.so</string>
     <string name="openwnn_english_writable_dictionary">/data/data/jp.co.omronsoft.openwnn/writableEN.dic</string>
     <string name="en_word_separators">.,;:!?</string>
 
     <!-- OpenWnn Japanese -->
-    <string name="openwnn_japanese_copyright">Ver.1.3.5\nOMRON SOFTWARE Co., Ltd.</string>
+    <string name="openwnn_japanese_copyright">Ver.1.3.6\nOMRON SOFTWARE Co.,Ltd.</string>
     <string name="openwnn_japanese">Japanese IME</string>
     <string name="openwnn_japanese_system_dictionary">/data/data/jp.co.omronsoft.openwnn/lib/libWnnJpnDic.so</string>
     <string name="openwnn_japanese_writable_dictionary">/data/data/jp.co.omronsoft.openwnn/writableJAJP.dic</string>
 
     <!-- OpenWnn Chinese -->
-    <string name="openwnn_china_copyright">Ver.1.3.5\nOMRON SOFTWARE Co., Ltd.</string>
+    <string name="openwnn_china_copyright">Ver.1.3.6\nOMRON SOFTWARE Co.,Ltd.</string>
     <string name="openwnn_china">OpenWnn Chinese</string>
     <string name="openwnn_china_system_dictionary">/data/data/jp.co.omronsoft.openwnn/lib/libWnnZHCNDic.so</string>
-<!-- After Config Change -->
+    <!-- After Config Change -->
     <string name="openwnn_china_writable_dictionary">/data/data/jp.co.omronsoft.openwnn/writableZHCN.dic</string>
     <string name="cn_word_separators">.,;:!?</string>
 
-  <!-- Candidate Delete -->
-      <string name="button_candidate_select">Select</string>
-      <string name="button_candidate_delete">Delete learning?</string>
-      <string name="button_candidate_cancel">Close</string>
+    <!-- Candidate Delete -->
+    <string name="button_candidate_select">Select</string>
+    <string name="button_candidate_delete">Delete learning?</string>
 
+    <!-- Candidate -->
+    <string name="cand_tab_symbol_txt">Symbol</string>
+    <string name="cand_tab_emoticon_txt">Emoticon</string>
 
-  <!-- Key top -->
+    <!-- Symbol -->
+    <string name="half_symbol_categories_txt">[Half Symbol Categories]</string>
+    <string name="full_symbol_categories_txt">[Full Symbol Categories]</string>
+    <string name="half_symbol_txt">Symbol(Half)</string>
+    <string name="full_symbol_txt">Symbol(Full)</string>
+
+    <!-- Symbol keyboard -->
+    <string name="key_symbol_mode">Cancel</string>
+
+    <!-- Key top -->
     <string name="key_left_arrow">↤</string>
     <string name="key_right_arrow">↦</string>
     <string name="key_space">スペース</string>
@@ -216,6 +249,7 @@
     <string name="key_qwerty_full_yen_sign">￥</string>
     <string name="key_qwerty_full_hat">＾</string>
     <string name="key_qwerty_full_slash">／</string>
+    <string name="key_qwerty_euro">\u20AC</string>
 
     <string name="key_12key_switch_full_hiragana">あ</string>
     <string name="key_12key_switch_full_katakana">カ</string>
@@ -235,7 +269,6 @@
     <string name="indicator_caps">CAPS</string>
     <string name="indicator_alt">ALT</string>
 
-
     <!-- Tutorial -->
     <string name="touch_to_continue">Next »</string>
     <string name="touch_to_try">Try it on the button below.</string>
@@ -256,5 +289,18 @@
     <string name="tip_en_to_close_keyboard"><b>Press \"back\" (←) to close the keyboard.</b></string>
     <string name="tip_en_end_of_tutorial"><b>This is the end of the tutorial.</b></string>
 
+    <!-- subtype String -->
+    <string name="label_subtype_generic">%s</string>
+
+    <string name="ti_input_mode_full_hirakana_title_txt">Hiragana-Kanji</string>
+    <string name="ti_input_mode_full_katakana_title_txt">Full-width Katakana</string>
+    <string name="ti_input_mode_half_katakana_title_txt">Half-width Katakana</string>
+    <string name="ti_input_mode_full_alphabet_title_txt">Full-width Alphabet</string>
+    <string name="ti_input_mode_half_alphabet_title_txt">Half-width Alphabet</string>
+    <string name="ti_input_mode_full_number_title_txt">Full-width Numeric</string>
+    <string name="ti_input_mode_half_number_title_txt">Half-width Numeric</string>
+
+    <string name="ti_long_press_dialog_input_mode_txt">Input Mode</string>
+
 </resources>
 
diff --git a/res/values/styles.xml b/res/values/styles.xml
new file mode 100644
index 0000000..e129d73
--- /dev/null
+++ b/res/values/styles.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+    <style name="WnnKeyboardView" parent="@android:style/Widget.KeyboardView">
+    </style>
+    <style name="Dialog" parent="android:style/Theme.Holo.Light.Dialog">
+        <item name="android:windowNoTitle">true</item>
+    </style>
+</resources>
diff --git a/res/xml-land/keyboard_qwerty_jp.xml b/res/xml-land/keyboard_qwerty_jp.xml
new file mode 100644
index 0000000..b0c2bee
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+   android:keyWidth="9%p"
+   android:horizontalGap="0.93%p"
+   android:verticalGap="0dip"
+   android:keyHeight="@dimen/key_height"
+   >
+
+  <Row>
+    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="w"/>
+    <Key android:codes="101" android:keyLabel="e"/>
+    <Key android:codes="114" android:keyLabel="r"/>
+    <Key android:codes="116" android:keyLabel="t"/>
+    <Key android:codes="121" android:keyLabel="y"/>
+    <Key android:codes="117" android:keyLabel="u"/>
+    <Key android:codes="105" android:keyLabel="i"/>
+    <Key android:codes="111" android:keyLabel="o"/>
+    <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="s"/>
+    <Key android:codes="100" android:keyLabel="d"/>
+    <Key android:codes="102" android:keyLabel="f"/>
+    <Key android:codes="103" android:keyLabel="g"/>
+    <Key android:codes="104" android:keyLabel="h"/>
+    <Key android:codes="106" android:keyLabel="j"/>
+    <Key android:codes="107" android:keyLabel="k"/>
+    <Key android:codes="108" android:keyLabel="l"/>
+    <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon"
+         android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+         android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="z"/>
+    <Key android:codes="120" android:keyLabel="x"/>
+    <Key android:codes="99" android:keyLabel="c"/>
+    <Key android:codes="118" android:keyLabel="v"/>
+    <Key android:codes="98" android:keyLabel="b"/>
+    <Key android:codes="110" android:keyLabel="n"/>
+    <Key android:codes="109" android:keyLabel="m"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="44" android:keyLabel="@string/key_qwerty_full_touten"/>
+    <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space_conv" android:iconPreview="@drawable/key_qwerty_space_conv_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="46" android:keyLabel="@string/key_qwerty_full_kuten"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_full_alphabet.xml b/res/xml-land/keyboard_qwerty_jp_full_alphabet.xml
new file mode 100644
index 0000000..f1815da
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_full_alphabet.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+  >
+
+  <Row>
+    <Key android:codes="65361" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="65367" android:keyLabel="w"/>
+    <Key android:codes="65349" android:keyLabel="e"/>
+    <Key android:codes="65362" android:keyLabel="r"/>
+    <Key android:codes="65364" android:keyLabel="t"/>
+    <Key android:codes="65369" android:keyLabel="y"/>
+    <Key android:codes="65365" android:keyLabel="u"/>
+    <Key android:codes="65353" android:keyLabel="i"/>
+    <Key android:codes="65359" android:keyLabel="o"/>
+    <Key android:codes="65360" android:keyLabel="p" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="65345" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="65363" android:keyLabel="s"/>
+    <Key android:codes="65348" android:keyLabel="d"/>
+    <Key android:codes="65350" android:keyLabel="f"/>
+    <Key android:codes="65351" android:keyLabel="g"/>
+    <Key android:codes="65352" android:keyLabel="h"/>
+    <Key android:codes="65354" android:keyLabel="j"/>
+    <Key android:codes="65355" android:keyLabel="k"/>
+    <Key android:codes="65356" android:keyLabel="l"/>
+    <Key android:codes="65312" android:keyLabel="@string/key_qwerty_full_at_sign"
+         android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+         android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="65370" android:keyLabel="z"/>
+    <Key android:codes="65368" android:keyLabel="x"/>
+    <Key android:codes="65347" android:keyLabel="c"/>
+    <Key android:codes="65366" android:keyLabel="v"/>
+    <Key android:codes="65346" android:keyLabel="b"/>
+    <Key android:codes="65358" android:keyLabel="n"/>
+    <Key android:codes="65357" android:keyLabel="m"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma"/>
+    <Key android:codes="12288"  android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_full_alphabet_shift.xml b/res/xml-land/keyboard_qwerty_jp_full_alphabet_shift.xml
new file mode 100644
index 0000000..53bcfde
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_full_alphabet_shift.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+  >
+
+  <Row>
+    <Key android:codes="65329" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="65335" android:keyLabel="W"/>
+    <Key android:codes="65317" android:keyLabel="E"/>
+    <Key android:codes="65330" android:keyLabel="R"/>
+    <Key android:codes="65332" android:keyLabel="T"/>
+    <Key android:codes="65337" android:keyLabel="Y"/>
+    <Key android:codes="65333" android:keyLabel="U"/>
+    <Key android:codes="65321" android:keyLabel="I"/>
+    <Key android:codes="65327" android:keyLabel="O"/>
+    <Key android:codes="65328" android:keyLabel="P" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="65313" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="65331" android:keyLabel="S"/>
+    <Key android:codes="65316" android:keyLabel="D"/>
+    <Key android:codes="65318" android:keyLabel="F"/>
+    <Key android:codes="65319" android:keyLabel="G"/>
+    <Key android:codes="65320" android:keyLabel="H"/>
+    <Key android:codes="65322" android:keyLabel="J"/>
+    <Key android:codes="65323" android:keyLabel="K"/>
+    <Key android:codes="65324" android:keyLabel="L"/>
+    <Key android:codes="65295" android:keyLabel="@string/key_qwerty_full_slash"
+         android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="65338" android:keyLabel="Z"/>
+    <Key android:codes="65336" android:keyLabel="X"/>
+    <Key android:codes="65315" android:keyLabel="C"/>
+    <Key android:codes="65334" android:keyLabel="V"/>
+    <Key android:codes="65314" android:keyLabel="B"/>
+    <Key android:codes="65326" android:keyLabel="N"/>
+    <Key android:codes="65325" android:keyLabel="M"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/>
+    <Key android:codes="12288"  android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_full_katakana.xml b/res/xml-land/keyboard_qwerty_jp_full_katakana.xml
new file mode 100644
index 0000000..752d41c
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_full_katakana.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+  >
+
+  <Row>
+    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="w"/>
+    <Key android:codes="101" android:keyLabel="e"/>
+    <Key android:codes="114" android:keyLabel="r"/>
+    <Key android:codes="116" android:keyLabel="t"/>
+    <Key android:codes="121" android:keyLabel="y"/>
+    <Key android:codes="117" android:keyLabel="u"/>
+    <Key android:codes="105" android:keyLabel="i"/>
+    <Key android:codes="111" android:keyLabel="o"/>
+    <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="s"/>
+    <Key android:codes="100" android:keyLabel="d"/>
+    <Key android:codes="102" android:keyLabel="f"/>
+    <Key android:codes="103" android:keyLabel="g"/>
+    <Key android:codes="104" android:keyLabel="h"/>
+    <Key android:codes="106" android:keyLabel="j"/>
+    <Key android:codes="107" android:keyLabel="k"/>
+    <Key android:codes="108" android:keyLabel="l"/>
+    <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon"
+         android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+         android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="z"/>
+    <Key android:codes="120" android:keyLabel="x"/>
+    <Key android:codes="99" android:keyLabel="c"/>
+    <Key android:codes="118" android:keyLabel="v"/>
+    <Key android:codes="98" android:keyLabel="b"/>
+    <Key android:codes="110" android:keyLabel="n"/>
+    <Key android:codes="109" android:keyLabel="m"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="12289" android:keyLabel="@string/key_qwerty_full_touten"/>
+    <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="12290" android:keyLabel="@string/key_qwerty_full_kuten"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_full_katakana_shift.xml b/res/xml-land/keyboard_qwerty_jp_full_katakana_shift.xml
new file mode 100644
index 0000000..2a086aa
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_full_katakana_shift.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+  >
+
+  <Row>
+    <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="W"/>
+    <Key android:codes="101" android:keyLabel="E"/>
+    <Key android:codes="114" android:keyLabel="R"/>
+    <Key android:codes="116" android:keyLabel="T"/>
+    <Key android:codes="121" android:keyLabel="Y"/>
+    <Key android:codes="117" android:keyLabel="U"/>
+    <Key android:codes="105" android:keyLabel="I"/>
+    <Key android:codes="111" android:keyLabel="O"/>
+    <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="97"  android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="S"/>
+    <Key android:codes="100" android:keyLabel="D"/>
+    <Key android:codes="102" android:keyLabel="F"/>
+    <Key android:codes="103" android:keyLabel="G"/>
+    <Key android:codes="104" android:keyLabel="H"/>
+    <Key android:codes="106" android:keyLabel="J"/>
+    <Key android:codes="107" android:keyLabel="K"/>
+    <Key android:codes="108" android:keyLabel="L"/>
+    <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon"
+         android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="Z"/>
+    <Key android:codes="120" android:keyLabel="X"/>
+    <Key android:codes="99" android:keyLabel="C"/>
+    <Key android:codes="118" android:keyLabel="V"/>
+    <Key android:codes="98" android:keyLabel="B"/>
+    <Key android:codes="110" android:keyLabel="N"/>
+    <Key android:codes="109" android:keyLabel="M"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/>
+    <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_full_symbols.xml b/res/xml-land/keyboard_qwerty_jp_full_symbols.xml
new file mode 100644
index 0000000..281f6a8
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_full_symbols.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+    >
+
+    <Row>
+        <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+        <Key android:codes="65298" android:keyLabel="2"/>
+        <Key android:codes="65299" android:keyLabel="3"/>
+        <Key android:codes="65300" android:keyLabel="4"/>
+        <Key android:codes="65301" android:keyLabel="5"/>
+        <Key android:codes="65302" android:keyLabel="6"/>
+        <Key android:codes="65303" android:keyLabel="7"/>
+        <Key android:codes="65304" android:keyLabel="8"/>
+        <Key android:codes="65305" android:keyLabel="9"/>
+        <Key android:codes="65296" android:keyLabel="0" android:keyEdgeFlags="right"/>
+    </Row>
+
+    <Row>
+        <Key android:codes="65312" android:keyLabel="@string/key_qwerty_full_at_sign" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+        <Key android:codes="65283" android:keyLabel="@string/key_qwerty_full_number_sign" />
+        <Key android:codes="65285" android:keyLabel="@string/key_qwerty_full_percent_sign" />
+        <Key android:codes="65286" android:keyLabel="@string/key_qwerty_full_ampersand" />
+        <Key android:codes="65290" android:keyLabel="@string/key_qwerty_full_asterrisk" />
+	    <Key android:codes="65291" android:keyLabel="@string/key_qwerty_full_plus_sign" />
+        <Key android:codes="65293" android:keyLabel="@string/key_qwerty_full_minus_sign" />
+        <Key android:codes="65309" android:keyLabel="@string/key_qwerty_full_equal_sign" />
+        <Key android:codes="12300" android:keyLabel="@string/key_qwerty_kagi_kakko_left" />
+        <Key android:codes="12301" android:keyLabel="@string/key_qwerty_kagi_kakko_right"  android:keyEdgeFlags="right"/>
+    </Row>
+
+    <Row android:horizontalGap="0.82%p">
+        <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+             android:keyWidth="14%p" android:horizontalGap="1.2%p"
+             android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+        <Key android:codes="65295" android:keyLabel="@string/key_qwerty_full_slash" />
+        <Key android:codes="65288" android:keyLabel="@string/key_qwerty_full_left_parenthesis" />
+        <Key android:codes="65289" android:keyLabel="@string/key_qwerty_full_right_parenthesis" />
+        <Key android:codes="65306" android:keyLabel="@string/key_qwerty_full_colon" />
+        <Key android:codes="65307" android:keyLabel="@string/key_qwerty_full_semicolon" />
+        <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"  />
+        <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question" />
+        <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:keyWidth="13.9%p"
+             android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+    </Row>
+
+    <Row  android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b"
+	         android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
+             android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true" />
+        <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+             android:keyWidth="15%p" wnn:isSecondKey="true" />
+        <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma"/>
+        <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+             android:keyWidth="15.1%p" android:isRepeatable="true"/>
+        <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+             android:isRepeatable="true" wnn:isSecondKey="true"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+             android:isRepeatable="true" wnn:isSecondKey="true"/>
+        <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+    </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_full_symbols_shift.xml b/res/xml-land/keyboard_qwerty_jp_full_symbols_shift.xml
new file mode 100644
index 0000000..014dbbb
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_full_symbols_shift.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+  >
+
+  <Row>
+    <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="65298" android:keyLabel="2"/>
+    <Key android:codes="65299" android:keyLabel="3"/>
+    <Key android:codes="65300" android:keyLabel="4"/>
+    <Key android:codes="65301" android:keyLabel="5"/>
+    <Key android:codes="65302" android:keyLabel="6"/>
+    <Key android:codes="65303" android:keyLabel="7"/>
+    <Key android:codes="65304" android:keyLabel="8"/>
+    <Key android:codes="65305" android:keyLabel="9"/>
+    <Key android:codes="65296" android:keyLabel="0" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="65374" android:keyLabel="@string/key_qwerty_full_thilde" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="65342" android:keyLabel="@string/key_qwerty_full_hat"/>
+    <Key android:codes="65509" android:keyLabel="@string/key_qwerty_full_yen_sign"/>
+    <Key android:codes="65284" android:keyLabel="@string/key_qwerty_full_dollar_sign"/>
+    <Key android:codes="8221" android:keyLabel="@string/key_qwerty_full_double_quotation_sign"/>
+    <Key android:codes="177" android:keyLabel="@string/key_qwerty_full_plus_minus_sign" />
+    <Key android:codes="65343" android:keyLabel="@string/key_qwerty_full_underscore"/>
+    <Key android:codes="65340" android:keyLabel="@string/key_qwerty_full_back_slash"/>
+    <Key android:codes="65371" android:keyLabel="@string/key_qwerty_full_left_curly_blacket"/>
+    <Key android:codes="65373" android:keyLabel="@string/key_qwerty_full_right_curly_blacket" android:keyEdgeFlags="right"/>
+  </Row>
+ 
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="65372" android:keyLabel="@string/key_qwerty_full_vertical_bar"/>
+    <Key android:codes="65308" android:keyLabel="@string/key_qwerty_full_less_than_sign"/>
+    <Key android:codes="65310" android:keyLabel="@string/key_qwerty_full_greater_than_sign"/>
+    <Key android:codes="8216" android:keyLabel="@string/key_qwerty_full_left_single_quote"/>
+    <Key android:codes="8217" android:keyLabel="@string/key_qwerty_full_right_single_quote"/>
+    <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma" />
+    <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period" />
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+	     android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b"
+         android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true" />
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true" />
+    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/>
+    <Key android:codes="12288"  android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="12539" android:keyLabel="@string/key_qwerty_full_middot"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_half_alphabet.xml b/res/xml-land/keyboard_qwerty_jp_half_alphabet.xml
new file mode 100644
index 0000000..7022546
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_half_alphabet.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+      >
+
+  <Row>
+    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="w"/>
+    <Key android:codes="101" android:keyLabel="e"/>
+    <Key android:codes="114" android:keyLabel="r"/>
+    <Key android:codes="116" android:keyLabel="t"/>
+    <Key android:codes="121" android:keyLabel="y"/>
+    <Key android:codes="117" android:keyLabel="u"/>
+    <Key android:codes="105" android:keyLabel="i"/>
+    <Key android:codes="111" android:keyLabel="o"/>
+    <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="s"/>
+    <Key android:codes="100" android:keyLabel="d"/>
+    <Key android:codes="102" android:keyLabel="f"/>
+    <Key android:codes="103" android:keyLabel="g"/>
+    <Key android:codes="104" android:keyLabel="h"/>
+    <Key android:codes="106" android:keyLabel="j"/>
+    <Key android:codes="107" android:keyLabel="k"/>
+    <Key android:codes="108" android:keyLabel="l"/>
+    <Key android:codes="64"  android:keyLabel="\@" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+         android:keyWidth="14%p" android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="z"/>
+    <Key android:codes="120" android:keyLabel="x"/>
+    <Key android:codes="99" android:keyLabel="c"/>
+    <Key android:codes="118" android:keyLabel="v"/>
+    <Key android:codes="98" android:keyLabel="b"/>
+    <Key android:codes="110" android:keyLabel="n"/>
+    <Key android:codes="109" android:keyLabel="m"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="44" android:keyLabel=","/>
+    <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="46" android:keyLabel="."/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_half_alphabet_shift.xml b/res/xml-land/keyboard_qwerty_jp_half_alphabet_shift.xml
new file mode 100644
index 0000000..8dd1403
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_half_alphabet_shift.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+  >
+
+  <Row>
+    <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="W"/>
+    <Key android:codes="101" android:keyLabel="E"/>
+    <Key android:codes="114" android:keyLabel="R"/>
+    <Key android:codes="116" android:keyLabel="T"/>
+    <Key android:codes="121" android:keyLabel="Y"/>
+    <Key android:codes="117" android:keyLabel="U"/>
+    <Key android:codes="105" android:keyLabel="I"/>
+    <Key android:codes="111" android:keyLabel="O"/>
+    <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="97"  android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="S"/>
+    <Key android:codes="100" android:keyLabel="D"/>
+    <Key android:codes="102" android:keyLabel="F"/>
+    <Key android:codes="103" android:keyLabel="G"/>
+    <Key android:codes="104" android:keyLabel="H"/>
+    <Key android:codes="106" android:keyLabel="J"/>
+    <Key android:codes="107" android:keyLabel="K"/>
+    <Key android:codes="108" android:keyLabel="L"/>
+    <Key android:codes="47"  android:keyLabel="/" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="Z"/>
+    <Key android:codes="120" android:keyLabel="X"/>
+    <Key android:codes="99" android:keyLabel="C"/>
+    <Key android:codes="118" android:keyLabel="V"/>
+    <Key android:codes="98" android:keyLabel="B"/>
+    <Key android:codes="110" android:keyLabel="N"/>
+    <Key android:codes="109" android:keyLabel="M"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="33" android:keyLabel="!"/>
+    <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="63" android:keyLabel="\?"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_half_katakana.xml b/res/xml-land/keyboard_qwerty_jp_half_katakana.xml
new file mode 100644
index 0000000..2ba273d
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_half_katakana.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+  >
+
+  <Row>
+    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="w"/>
+    <Key android:codes="101" android:keyLabel="e"/>
+    <Key android:codes="114" android:keyLabel="r"/>
+    <Key android:codes="116" android:keyLabel="t"/>
+    <Key android:codes="121" android:keyLabel="y"/>
+    <Key android:codes="117" android:keyLabel="u"/>
+    <Key android:codes="105" android:keyLabel="i"/>
+    <Key android:codes="111" android:keyLabel="o"/>
+    <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="s"/>
+    <Key android:codes="100" android:keyLabel="d"/>
+    <Key android:codes="102" android:keyLabel="f"/>
+    <Key android:codes="103" android:keyLabel="g"/>
+    <Key android:codes="104" android:keyLabel="h"/>
+    <Key android:codes="106" android:keyLabel="j"/>
+    <Key android:codes="107" android:keyLabel="k"/>
+    <Key android:codes="108" android:keyLabel="l"/>
+    <Key android:codes="65392" android:keyLabel="@string/key_qwerty_half_tyouon"
+         android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+         android:keyWidth="14%p" android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="z"/>
+    <Key android:codes="120" android:keyLabel="x"/>
+    <Key android:codes="99" android:keyLabel="c"/>
+    <Key android:codes="118" android:keyLabel="v"/>
+    <Key android:codes="98" android:keyLabel="b"/>
+    <Key android:codes="110" android:keyLabel="n"/>
+    <Key android:codes="109" android:keyLabel="m"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="65380" android:keyLabel="@string/key_qwerty_half_comma"/>
+    <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="65377" android:keyLabel="@string/key_qwerty_half_period"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_half_katakana_shift.xml b/res/xml-land/keyboard_qwerty_jp_half_katakana_shift.xml
new file mode 100644
index 0000000..fa48feb
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_half_katakana_shift.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+  >
+
+  <Row>
+    <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="W"/>
+    <Key android:codes="101" android:keyLabel="E"/>
+    <Key android:codes="114" android:keyLabel="R"/>
+    <Key android:codes="116" android:keyLabel="T"/>
+    <Key android:codes="121" android:keyLabel="Y"/>
+    <Key android:codes="117" android:keyLabel="U"/>
+    <Key android:codes="105" android:keyLabel="I"/>
+    <Key android:codes="111" android:keyLabel="O"/>
+    <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="97"  android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="S"/>
+    <Key android:codes="100" android:keyLabel="D"/>
+    <Key android:codes="102" android:keyLabel="F"/>
+    <Key android:codes="103" android:keyLabel="G"/>
+    <Key android:codes="104" android:keyLabel="H"/>
+    <Key android:codes="106" android:keyLabel="J"/>
+    <Key android:codes="107" android:keyLabel="K"/>
+    <Key android:codes="108" android:keyLabel="L"/>
+    <Key android:codes="65392" android:keyLabel="@string/key_qwerty_half_tyouon"
+         android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="Z"/>
+    <Key android:codes="120" android:keyLabel="X"/>
+    <Key android:codes="99" android:keyLabel="C"/>
+    <Key android:codes="118" android:keyLabel="V"/>
+    <Key android:codes="98" android:keyLabel="B"/>
+    <Key android:codes="110" android:keyLabel="N"/>
+    <Key android:codes="109" android:keyLabel="M"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="33" android:keyLabel="!"/>
+    <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="63" android:keyLabel="\?"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_half_symbols.xml b/res/xml-land/keyboard_qwerty_jp_half_symbols.xml
new file mode 100644
index 0000000..47676ca
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_half_symbols.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+    >
+
+    <Row>
+        <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+        <Key android:codes="50" android:keyLabel="2"/>
+        <Key android:codes="51" android:keyLabel="3"/>
+        <Key android:codes="52" android:keyLabel="4"/>
+        <Key android:codes="53" android:keyLabel="5"/>
+        <Key android:codes="54" android:keyLabel="6"/>
+        <Key android:codes="55" android:keyLabel="7"/>
+        <Key android:codes="56" android:keyLabel="8"/>
+        <Key android:codes="57" android:keyLabel="9"/>
+        <Key android:codes="48" android:keyLabel="0" android:keyEdgeFlags="right"/>
+    </Row>
+ 
+    <Row>
+        <Key android:codes="64" android:keyLabel="\@" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+        <Key android:codes="35" android:keyLabel="\#"/>
+        <Key android:codes="37" android:keyLabel="%"/>
+        <Key android:codes="38" android:keyLabel="&amp;"/>
+        <Key android:codes="42" android:keyLabel="*"/>
+        <Key android:codes="43" android:keyLabel="+"/>
+        <Key android:codes="45" android:keyLabel="-"/>
+        <Key android:codes="61" android:keyLabel="="/>
+        <Key android:codes="91" android:keyLabel="["/>
+        <Key android:codes="93" android:keyLabel="]" android:keyEdgeFlags="right"/>
+    </Row>
+ 
+    <Row android:horizontalGap="0.82%p">
+        <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+             android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+             android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+        <Key android:codes="47" android:keyLabel="/" />
+        <Key android:codes="40" android:keyLabel="("/>
+        <Key android:codes="41" android:keyLabel=")"/>
+        <Key android:codes="58" android:keyLabel=":"/>
+        <Key android:codes="59" android:keyLabel=";"/>
+        <Key android:codes="33" android:keyLabel="!" />
+        <Key android:codes="63" android:keyLabel="\?"/>
+        <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:keyWidth="13.9%p"
+             android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+    </Row>
+ 
+    <Row  android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b"
+             android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+             android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+        <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+             android:keyWidth="15%p" wnn:isSecondKey="true" />
+        <Key android:codes="44" android:keyLabel=","/>
+        <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+             android:keyWidth="15.1%p" android:isRepeatable="true"/>
+        <Key android:codes="46" android:keyLabel="."/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+             android:isRepeatable="true" wnn:isSecondKey="true"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+             android:isRepeatable="true" wnn:isSecondKey="true"/>
+        <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+    </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_half_symbols_shift.xml b/res/xml-land/keyboard_qwerty_jp_half_symbols_shift.xml
new file mode 100644
index 0000000..a5bc804
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_half_symbols_shift.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+      >
+
+  <Row>
+    <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="50" android:keyLabel="2"/>
+    <Key android:codes="51" android:keyLabel="3"/>
+    <Key android:codes="52" android:keyLabel="4"/>
+    <Key android:codes="53" android:keyLabel="5"/>
+    <Key android:codes="54" android:keyLabel="6"/>
+    <Key android:codes="55" android:keyLabel="7"/>
+    <Key android:codes="56" android:keyLabel="8"/>
+    <Key android:codes="57" android:keyLabel="9"/>
+    <Key android:codes="48" android:keyLabel="0" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="126" android:keyLabel="~" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="94" android:keyLabel="^"/>
+    <Key android:codes="165" android:keyLabel="¥"/>
+    <Key android:codes="36" android:keyLabel="$"/>
+    <Key android:codes="34" android:keyLabel="&quot;"/>
+    <Key android:codes="43" android:keyLabel="+" />
+    <Key android:codes="95" android:keyLabel="_"/>
+    <Key android:codes="92" android:keyLabel="\\" />
+    <Key android:codes="123" android:keyLabel="{"/>
+    <Key android:codes="125" android:keyLabel="}" android:keyEdgeFlags="right"/>
+  </Row>
+ 
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="124" android:keyLabel="|"/>
+    <Key android:codes="60" android:keyLabel="&lt;"/>
+    <Key android:codes="62" android:keyLabel="&gt;"/>
+    <Key android:codes="96" android:keyLabel="`"/>
+    <Key android:codes="39" android:keyLabel="'"/>
+    <Key android:codes="44" android:keyLabel="," />
+    <Key android:codes="46" android:keyLabel="." />
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b"
+         android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="33" android:keyLabel="!"/>
+    <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="63" android:keyLabel="\?"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-land/keyboard_qwerty_jp_shift.xml b/res/xml-land/keyboard_qwerty_jp_shift.xml
new file mode 100644
index 0000000..c1e1f9e
--- /dev/null
+++ b/res/xml-land/keyboard_qwerty_jp_shift.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="0dip"
+      android:keyHeight="@dimen/key_height"
+  >
+
+  <Row>
+    <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="W"/>
+    <Key android:codes="101" android:keyLabel="E"/>
+    <Key android:codes="114" android:keyLabel="R"/>
+    <Key android:codes="116" android:keyLabel="T"/>
+    <Key android:codes="121" android:keyLabel="Y"/>
+    <Key android:codes="117" android:keyLabel="U"/>
+    <Key android:codes="105" android:keyLabel="I"/>
+    <Key android:codes="111" android:keyLabel="O"/>
+    <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="97"  android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="S"/>
+    <Key android:codes="100" android:keyLabel="D"/>
+    <Key android:codes="102" android:keyLabel="F"/>
+    <Key android:codes="103" android:keyLabel="G"/>
+    <Key android:codes="104" android:keyLabel="H"/>
+    <Key android:codes="106" android:keyLabel="J"/>
+    <Key android:codes="107" android:keyLabel="K"/>
+    <Key android:codes="108" android:keyLabel="L"/>
+    <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon"
+         android:keyEdgeFlags="right"/>
+  </Row>
+
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="Z"/>
+    <Key android:codes="120" android:keyLabel="X"/>
+    <Key android:codes="99" android:keyLabel="C"/>
+    <Key android:codes="118" android:keyLabel="V"/>
+    <Key android:codes="98" android:keyLabel="B"/>
+    <Key android:codes="110" android:keyLabel="N"/>
+    <Key android:codes="109" android:keyLabel="M"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b"
+         android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/>
+    <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space_conv" android:iconPreview="@drawable/key_qwerty_space_conv_b"
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
+  </Row>
+</Keyboard>
diff --git a/res/xml-sw768dp/keyboard_12key_phone.xml b/res/xml-sw768dp/keyboard_12key_phone.xml
new file mode 100644
index 0000000..ecf7d6a
--- /dev/null
+++ b/res/xml-sw768dp/keyboard_12key_phone.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+    android:keyWidth="20%p"
+    android:horizontalGap="0.9%p"
+    android:verticalGap="0.9%p"
+    android:keyHeight="@dimen/key_height"
+    >
+
+    <Row>
+        <Key android:codes="-310" android:keyLabel=""
+             android:keyEdgeFlags="left" android:keyWidth="18%" pj:isSecondKey="true"/>
+        <Key android:codes="49" android:keyLabel="1" android:horizontalGap="2%"/>
+        <Key android:codes="50" android:keyLabel="2"/>
+        <Key android:codes="51" android:keyLabel="3"/>
+        <Key android:codes="-214"
+             android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" pj:isSecondKey="true"/>
+    </Row>
+ 
+    <Row>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" pj:isSecondKey="true"/>
+        <Key android:codes="52" android:keyLabel="4" android:horizontalGap="2%"/>
+        <Key android:codes="53" android:keyLabel="5"/>
+        <Key android:codes="54" android:keyLabel="6"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" pj:isSecondKey="true"/>
+    </Row>
+ 
+    <Row>
+        <Key android:codes="45" android:keyLabel="-" android:keyWidth="18%" pj:isSecondKey="true"/>
+        <Key android:codes="55" android:keyLabel="7" android:horizontalGap="2%"/>
+        <Key android:codes="56" android:keyLabel="8"/>
+        <Key android:codes="57" android:keyLabel="9"/>
+        <Key android:codes="43" android:keyLabel="+" android:horizontalGap="2%" android:keyWidth="18%" pj:isSecondKey="true"/>
+    </Row>
+
+    <Row android:rowEdgeFlags="bottom">
+        <Key android:codes="-310" android:keyLabel="" android:keyEdgeFlags="left"  android:keyWidth="18%" pj:isSecondKey="true"/>
+        <Key android:codes="42" android:keyLabel="*"  android:horizontalGap="2%"/>
+        <Key android:codes="48" android:keyLabel="0" />
+        <Key android:codes="35" android:keyLabel="#" />
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter"
+             android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" pj:isSecondKey="true"/>
+    </Row>
+</Keyboard>
diff --git a/res/xml-sw768dp/keyboard_qwerty_jp.xml b/res/xml-sw768dp/keyboard_qwerty_jp.xml
new file mode 100644
index 0000000..9b67157
--- /dev/null
+++ b/res/xml-sw768dp/keyboard_qwerty_jp.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+         xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+         android:keyWidth="7%p"
+         android:horizontalGap="0.9%p"
+         android:verticalGap="0.9%p"
+         android:keyHeight="@dimen/key_height"
+         >
+
+  <Row>
+    <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" />
+    <Key android:codes="113" android:keyLabel="q"/>
+    <Key android:codes="119" android:keyLabel="w"/>
+    <Key android:codes="101" android:keyLabel="e"/>
+    <Key android:codes="114" android:keyLabel="r"/>
+    <Key android:codes="116" android:keyLabel="t"/>
+    <Key android:codes="121" android:keyLabel="y"/>
+    <Key android:codes="117" android:keyLabel="u"/>
+    <Key android:codes="105" android:keyLabel="i"/>
+    <Key android:codes="111" android:keyLabel="o"/>
+    <Key android:codes="112" android:keyLabel="p"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true" />
+  </Row>
+
+  <Row>
+    <Key android:codes="-304" android:keyLabel=".?123"
+         android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" />
+    <Key android:codes="97"  android:keyLabel="a"/>
+    <Key android:codes="115" android:keyLabel="s"/>
+    <Key android:codes="100" android:keyLabel="d"/>
+    <Key android:codes="102" android:keyLabel="f"/>
+    <Key android:codes="103" android:keyLabel="g"/>
+    <Key android:codes="104" android:keyLabel="h"/>
+    <Key android:codes="106" android:keyLabel="j"/>
+    <Key android:codes="107" android:keyLabel="k"/>
+    <Key android:codes="108" android:keyLabel="l"/>
+    <Key android:codes="12540" android:keyLabel="ー"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return"
+         android:keyEdgeFlags="right" android:keyWidth="9%p" pj:isSecondKey="true"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:keyWidth="12.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%"/>
+    <Key android:codes="122" android:keyLabel="z"/>
+    <Key android:codes="120" android:keyLabel="x"/>
+    <Key android:codes="99" android:keyLabel="c"/>
+    <Key android:codes="118" android:keyLabel="v"/>
+    <Key android:codes="98" android:keyLabel="b"/>
+    <Key android:codes="110" android:keyLabel="n"/>
+    <Key android:codes="109" android:keyLabel="m"/>
+    <Key android:codes="44"  android:keyLabel="、"/>
+    <Key android:codes="46"  android:keyLabel="。"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" pj:isSecondKey="true" android:isRepeatable="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom">
+    <Key android:codes="-307" android:keyIcon="@drawable/key_mode_hira"
+         android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/>
+    <Key android:codes="12288" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/>
+  </Row>
+
+</Keyboard>
diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols.xml b/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols.xml
new file mode 100644
index 0000000..2bb94ec
--- /dev/null
+++ b/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+    android:keyWidth="7%p"
+    android:horizontalGap="0.9%p"
+    android:verticalGap="0.9%p"
+    android:keyHeight="@dimen/key_height"
+    >
+
+    <Row>
+        <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p"/>
+        <Key android:codes="65297" android:keyLabel="1"/>
+        <Key android:codes="65298" android:keyLabel="2"/>
+        <Key android:codes="65299" android:keyLabel="3"/>
+        <Key android:codes="65300" android:keyLabel="4"/>
+        <Key android:codes="65301" android:keyLabel="5"/>
+        <Key android:codes="65302" android:keyLabel="6"/>
+        <Key android:codes="65303" android:keyLabel="7"/>
+        <Key android:codes="65304" android:keyLabel="8"/>
+        <Key android:codes="65305" android:keyLabel="9"/>
+        <Key android:codes="65296" android:keyLabel="0"/>
+        <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p"
+             android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/>
+    </Row>
+ 
+    <Row>
+        <Key android:codes="-301" android:keyLabel="ABC" android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p"/>
+        <Key android:codes="65294" android:keyLabel="." />
+        <Key android:codes="65292" android:keyLabel="," />
+        <Key android:codes="65306" android:keyLabel=":"/>
+        <Key android:codes="65307" android:keyLabel=";"/>
+        <Key android:codes="65288" android:keyLabel="("/>
+        <Key android:codes="65289" android:keyLabel=")"/>
+        <Key android:codes="65509" android:keyLabel="￥"/>
+        <Key android:codes="65286" android:keyLabel="&amp;"/>
+        <Key android:codes="65312" android:keyLabel="\@"/>
+        <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return"
+             android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/>
+    </Row>
+ 
+    <Row>
+        <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:keyWidth="12.2%p"
+             android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%"/>
+        <Key android:codes="65291" android:keyLabel="+"/>
+        <Key android:codes="65293" android:keyLabel="-"/>
+        <Key android:codes="65290" android:keyLabel="*" />
+        <Key android:codes="65295" android:keyLabel="/"/>
+        <Key android:codes="12300" android:keyLabel="「"/>
+        <Key android:codes="12301" android:keyLabel="」" />
+        <Key android:codes="12539" android:keyLabel="・" />
+        <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:horizontalGap="16.85%p" pj:isSecondKey="true" android:isRepeatable="true"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/>
+    </Row>
+ 
+    <Row android:rowEdgeFlags="bottom">
+        <Key android:codes="-308" android:keyIcon="@drawable/key_mode_full_num"
+         android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/>
+        <Key android:codes="12288" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/>
+  </Row>
+
+</Keyboard>
diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols_shift.xml b/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols_shift.xml
new file mode 100644
index 0000000..5e283af
--- /dev/null
+++ b/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols_shift.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+    android:keyWidth="7%p"
+    android:horizontalGap="0.9%p"
+    android:verticalGap="0.9%p"
+    android:keyHeight="@dimen/key_height"
+    >
+
+    <Row>
+        <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p"/>
+        <Key android:codes="65339" android:keyLabel="[" />
+        <Key android:codes="65341" android:keyLabel="]" />
+        <Key android:codes="65371" android:keyLabel="{"/>
+        <Key android:codes="65373" android:keyLabel="}"/>
+        <Key android:codes="65283" android:keyLabel="\#"/>
+        <Key android:codes="65285" android:keyLabel="%"/>
+        <Key android:codes="65342" android:keyLabel="^"/>
+        <Key android:codes="65290" android:keyLabel="*"/>
+        <Key android:codes="65291" android:keyLabel="+"/>
+        <Key android:codes="65309" android:keyLabel="="/>
+        <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p"
+             android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/>
+    </Row>
+ 
+    <Row>
+        <Key android:codes="-301" android:keyLabel="ABC" android:keyWidth="10%p"  android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p"/>
+        <Key android:codes="65343" android:keyLabel="_" />
+        <Key android:codes="65509" android:keyLabel="￥"/>
+        <Key android:codes="65372" android:keyLabel="|"/>
+        <Key android:codes="65374" android:keyLabel="~"/>
+        <Key android:codes="65308" android:keyLabel="&lt;"/>
+        <Key android:codes="65310" android:keyLabel="&gt;"/>
+        <Key android:codes="65284" android:keyLabel="$"/>
+        <Key android:codes="8364" android:keyLabel="@string/key_qwerty_euro"/>
+        <Key android:codes="65505" android:keyLabel="￡"/>
+        <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return"
+             android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/>
+    </Row>
+ 
+    <Row>
+        <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift_locked" android:keyWidth="12.2%p"
+             android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%"/>
+        <Key android:codes="65294" android:keyLabel="." />
+        <Key android:codes="65292" android:keyLabel="," />
+        <Key android:codes="65311" android:keyLabel="\?" />
+        <Key android:codes="65281" android:keyLabel="!" />
+        <Key android:codes="8217" android:keyLabel="@string/key_qwerty_full_right_single_quote" />
+        <Key android:codes="8221" android:keyLabel="@string/key_qwerty_full_double_quotation_sign" />
+        <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:horizontalGap="24.85%p" pj:isSecondKey="true" android:isRepeatable="true"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/>
+    </Row>
+
+    <Row android:rowEdgeFlags="bottom">
+        <Key android:codes="-308" android:keyIcon="@drawable/key_mode_full_num"
+         android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/>
+        <Key android:codes="12288" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/>
+    </Row>
+
+</Keyboard>
diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet.xml b/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet.xml
new file mode 100644
index 0000000..82f2888
--- /dev/null
+++ b/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+         xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+         android:keyWidth="7%p"
+         android:horizontalGap="0.9%p"
+         android:verticalGap="0.9%p"
+         android:keyHeight="@dimen/key_height"
+  >
+  
+  <Row>
+    <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%" />
+    <Key android:codes="113" android:keyLabel="q"/>
+    <Key android:codes="119" android:keyLabel="w"/>
+    <Key android:codes="101" android:keyLabel="e"/>
+    <Key android:codes="114" android:keyLabel="r"/>
+    <Key android:codes="116" android:keyLabel="t"/>
+    <Key android:codes="121" android:keyLabel="y"/>
+    <Key android:codes="117" android:keyLabel="u"/>
+    <Key android:codes="105" android:keyLabel="i"/>
+    <Key android:codes="111" android:keyLabel="o"/>
+    <Key android:codes="112" android:keyLabel="p"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="-308"  android:keyLabel=".?123" android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%" />
+    <Key android:codes="97"  android:keyLabel="a"/>
+    <Key android:codes="115" android:keyLabel="s"/>
+    <Key android:codes="100" android:keyLabel="d"/>
+    <Key android:codes="102" android:keyLabel="f"/>
+    <Key android:codes="103" android:keyLabel="g"/>
+    <Key android:codes="104" android:keyLabel="h"/>
+    <Key android:codes="106" android:keyLabel="j"/>
+    <Key android:codes="107" android:keyLabel="k"/>
+    <Key android:codes="108" android:keyLabel="l"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return"
+         android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:keyWidth="12.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%"/>
+    <Key android:codes="122" android:keyLabel="z"/>
+    <Key android:codes="120" android:keyLabel="x"/>
+    <Key android:codes="99" android:keyLabel="c"/>
+    <Key android:codes="118" android:keyLabel="v"/>
+    <Key android:codes="98" android:keyLabel="b"/>
+    <Key android:codes="110" android:keyLabel="n"/>
+    <Key android:codes="109" android:keyLabel="m"/>
+    <Key android:codes="44" android:keyLabel="," />
+    <Key android:codes="46" android:keyLabel="." />
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" pj:isSecondKey="true" android:isRepeatable="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom">
+    <Key android:codes="-301" android:keyIcon="@drawable/key_mode_half_alpha"
+         android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/>
+    <Key android:codes="32" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/>
+  </Row>
+
+</Keyboard>
+
diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet_shift.xml b/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet_shift.xml
new file mode 100644
index 0000000..3d42ec8
--- /dev/null
+++ b/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet_shift.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+         xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+         android:keyWidth="7%p"
+         android:horizontalGap="0.9%p"
+         android:verticalGap="0.9%p"
+         android:keyHeight="@dimen/key_height"
+           >
+ 
+  <Row>
+    <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%" />
+    <Key android:codes="113" android:keyLabel="Q"/>
+    <Key android:codes="119" android:keyLabel="W"/>
+    <Key android:codes="101" android:keyLabel="E"/>
+    <Key android:codes="114" android:keyLabel="R"/>
+    <Key android:codes="116" android:keyLabel="T"/>
+    <Key android:codes="121" android:keyLabel="Y"/>
+    <Key android:codes="117" android:keyLabel="U"/>
+    <Key android:codes="105" android:keyLabel="I"/>
+    <Key android:codes="111" android:keyLabel="O"/>
+    <Key android:codes="112" android:keyLabel="P"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/>
+  </Row>
+ 
+  <Row>
+    <Key android:codes="-308"  android:keyLabel=".?123" android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%" />
+    <Key android:codes="97"  android:keyLabel="A"/>
+    <Key android:codes="115" android:keyLabel="S"/>
+    <Key android:codes="100" android:keyLabel="D"/>
+    <Key android:codes="102" android:keyLabel="F"/>
+    <Key android:codes="103" android:keyLabel="G"/>
+    <Key android:codes="104" android:keyLabel="H"/>
+    <Key android:codes="106" android:keyLabel="J"/>
+    <Key android:codes="107" android:keyLabel="K"/>
+    <Key android:codes="108" android:keyLabel="L"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return"
+         android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/>
+  </Row>
+
+  <Row>
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift_locked" android:keyWidth="12.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%" />
+    <Key android:codes="122" android:keyLabel="Z"/>
+    <Key android:codes="120" android:keyLabel="X"/>
+    <Key android:codes="99" android:keyLabel="C"/>
+    <Key android:codes="118" android:keyLabel="V"/>
+    <Key android:codes="98" android:keyLabel="B"/>
+    <Key android:codes="110" android:keyLabel="N"/>
+    <Key android:codes="109" android:keyLabel="M"/>
+    <Key android:codes="33" android:keyLabel="!" />
+    <Key android:codes="63" android:keyLabel="\?" />
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" pj:isSecondKey="true" android:isRepeatable="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom">
+    <Key android:codes="-301" android:keyIcon="@drawable/key_mode_half_alpha"
+         android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/>
+    <Key android:codes="32" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/>
+  </Row>
+
+</Keyboard>
+
diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols.xml b/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols.xml
new file mode 100644
index 0000000..882649c
--- /dev/null
+++ b/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+    android:keyWidth="7%p"
+    android:horizontalGap="0.9%p"
+    android:verticalGap="0.9%p"
+    android:keyHeight="@dimen/key_height"
+    >
+
+    <Row>
+        <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" />
+        <Key android:codes="49" android:keyLabel="1"/>
+        <Key android:codes="50" android:keyLabel="2"/>
+        <Key android:codes="51" android:keyLabel="3"/>
+        <Key android:codes="52" android:keyLabel="4"/>
+        <Key android:codes="53" android:keyLabel="5"/>
+        <Key android:codes="54" android:keyLabel="6"/>
+        <Key android:codes="55" android:keyLabel="7"/>
+        <Key android:codes="56" android:keyLabel="8"/>
+        <Key android:codes="57" android:keyLabel="9"/>
+        <Key android:codes="48" android:keyLabel="0"/>
+        <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p" 
+             android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/>
+    </Row>
+ 
+    <Row>
+        <Key android:codes="-307" android:keyLabel="ABC" android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" />
+        <Key android:codes="46" android:keyLabel="." />
+        <Key android:codes="44" android:keyLabel="," />
+        <Key android:codes="58" android:keyLabel=":"/>
+        <Key android:codes="59" android:keyLabel=";"/>
+        <Key android:codes="40" android:keyLabel="("/>
+        <Key android:codes="41" android:keyLabel=")"/>
+        <Key android:codes="165" android:keyLabel="￥"/>
+        <Key android:codes="38" android:keyLabel="&amp;"/>
+        <Key android:codes="64" android:keyLabel="\@"/>
+        <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return"
+             android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/>
+    </Row>
+ 
+    <Row>
+        <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:keyWidth="12.2%p"
+             android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" />
+        <Key android:codes="43" android:keyLabel="+"/>
+        <Key android:codes="45" android:keyLabel="-"/>
+        <Key android:codes="42" android:keyLabel="*"/>
+        <Key android:codes="47" android:keyLabel="/"/>
+        <Key android:codes="65378" android:keyLabel="「"/>
+        <Key android:codes="65379" android:keyLabel="」" />
+        <Key android:codes="183" android:keyLabel="・" />
+        <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:horizontalGap="16.9%p" pj:isSecondKey="true" android:isRepeatable="true"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/>
+    </Row>
+
+    <Row android:rowEdgeFlags="bottom">
+        <Key android:codes="-304" android:keyIcon="@drawable/key_mode_half_num"
+         android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/>
+        <Key android:codes="32" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/>
+    </Row>
+
+</Keyboard>
diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols_shift.xml b/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols_shift.xml
new file mode 100644
index 0000000..78c8e46
--- /dev/null
+++ b/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols_shift.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+    android:keyWidth="7%p"
+    android:horizontalGap="0.9%p"
+    android:verticalGap="0.9%p"
+    android:keyHeight="@dimen/key_height"
+    >
+
+    <Row>
+        <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" />
+        <Key android:codes="91" android:keyLabel="[" />
+        <Key android:codes="93" android:keyLabel="]" />
+        <Key android:codes="123" android:keyLabel="{"/>
+        <Key android:codes="125" android:keyLabel="}"/>
+        <Key android:codes="35" android:keyLabel="\#"/>
+        <Key android:codes="37" android:keyLabel="%"/>
+        <Key android:codes="94" android:keyLabel="^"/>
+        <Key android:codes="42" android:keyLabel="*"/>
+        <Key android:codes="43" android:keyLabel="+"/>
+        <Key android:codes="61" android:keyLabel="="/>
+        <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p"
+             android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/>
+    </Row>
+ 
+    <Row>
+        <Key android:codes="-307" android:keyLabel="ABC" android:keyWidth="10%p"  android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p"  />
+        <Key android:codes="95" android:keyLabel="_" />
+        <Key android:codes="165" android:keyLabel="￥"/>
+        <Key android:codes="124" android:keyLabel="|"/>
+        <Key android:codes="126" android:keyLabel="~"/>
+        <Key android:codes="60" android:keyLabel="&lt;"/>
+        <Key android:codes="62" android:keyLabel="&gt;"/>
+        <Key android:codes="36" android:keyLabel="$"/>
+        <Key android:codes="8364" android:keyLabel="@string/key_qwerty_euro"/>
+        <Key android:codes="163" android:keyLabel="￡"/>
+        <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return"
+             android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/>
+    </Row>
+ 
+    <Row>
+        <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift_locked" android:keyWidth="12.2%p"
+             android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p"  />
+        <Key android:codes="46" android:keyLabel="." />
+        <Key android:codes="44" android:keyLabel="," />
+        <Key android:codes="63" android:keyLabel="\?" />
+        <Key android:codes="33" android:keyLabel="!" />
+        <Key android:codes="39" android:keyLabel="@string/key_qwerty_full_right_single_quote" />
+        <Key android:codes="34" android:keyLabel="@string/key_qwerty_full_double_quotation_sign" />
+        <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:horizontalGap="24.85%p" pj:isSecondKey="true" android:isRepeatable="true"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/>
+    </Row>
+   
+    <Row android:rowEdgeFlags="bottom">
+        <Key android:codes="-304" android:keyIcon="@drawable/key_mode_half_num"
+         android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/>
+        <Key android:codes="32" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/>
+    </Row>
+
+</Keyboard>
diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_shift.xml b/res/xml-sw768dp/keyboard_qwerty_jp_shift.xml
new file mode 100644
index 0000000..f355a4f
--- /dev/null
+++ b/res/xml-sw768dp/keyboard_qwerty_jp_shift.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+         xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+         android:keyWidth="7%p"
+         android:horizontalGap="0.9%p"
+         android:verticalGap="0.9%p"
+         android:keyHeight="@dimen/key_height"
+         >
+
+  <Row>
+    <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" />
+    <Key android:codes="113" android:keyLabel="Q"/>
+    <Key android:codes="119" android:keyLabel="W"/>
+    <Key android:codes="101" android:keyLabel="E"/>
+    <Key android:codes="114" android:keyLabel="R"/>
+    <Key android:codes="116" android:keyLabel="T"/>
+    <Key android:codes="121" android:keyLabel="Y"/>
+    <Key android:codes="117" android:keyLabel="U"/>
+    <Key android:codes="105" android:keyLabel="I"/>
+    <Key android:codes="111" android:keyLabel="O"/>
+    <Key android:codes="112" android:keyLabel="P"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true" />
+  </Row>
+
+  <Row>
+    <Key android:codes="-304" android:keyLabel=".?123"
+         android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" />
+    <Key android:codes="97"  android:keyLabel="A"/>
+    <Key android:codes="115" android:keyLabel="S"/>
+    <Key android:codes="100" android:keyLabel="D"/>
+    <Key android:codes="102" android:keyLabel="F"/>
+    <Key android:codes="103" android:keyLabel="G"/>
+    <Key android:codes="104" android:keyLabel="H"/>
+    <Key android:codes="106" android:keyLabel="J"/>
+    <Key android:codes="107" android:keyLabel="K"/>
+    <Key android:codes="108" android:keyLabel="L"/>
+    <Key android:codes="12540" android:keyLabel="ー"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return"
+         android:keyEdgeFlags="right" android:keyWidth="9%p" pj:isSecondKey="true"/>
+  </Row>
+ 
+  <Row>
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift_locked" android:keyWidth="12.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%"/>
+    <Key android:codes="122" android:keyLabel="Z"/>
+    <Key android:codes="120" android:keyLabel="X"/>
+    <Key android:codes="99" android:keyLabel="C"/>
+    <Key android:codes="118" android:keyLabel="V"/>
+    <Key android:codes="98" android:keyLabel="B"/>
+    <Key android:codes="110" android:keyLabel="N"/>
+    <Key android:codes="109" android:keyLabel="M"/>
+    <Key android:codes="65281"  android:keyLabel="!"/>
+    <Key android:codes="65311"  android:keyLabel="\?"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" pj:isSecondKey="true" android:isRepeatable="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/>
+  </Row>
+
+  <Row android:rowEdgeFlags="bottom">
+    <Key android:codes="-307" android:keyIcon="@drawable/key_mode_hira"
+         android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/>
+    <Key android:codes="12288" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/>
+  </Row>
+
+</Keyboard>
diff --git a/res/xml-sw768dp/openwnn_pref_ja.xml b/res/xml-sw768dp/openwnn_pref_ja.xml
new file mode 100644
index 0000000..729c7f2
--- /dev/null
+++ b/res/xml-sw768dp/openwnn_pref_ja.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+		  android:key="openwnn_pref_ja">
+
+  <PreferenceCategory android:title="@string/preference_key_setting_menu">
+    <CheckBoxPreference android:key="key_sound"
+                        android:title="@string/preference_key_sound_title"
+                        android:summary="@string/preference_key_sound_summary"/>
+    <CheckBoxPreference android:key="key_vibration"
+                        android:title="@string/preference_key_vibration_title"
+                        android:summary="@string/preference_key_vibration_summary"/>
+    <CheckBoxPreference android:key="auto_caps"
+                        android:title="@string/preference_auto_caps_title"
+                        android:summary="@string/preference_auto_caps_summary"
+                        android:defaultValue="true" />
+    <jp.co.omronsoft.openwnn.JAJP.KeyboardListPreferenceJAJP
+                        android:key="keyboard_skin"
+                        android:title="@string/preference_keyboard_skin_title"
+                        android:summary="@string/preference_keyboard_skin_summary"
+                        android:entries="@array/keyboard_skin"
+                        android:entryValues="@array/keyboard_skin_id"
+                        android:defaultValue="keyboard_android_default" />
+  </PreferenceCategory>
+ 
+  <PreferenceCategory android:title="@string/preference_conversion_menu_ja">
+    <CheckBoxPreference android:key="opt_enable_learning_ja"
+                        android:title="@string/preference_input_learning_title_ja"
+                        android:summary="@string/preference_input_learning_summary"
+                        android:defaultValue="true" />
+    <CheckBoxPreference android:key="opt_prediction_ja"
+                        android:title="@string/preference_prediction_title_ja"
+                        android:summary="@string/preference_prediction_summary"
+                        android:defaultValue="true" />
+  </PreferenceCategory>
+
+  <PreferenceCategory android:title="@string/preference_conversion_menu_en">
+    <CheckBoxPreference android:key="opt_enable_learning_en"
+                        android:title="@string/preference_input_learning_title_en"
+                        android:summary="@string/preference_input_learning_summary"
+                        android:defaultValue="true" />
+    <CheckBoxPreference android:key="opt_prediction_en"
+                        android:title="@string/preference_prediction_title_en"
+                        android:summary="@string/preference_prediction_summary"
+                        android:defaultValue="false" />
+  </PreferenceCategory>
+ 
+  <PreferenceCategory android:title="@string/preference_dictionary_menu">
+    <PreferenceScreen android:key="user_dictionary_edit_words"
+                      android:title="@string/preference_dictionary_menu_ja"
+                      android:summary="@string/preference_user_dictionary_edit_words_summary_ja"
+                      android:persistent="false">
+         <intent android:action="android.intent.action.MAIN"
+            android:targetPackage="jp.co.omronsoft.openwnn"
+            android:targetClass="jp.co.omronsoft.openwnn.JAJP.UserDictionaryToolsListJAJP" />
+    </PreferenceScreen>
+ 
+    <PreferenceScreen android:key="user_dictionary_edit_words"
+                      android:title="@string/preference_dictionary_menu_en"
+                      android:summary="@string/preference_user_dictionary_edit_words_summary_en"
+                      android:persistent="false">
+         <intent android:action="android.intent.action.MAIN"
+            android:targetPackage="jp.co.omronsoft.openwnn"
+            android:targetClass="jp.co.omronsoft.openwnn.EN.UserDictionaryToolsListEN" />
+    </PreferenceScreen>
+
+    <jp.co.omronsoft.openwnn.JAJP.ClearLearnDictionaryDialogPreferenceJAJP
+                      android:key="clear_learn_dictionary"
+                      android:title="@string/preference_user_dictionary_clear_learning_title"
+                      android:summary="@string/preference_user_dictionary_clear_learning_summary"
+       android:dialogMessage="@string/dialog_clear_learning_dictionary_message"
+                      android:positiveButtonText="@string/dialog_button_ok"
+                      android:negativeButtonText="@string/dialog_button_cancel"/>
+ 
+  </PreferenceCategory>
+  
+  <PreferenceCategory android:title="@string/preference_aboutime_menu">
+    <Preference android:key="openwnn_version"
+			style="?android:preferenceInformationStyle"
+			android:title="@string/openwnn_japanese"
+			android:summary="@string/openwnn_japanese_copyright" />
+  </PreferenceCategory>
+
+</PreferenceScreen>
+
diff --git a/res/xml/debug_tool_engine.xml b/res/xml/debug_tool_engine.xml
new file mode 100644
index 0000000..993b83b
--- /dev/null
+++ b/res/xml/debug_tool_engine.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<OpenWnnEngine>
+	<!-- key testName is Unique -->
+
+	<!-- OpenWnnEngineEN -->
+	<!-- For int predict(ComposingText text, int minLen, int maxLen) -->
+	<!-- param = "target<null or empty or text or comma>,minLen,maxLen,text" -->
+	<key testName = "TestCase01_predict" targetClassName = "OpenWnnEngineEN"
+	     targetMethod = "predict" param = "null,0,-1," intRet = "0" isRet = "" strRet = ""/>
+
+	<key testName = "TestCase02_predict" targetClassName = "OpenWnnEngineEN"
+		 targetMethod = "predict" param = "empty,0,-1," intRet = "0" isRet ="" strRet = ""/>
+
+	<key testName = "TestCase03_predict" targetClassName = "OpenWnnEngineEN"
+		 targetMethod = "predict" param = "text,10,5,testCase03" intRet = "1" isRet ="" strRet = ""/>
+
+	<key testName = "TestCase04_predict" targetClassName = "OpenWnnEngineEN"
+		 targetMethod = "predict" param = "comma,10,5," intRet = "1" isRet ="" strRet = ""/>
+
+	<!-- For convert() -->
+	<key testName = "TestCase01_convert" targetClassName = "OpenWnnEngineEN"
+	     targetMethod = "convert" param = "convertTest" intRet = "0" isRet = "" strRet = ""/>
+
+	<!-- For searchDictionary() -->
+
+	<key testName = "TestCase01_searchDictionary" targetClassName = "OpenWnnEngineEN"
+	     targetMethod = "searchDictionary" param = "convertTest" intRet = "0" isRet = "" strRet = ""/>
+
+	<!-- For getNextCandidate() -->
+	<!-- WnnWord getNextCandidate() -->
+	<!-- before predict() call -->
+	<key testName = "TestCase01_getNextCandidate" targetClassName = "OpenWnnEngineEN"
+	     targetMethod = "getNextCandidate" param = "getNextCondi" intRet = "" isRet = "" strRet = "getNextCondi"/>
+
+	<!-- predict() not call. -->
+	<key testName = "TestCase02_getNextCandidate" targetClassName = "OpenWnnEngineEN"
+	     targetMethod = "getNextCandidate" param = "" intRet = "" isRet = "" strRet = ""/>
+
+	<!-- For learn() -->
+	<!-- boolean learn(WnnWord word) WnnWord(String candidate, String stroke, int frequency) -->
+	<!-- param = "candidate,stroke,frequency" -->
+	<key testName = "TestCase01_learn" targetClassName = "OpenWnnEngineEN"
+	     targetMethod = "learn" param = "learn,learn,0" intRet = "" isRet = "true" strRet = ""/>
+
+	<key testName = "TestCase02_learn" targetClassName = "OpenWnnEngineEN"
+	     targetMethod = "learn" param = "nolearn,nolearn,0" intRet = "" isRet = "true" strRet = ""/>
+
+	<!-- For addWord() -->
+	<!-- int addWord(WnnWord word) WnnWord(String candidate, String stroke, int frequency) -->
+	<!-- param = "candidate,stroke,frequency"-->
+	<key testName = "TestCase01_addWord" targetClassName = "OpenWnnEngineEN"
+	     targetMethod = "addWord" param = "addWordText,addWordText,0" intRet = "0" isRet = "" strRet = ""/>
+
+	<!-- For deleteWord() -->
+	<!-- boolean deleteWord(WnnWord word) WnnWord(String candidate, String stroke, int frequency) -->
+	<!-- param = "candidate,stroke,frequency"-->
+	<key testName = "TestCase01_deleteWord" targetClassName = "OpenWnnEngineEN"
+	     targetMethod = "deleteWord" param = "deleteWord,deleteWord,0" intRet = "" isRet = "false" strRet = ""/>
+
+	<!-- void setPreferences(SharedPreferences pref) -->
+	<key testName = "TestCase01_setPreferences" targetClassName = "OpenWnnEngineEN"
+	     targetMethod = "setPreferences" param = "" intRet = "" isRet = "" strRet = ""/>
+
+
+	<!-- OpenWnnEngineJAJP -->
+	<!-- For int predict(ComposingText text, int minLen, int maxLen) -->
+	<!-- param = "target<null or empty or text or comma>,minLen,maxLen,text" -->
+	<key testName = "TestCase01_predict" targetClassName = "OpenWnnEngineJAJP"
+	     targetMethod = "predict" param = "null,0,-1," intRet = "0" isRet = "" strRet = ""/>
+</OpenWnnEngine>
diff --git a/res/xml/debug_tool_onevent.xml b/res/xml/debug_tool_onevent.xml
new file mode 100644
index 0000000..a28bd87
--- /dev/null
+++ b/res/xml/debug_tool_onevent.xml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<OpenWnn_Test>
+<!-- OpenWnn onEvent() Test -->
+<!-- OpenWnnEN_Test -->
+
+<!-- (Qwerty KeyBoard Shift On) -->
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase001_onEvent()_Q" displayValue = "Q" keyValue = "Q" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase002_onEvent()_W" displayValue = "W" keyValue = "W" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase003_onEvent()_E" displayValue = "E" keyValue = "E" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase004_onEvent()_R" displayValue = "R" keyValue = "R" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase005_onEvent()_T" displayValue = "T" keyValue = "T" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase006_onEvent()_Y" displayValue = "Y" keyValue = "Y" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase007_onEvent()_U" displayValue = "U" keyValue = "U" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase008_onEvent()_I" displayValue = "I" keyValue = "I" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase009_onEvent()_O" displayValue = "O" keyValue = "O" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase010_onEvent()_P" displayValue = "P" keyValue = "P" keyCode= ""/>
+
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase011_onEvent()_A" displayValue = "A" keyValue = "A" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase012_onEvent()_S" displayValue = "S" keyValue = "S" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase013_onEvent()_D" displayValue = "D" keyValue = "D" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase014_onEvent()_F" displayValue = "F" keyValue = "F" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase015_onEvent()_G" displayValue = "G" keyValue = "G" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase016_onEvent()_H" displayValue = "H" keyValue = "H" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase017_onEvent()_J" displayValue = "J" keyValue = "J" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase018_onEvent()_K" displayValue = "K" keyValue = "K" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase019_onEvent()_L" displayValue = "L" keyValue = "L" keyCode= ""/>
+
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase020_onEvent()_Shift" displayValue = "" keyValue = "" keyCode= "59"/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase021_onEvent()_Z" displayValue = "Z" keyValue = "Z" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase022_onEvent()_X" displayValue = "X" keyValue = "X" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase023_onEvent()_C" displayValue = "C" keyValue = "C" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase024_onEvent()_V" displayValue = "V" keyValue = "V" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase025_onEvent()_B" displayValue = "B" keyValue = "B" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase026_onEvent()_N" displayValue = "N" keyValue = "N" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase027_onEvent()_M" displayValue = "M" keyValue = "M" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase028_onEvent()_DEL" displayValue = "" keyValue = "" keyCode= "67"/>
+
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase029_onEvent()_切替" displayValue = "" keyValue = "" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase030_onEvent()_SYM" displayValue = "" keyValue = "" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase031_onEvent()_," displayValue = "," keyValue = "," keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase032_onEvent()_スペース" displayValue = " " keyValue = " " keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase033_onEvent()_." displayValue = "." keyValue = "." keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase034_onEvent()_?" displayValue = "\?" keyValue = "\?" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase035_onEvent()_改行" displayValue = "" keyValue = "" keyCode= "66"/>
+
+<!-- (Qwerty KeyBoard Shift Off) -->
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase036_onEvent()_q" displayValue = "q" keyValue = "q" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase037_onEvent()_w" displayValue = "w" keyValue = "w" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase038_onEvent()_e" displayValue = "e" keyValue = "e" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase039_onEvent()_r" displayValue = "r" keyValue = "r" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase040_onEvent()_t" displayValue = "t" keyValue = "t" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase041_onEvent()_y" displayValue = "y" keyValue = "y" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase042_onEvent()_u" displayValue = "u" keyValue = "u" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase043_onEvent()_I" displayValue = "I" keyValue = "I" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase044_onEvent()_o" displayValue = "o" keyValue = "o" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase045_onEvent()_p" displayValue = "p" keyValue = "p" keyCode= ""/>
+
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase046_onEvent()_a" displayValue = "a" keyValue = "a" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase047_onEvent()_s" displayValue = "s" keyValue = "s" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase048_onEvent()_d" displayValue = "d" keyValue = "d" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase049_onEvent()_f" displayValue = "f" keyValue = "f" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase050_onEvent()_g" displayValue = "g" keyValue = "g" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase051_onEvent()_h" displayValue = "h" keyValue = "h" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase052_onEvent()_j" displayValue = "j" keyValue = "j" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase053_onEvent()_k" displayValue = "k" keyValue = "k" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase054_onEvent()_l" displayValue = "l" keyValue = "l" keyCode= ""/>
+
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase055_onEvent()_Shift" displayValue = "" keyValue = "" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase056_onEvent()_z" displayValue = "z" keyValue = "z" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase057_onEvent()_x" displayValue = "x" keyValue = "x" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase058_onEvent()_c" displayValue = "c" keyValue = "c" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase059_onEvent()_v" displayValue = "v" keyValue = "v" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase060_onEvent()_b" displayValue = "b" keyValue = "b" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase061_onEvent()_n" displayValue = "n" keyValue = "n" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase062_onEvent()_m" displayValue = "m" keyValue = "m" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase063_onEvent()_DEL" displayValue = "" keyValue = "" keyCode= "67"/>
+
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase064_onEvent()_切替" displayValue = "" keyValue = "" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase065_onEvent()_SYM" displayValue = "" keyValue = "" keyCode= "63"/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase066_onEvent()_," displayValue = "," keyValue = "," keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase067_onEvent()_スペース" displayValue = "" keyValue = "" keyCode= "62"/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase068_onEvent()_." displayValue = "." keyValue = "." keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase069_onEvent()_?" displayValue = "\?" keyValue = "\?" keyCode= ""/>
+<key targetTest = "OpenWnnEN_Test"  testName = "EN_TestCase070_onEvent()_改行" displayValue = "" keyValue = "" keyCode= "66"/>
+
+<!-- OpenWnnJAJP_Test -->
+<key targetTest = "OpenWnnJAJP_Test"  testName = "JP_TestCase01_onEvent()_q"
+    displayValue = "q" keyValue = "q" keyCode= ""/>
+
+<key targetTest = "OpenWnnJAJP_Test"  testName = "JP_TestCase02_onEvent()_w"
+    displayValue = "w" keyValue = "w" keyCode= ""/>
+
+<key targetTest = "OpenWnnJAJP_Test"  testName = "JP_TestCase03_onEvent()_e"
+    displayValue = "e" keyValue = "e" keyCode= ""/>
+
+<!-- For OpenWnnEvent.INPUT_SOFT_KEY -->
+<key targetTest = "OpenWnnJAJP_Test"  testName = "JP_TestCaseXX_onEvent()_1"
+    displayValue = "1" keyValue = "" keyCode= "8"/>
+
+<!-- OpenWnnZHCN_Test -->
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase001_onEvent()_Q" displayValue = "Q" keyValue = "Q" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase002_onEvent()_W" displayValue = "W" keyValue = "W" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase003_onEvent()_E" displayValue = "E" keyValue = "E" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase004_onEvent()_R" displayValue = "R" keyValue = "R" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase005_onEvent()_T" displayValue = "T" keyValue = "T" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase006_onEvent()_Y" displayValue = "Y" keyValue = "Y" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase007_onEvent()_U" displayValue = "U" keyValue = "U" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase008_onEvent()_I" displayValue = "I" keyValue = "I" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase009_onEvent()_O" displayValue = "O" keyValue = "O" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase010_onEvent()_P" displayValue = "P" keyValue = "P" keyCode= ""/>
+
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase011_onEvent()_A" displayValue = "A" keyValue = "A" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase012_onEvent()_S" displayValue = "S" keyValue = "S" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase013_onEvent()_D" displayValue = "D" keyValue = "D" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase014_onEvent()_F" displayValue = "F" keyValue = "F" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase015_onEvent()_G" displayValue = "G" keyValue = "G" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase016_onEvent()_H" displayValue = "H" keyValue = "H" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase017_onEvent()_J" displayValue = "J" keyValue = "J" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase018_onEvent()_K" displayValue = "K" keyValue = "K" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase019_onEvent()_L" displayValue = "L" keyValue = "L" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase020_onEvent()_Shift" displayValue = "" keyValue = "" keyCode= "59"/>
+
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase021_onEvent()_Z" displayValue = "Z" keyValue = "Z" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase022_onEvent()_X" displayValue = "X" keyValue = "X" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase023_onEvent()_C" displayValue = "C" keyValue = "C" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase024_onEvent()_V" displayValue = "V" keyValue = "V" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase025_onEvent()_B" displayValue = "B" keyValue = "B" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase026_onEvent()_N" displayValue = "N" keyValue = "N" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase027_onEvent()_M" displayValue = "M" keyValue = "M" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase028_onEvent()_DEL" displayValue = "" keyValue = "" keyCode= "67"/>
+
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase029_onEvent()_ALT" displayValue = "" keyValue = "" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase030_onEvent()_SYM" displayValue = "" keyValue = "" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase031_onEvent()_," displayValue = "," keyValue = "," keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase032_onEvent()_SPACE" displayValue = "" keyValue = "" keyCode= "62"/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase033_onEvent()_." displayValue = "." keyValue = "." keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase034_onEvent()_!" displayValue = "!" keyValue = "!" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase035_onEvent()_RETURN" displayValue = "" keyValue = "" keyCode= "66"/>
+
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase036_onEvent()_q" displayValue = "q" keyValue = "q" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase037_onEvent()_w" displayValue = "w" keyValue = "w" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase038_onEvent()_e" displayValue = "e" keyValue = "e" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase039_onEvent()_r" displayValue = "r" keyValue = "r" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase040_onEvent()_t" displayValue = "t" keyValue = "t" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase041_onEvent()_y" displayValue = "y" keyValue = "y" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase042_onEvent()_u" displayValue = "u" keyValue = "u" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase043_onEvent()_i" displayValue = "i" keyValue = "i" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase044_onEvent()_o" displayValue = "o" keyValue = "o" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase045_onEvent()_p" displayValue = "p" keyValue = "p" keyCode= ""/>
+
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase046_onEvent()_a" displayValue = "a" keyValue = "a" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase047_onEvent()_s" displayValue = "s" keyValue = "s" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase048_onEvent()_d" displayValue = "d" keyValue = "d" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase049_onEvent()_f" displayValue = "f" keyValue = "f" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase050_onEvent()_g" displayValue = "g" keyValue = "g" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase051_onEvent()_h" displayValue = "h" keyValue = "h" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase052_onEvent()_j" displayValue = "j" keyValue = "j" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase053_onEvent()_k" displayValue = "k" keyValue = "k" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase054_onEvent()_l" displayValue = "l" keyValue = "l" keyCode= ""/>
+ 
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase055_onEvent()_Shift" displayValue = "" keyValue = "" keyCode= "59"/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase056_onEvent()_z" displayValue = "z" keyValue = "z" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase057_onEvent()_x" displayValue = "x" keyValue = "x" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase058_onEvent()_c" displayValue = "c" keyValue = "c" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase059_onEvent()_v" displayValue = "v" keyValue = "v" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase060_onEvent()_b" displayValue = "b" keyValue = "b" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase061_onEvent()_n" displayValue = "n" keyValue = "n" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase062_onEvent()_m" displayValue = "m" keyValue = "m" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase063_onEvent()_DEL" displayValue = "" keyValue = "" keyCode= "67"/>
+
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase064_onEvent()_ALT" displayValue = "" keyValue = "" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase065_onEvent()_SYM" displayValue = "" keyValue = "" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase066_onEvent()_," displayValue = "," keyValue = "," keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase067_onEvent()_SPACE" displayValue = "" keyValue = "" keyCode= "62"/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase068_onEvent()_." displayValue = "." keyValue = "." keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase069_onEvent()_\?" displayValue = "\?" keyValue = "\?" keyCode= ""/>
+    <key targetTest = "OpenWnnZHCN_Test"  testName = "ZHCN_TestCase070_onEvent()_RETURN" displayValue = "" keyValue = "" keyCode= "66"/>
+</OpenWnn_Test>
diff --git a/res/xml/default_en_qwerty.xml b/res/xml/default_en_qwerty.xml
index 35068ee..ac085e5 100644
--- a/res/xml/default_en_qwerty.xml
+++ b/res/xml/default_en_qwerty.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -60,7 +60,7 @@
     <Key android:codes="110" android:keyLabel="n"/>
     <Key android:codes="109" android:keyLabel="m"/>
     <Key android:codes="-100"
-	 android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b"
+	 android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
 	 android:keyWidth="15%p" android:keyEdgeFlags="right" android:isRepeatable="true"/>
   </Row>
   
@@ -76,7 +76,7 @@
     <Key android:codes="46" android:keyLabel="."  android:keyWidth="10%p"/>
     <Key android:codes="63" android:keyLabel="\?" android:keyWidth="10%p"/>
     <Key android:codes="-101"
-	 android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" 
+	 android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
          android:keyWidth="15%p" android:keyEdgeFlags="right"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/default_en_switch_key.xml b/res/xml/default_en_switch_key.xml
index 319546b..968118b 100644
--- a/res/xml/default_en_switch_key.xml
+++ b/res/xml/default_en_switch_key.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/xml/default_en_symbols.xml b/res/xml/default_en_symbols.xml
index 16d5fe1..ca03916 100644
--- a/res/xml/default_en_symbols.xml
+++ b/res/xml/default_en_symbols.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -60,7 +60,7 @@
     <Key android:codes="47" android:keyLabel="/" />
     <Key android:codes="33" android:keyLabel="!" />
     <Key android:codes="-100"
-	 android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b"
+	 android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
 	 android:keyWidth="15%p" android:keyEdgeFlags="right" android:isRepeatable="true"/>
   </Row>
   
@@ -76,7 +76,7 @@
     <Key android:codes="46" android:keyLabel="."  android:keyWidth="10%p"/>
     <Key android:codes="63" android:keyLabel="\?" android:keyWidth="10%p"/>
     <Key android:codes="-101"
-	 android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" 
+	 android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
          android:keyWidth="15%p" android:keyEdgeFlags="right"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/default_en_symbols_shift.xml b/res/xml/default_en_symbols_shift.xml
index c2eb67b..dc723a5 100644
--- a/res/xml/default_en_symbols_shift.xml
+++ b/res/xml/default_en_symbols_shift.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -60,7 +60,7 @@
     <Key android:codes="92" android:keyLabel="\\" />
     <Key android:codes="124" android:keyLabel="|"/>
     <Key android:codes="-100"
-	 android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b"
+	 android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
 	 android:keyWidth="15%p" android:keyEdgeFlags="right" android:isRepeatable="true"/>
   </Row>
   
@@ -76,7 +76,7 @@
     <Key android:codes="46" android:keyLabel="."  android:keyWidth="10%p"/>
     <Key android:codes="63" android:keyLabel="\?" android:keyWidth="10%p"/>
     <Key android:codes="-101"
-	 android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" 
+	 android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
          android:keyWidth="15%p" android:keyEdgeFlags="right"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12key_full_alphabet.xml b/res/xml/keyboard_12key_full_alphabet.xml
index 4637af2..30b8254 100644
--- a/res/xml/keyboard_12key_full_alphabet.xml
+++ b/res/xml/keyboard_12key_full_alphabet.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,38 +24,38 @@
 
     <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyIcon="@drawable/key_12key_alpha1" android:iconPreview="@drawable/key_12key_alpha1_b" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyIcon="@drawable/key_12key_alpha2" android:iconPreview="@drawable/key_12key_alpha2_b"/>
         <Key android:codes="-203" android:keyIcon="@drawable/key_12key_alpha3" android:iconPreview="@drawable/key_12key_alpha3_b"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyIcon="@drawable/key_12key_alpha4" android:iconPreview="@drawable/key_12key_alpha4_b" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyIcon="@drawable/key_12key_alpha5" android:iconPreview="@drawable/key_12key_alpha5_b"/>
         <Key android:codes="-206" android:keyIcon="@drawable/key_12key_alpha6" android:iconPreview="@drawable/key_12key_alpha6_b"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b"
-	     android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+	     android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyIcon="@drawable/key_12key_alpha7" android:iconPreview="@drawable/key_12key_alpha7_b" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyIcon="@drawable/key_12key_alpha8" android:iconPreview="@drawable/key_12key_alpha8_b"/>
         <Key android:codes="-209" android:keyIcon="@drawable/key_12key_alpha9" android:iconPreview="@drawable/key_12key_alpha9_b"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyIcon="@drawable/key_12key_caps" android:iconPreview="@drawable/key_12key_caps_b" android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyIcon="@drawable/key_12key_alpha0" android:iconPreview="@drawable/key_12key_alpha0_b"/>
         <Key android:codes="-211" android:keyIcon="@drawable/key_12key_period_comma" android:iconPreview="@drawable/key_12key_period_comma_b" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12key_full_alphabet_input.xml b/res/xml/keyboard_12key_full_alphabet_input.xml
index d34007d..7dafc86 100644
--- a/res/xml/keyboard_12key_full_alphabet_input.xml
+++ b/res/xml/keyboard_12key_full_alphabet_input.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,38 +24,38 @@
   
     <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyIcon="@drawable/key_12key_alpha1" android:iconPreview="@drawable/key_12key_alpha1_b" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyIcon="@drawable/key_12key_alpha2" android:iconPreview="@drawable/key_12key_alpha2_b"/>
         <Key android:codes="-203" android:keyIcon="@drawable/key_12key_alpha3" android:iconPreview="@drawable/key_12key_alpha3_b"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyIcon="@drawable/key_12key_alpha4" android:iconPreview="@drawable/key_12key_alpha4_b" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyIcon="@drawable/key_12key_alpha5" android:iconPreview="@drawable/key_12key_alpha5_b"/>
         <Key android:codes="-206" android:keyIcon="@drawable/key_12key_alpha6" android:iconPreview="@drawable/key_12key_alpha6_b"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-222"  android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b"
-	     android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-222"  android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+	     android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyIcon="@drawable/key_12key_alpha7" android:iconPreview="@drawable/key_12key_alpha7_b" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyIcon="@drawable/key_12key_alpha8" android:iconPreview="@drawable/key_12key_alpha8_b"/>
         <Key android:codes="-209" android:keyIcon="@drawable/key_12key_alpha9" android:iconPreview="@drawable/key_12key_alpha9_b"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyIcon="@drawable/key_12key_caps" android:iconPreview="@drawable/key_12key_caps_b" android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyIcon="@drawable/key_12key_alpha0" android:iconPreview="@drawable/key_12key_alpha0_b"/>
         <Key android:codes="-211" android:keyIcon="@drawable/key_12key_period_comma" android:iconPreview="@drawable/key_12key_period_comma_b" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12key_full_katakana.xml b/res/xml/keyboard_12key_full_katakana.xml
index aefc90f..ae7a73a 100644
--- a/res/xml/keyboard_12key_full_katakana.xml
+++ b/res/xml/keyboard_12key_full_katakana.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,38 +24,38 @@
   
     <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyLabel="@string/key_12key_katakana_1" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyLabel="@string/key_12key_katakana_2"/>
         <Key android:codes="-203" android:keyLabel="@string/key_12key_katakana_3"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyLabel="@string/key_12key_katakana_4" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyLabel="@string/key_12key_katakana_5"/>
         <Key android:codes="-206" android:keyLabel="@string/key_12key_katakana_6"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-222"  android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b"
-	     android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-222"  android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+	     android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyLabel="@string/key_12key_katakana_7" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyLabel="@string/key_12key_katakana_8"/>
         <Key android:codes="-209" android:keyLabel="@string/key_12key_katakana_9"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b"   android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyLabel="@string/key_12key_katakana_0" />
         <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12key_full_katakana_input.xml b/res/xml/keyboard_12key_full_katakana_input.xml
index f17bc81..369e3d0 100644
--- a/res/xml/keyboard_12key_full_katakana_input.xml
+++ b/res/xml/keyboard_12key_full_katakana_input.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,38 +24,38 @@
   
    <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyLabel="@string/key_12key_katakana_1" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyLabel="@string/key_12key_katakana_2"/>
         <Key android:codes="-203" android:keyLabel="@string/key_12key_katakana_3"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyLabel="@string/key_12key_katakana_4" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyLabel="@string/key_12key_katakana_5"/>
         <Key android:codes="-206" android:keyLabel="@string/key_12key_katakana_6"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b"
-	     android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+	     android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyLabel="@string/key_12key_katakana_7" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyLabel="@string/key_12key_katakana_8"/>
         <Key android:codes="-209" android:keyLabel="@string/key_12key_katakana_9"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
      
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b"   android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyLabel="@string/key_12key_katakana_0" />
         <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12key_full_num.xml b/res/xml/keyboard_12key_full_num.xml
index c17d031..c92ecb9 100644
--- a/res/xml/keyboard_12key_full_num.xml
+++ b/res/xml/keyboard_12key_full_num.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,38 +24,38 @@
   
     <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyLabel="1" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyLabel="2"/>
         <Key android:codes="-203" android:keyLabel="3"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyLabel="4" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyLabel="5"/>
         <Key android:codes="-206" android:keyLabel="6"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b"
-	     android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+	     android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyLabel="7" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyLabel="8"/>
         <Key android:codes="-209" android:keyLabel="9"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyLabel="*"  android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyLabel="0" />
         <Key android:codes="-211" android:keyLabel="#" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter" android:iconPreview="@drawable/key_12key_enter_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12key_half_alphabet.xml b/res/xml/keyboard_12key_half_alphabet.xml
index 2588c46..4b9ed76 100644
--- a/res/xml/keyboard_12key_half_alphabet.xml
+++ b/res/xml/keyboard_12key_half_alphabet.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,38 +24,38 @@
 
     <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyIcon="@drawable/key_12key_alpha1" android:iconPreview="@drawable/key_12key_alpha1_b" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyIcon="@drawable/key_12key_alpha2" android:iconPreview="@drawable/key_12key_alpha2_b"/>
         <Key android:codes="-203" android:keyIcon="@drawable/key_12key_alpha3" android:iconPreview="@drawable/key_12key_alpha3_b"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyIcon="@drawable/key_12key_alpha4" android:iconPreview="@drawable/key_12key_alpha4_b" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyIcon="@drawable/key_12key_alpha5" android:iconPreview="@drawable/key_12key_alpha5_b"/>
         <Key android:codes="-206" android:keyIcon="@drawable/key_12key_alpha6" android:iconPreview="@drawable/key_12key_alpha6_b"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b"
-	     android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+	     android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyIcon="@drawable/key_12key_alpha7" android:iconPreview="@drawable/key_12key_alpha7_b" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyIcon="@drawable/key_12key_alpha8" android:iconPreview="@drawable/key_12key_alpha8_b"/>
         <Key android:codes="-209" android:keyIcon="@drawable/key_12key_alpha9" android:iconPreview="@drawable/key_12key_alpha9_b"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyIcon="@drawable/key_12key_caps" android:iconPreview="@drawable/key_12key_caps_b" android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyIcon="@drawable/key_12key_alpha0" android:iconPreview="@drawable/key_12key_alpha0_b"/>
         <Key android:codes="-211" android:keyIcon="@drawable/key_12key_period_comma" android:iconPreview="@drawable/key_12key_period_comma_b" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12key_half_alphabet_input.xml b/res/xml/keyboard_12key_half_alphabet_input.xml
index a7c6549..9b96f10 100644
--- a/res/xml/keyboard_12key_half_alphabet_input.xml
+++ b/res/xml/keyboard_12key_half_alphabet_input.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,38 +24,38 @@
   
     <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyIcon="@drawable/key_12key_alpha1" android:iconPreview="@drawable/key_12key_alpha1_b" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyIcon="@drawable/key_12key_alpha2" android:iconPreview="@drawable/key_12key_alpha2_b"/>
         <Key android:codes="-203" android:keyIcon="@drawable/key_12key_alpha3" android:iconPreview="@drawable/key_12key_alpha3_b"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyIcon="@drawable/key_12key_alpha4" android:iconPreview="@drawable/key_12key_alpha4_b" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyIcon="@drawable/key_12key_alpha5" android:iconPreview="@drawable/key_12key_alpha5_b"/>
         <Key android:codes="-206" android:keyIcon="@drawable/key_12key_alpha6" android:iconPreview="@drawable/key_12key_alpha6_b"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-222"  android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b"
-	     android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-222"  android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+	     android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyIcon="@drawable/key_12key_alpha7" android:iconPreview="@drawable/key_12key_alpha7_b" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyIcon="@drawable/key_12key_alpha8" android:iconPreview="@drawable/key_12key_alpha8_b"/>
         <Key android:codes="-209" android:keyIcon="@drawable/key_12key_alpha9" android:iconPreview="@drawable/key_12key_alpha9_b"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyIcon="@drawable/key_12key_caps" android:iconPreview="@drawable/key_12key_caps_b" android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyIcon="@drawable/key_12key_alpha0" android:iconPreview="@drawable/key_12key_alpha0_b"/>
         <Key android:codes="-211" android:keyIcon="@drawable/key_12key_period_comma" android:iconPreview="@drawable/key_12key_period_comma_b" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12key_half_katakana.xml b/res/xml/keyboard_12key_half_katakana.xml
index 6d52364..a63224c 100644
--- a/res/xml/keyboard_12key_half_katakana.xml
+++ b/res/xml/keyboard_12key_half_katakana.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,38 +24,38 @@
   
     <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyLabel="@string/key_12key_katakana_1" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyLabel="@string/key_12key_katakana_2"/>
         <Key android:codes="-203" android:keyLabel="@string/key_12key_katakana_3"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyLabel="@string/key_12key_katakana_4" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyLabel="@string/key_12key_katakana_5"/>
         <Key android:codes="-206" android:keyLabel="@string/key_12key_katakana_6"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-222"  android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b"
-	     android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-222"  android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+	     android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyLabel="@string/key_12key_katakana_7" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyLabel="@string/key_12key_katakana_8"/>
         <Key android:codes="-209" android:keyLabel="@string/key_12key_katakana_9"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b"   android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyLabel="@string/key_12key_katakana_0" />
         <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12key_half_katakana_input.xml b/res/xml/keyboard_12key_half_katakana_input.xml
index 19cd68f..dfeefdf 100644
--- a/res/xml/keyboard_12key_half_katakana_input.xml
+++ b/res/xml/keyboard_12key_half_katakana_input.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,38 +24,38 @@
   
    <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyLabel="@string/key_12key_katakana_1" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyLabel="@string/key_12key_katakana_2"/>
         <Key android:codes="-203" android:keyLabel="@string/key_12key_katakana_3"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyLabel="@string/key_12key_katakana_4" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyLabel="@string/key_12key_katakana_5"/>
         <Key android:codes="-206" android:keyLabel="@string/key_12key_katakana_6"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b"
-	     android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+	     android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyLabel="@string/key_12key_katakana_7" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyLabel="@string/key_12key_katakana_8"/>
         <Key android:codes="-209" android:keyLabel="@string/key_12key_katakana_9"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
      
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b"   android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyLabel="@string/key_12key_katakana_0" />
         <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12key_half_num.xml b/res/xml/keyboard_12key_half_num.xml
index 49a6562..9d9cc52 100644
--- a/res/xml/keyboard_12key_half_num.xml
+++ b/res/xml/keyboard_12key_half_num.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,38 +24,38 @@
   
     <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyLabel="1" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyLabel="2"/>
         <Key android:codes="-203" android:keyLabel="3"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyLabel="4" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyLabel="5"/>
         <Key android:codes="-206" android:keyLabel="6"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b"
-	     android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+	     android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyLabel="7" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyLabel="8"/>
         <Key android:codes="-209" android:keyLabel="9"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyLabel="*"  android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyLabel="0" />
         <Key android:codes="-211" android:keyLabel="#" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter" android:iconPreview="@drawable/key_12key_enter_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12key_phone.xml b/res/xml/keyboard_12key_phone.xml
index 7637058..704d6cd 100644
--- a/res/xml/keyboard_12key_phone.xml
+++ b/res/xml/keyboard_12key_phone.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -22,39 +23,38 @@
     >
   
     <Row>
-        <Key android:codes="-310" android:keyLabel=""
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="32" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="49" android:keyLabel="1" android:horizontalGap="2%"/>
         <Key android:codes="50" android:keyLabel="2"/>
         <Key android:codes="51" android:keyLabel="3"/>
         <Key android:codes="-214"
-	     android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+	     android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="52" android:keyLabel="4" android:horizontalGap="2%"/>
         <Key android:codes="53" android:keyLabel="5"/>
         <Key android:codes="54" android:keyLabel="6"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="45" android:keyLabel="-" android:keyWidth="18%"/>
+        <Key android:codes="45" android:keyLabel="-" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="55" android:keyLabel="7" android:horizontalGap="2%"/>
         <Key android:codes="56" android:keyLabel="8"/>
         <Key android:codes="57" android:keyLabel="9"/>
-        <Key android:codes="43" android:keyLabel="+" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="43" android:keyLabel="+" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-310" android:keyLabel="" android:keyEdgeFlags="left"  android:keyWidth="18%"/>
+        <Key android:codes="44" android:keyLabel="Pause" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="42" android:keyLabel="*"  android:horizontalGap="2%"/>
         <Key android:codes="48" android:keyLabel="0" />
         <Key android:codes="35" android:keyLabel="#" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter"
-             android:iconPreview="@drawable/key_12key_enter_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter"
+             android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12keyjp.xml b/res/xml/keyboard_12keyjp.xml
index b96fc4f..675d9ea 100644
--- a/res/xml/keyboard_12keyjp.xml
+++ b/res/xml/keyboard_12keyjp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,39 +24,39 @@
   
     <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyIcon="@drawable/key_12key_hiragana1" android:iconPreview="@drawable/key_12key_hiragana1_b" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyIcon="@drawable/key_12key_hiragana2" android:iconPreview="@drawable/key_12key_hiragana2_b"/>
         <Key android:codes="-203" android:keyIcon="@drawable/key_12key_hiragana3" android:iconPreview="@drawable/key_12key_hiragana3_b"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyIcon="@drawable/key_12key_hiragana4" android:iconPreview="@drawable/key_12key_hiragana4_b" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyIcon="@drawable/key_12key_hiragana5" android:iconPreview="@drawable/key_12key_hiragana5_b"/>
         <Key android:codes="-206" android:keyIcon="@drawable/key_12key_hiragana6" android:iconPreview="@drawable/key_12key_hiragana6_b"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b"
-	     android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+	     android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyIcon="@drawable/key_12key_hiragana7" android:iconPreview="@drawable/key_12key_hiragana7_b" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyIcon="@drawable/key_12key_hiragana8" android:iconPreview="@drawable/key_12key_hiragana8_b"/>
         <Key android:codes="-209" android:keyIcon="@drawable/key_12key_hiragana9" android:iconPreview="@drawable/key_12key_hiragana9_b"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space_jp" android:iconPreview="@drawable/key_12key_space_jp_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space_jp" android:iconPreview="@drawable/key_12key_space_jp_b" android:isRepeatable="true" android:keyEdgeFlags="right"  android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_hira" android:iconPreview="@drawable/key_mode_change_b"
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b"
              android:popupKeyboard="@xml/keyboard_switch_key_jp"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b"   android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyIcon="@drawable/key_12key_hiragana0" android:iconPreview="@drawable/key_12key_hiragana0_b"/>
         <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" 
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_12keyjp_input.xml b/res/xml/keyboard_12keyjp_input.xml
index fa86cd5..c965d90 100644
--- a/res/xml/keyboard_12keyjp_input.xml
+++ b/res/xml/keyboard_12keyjp_input.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
     android:keyWidth="20%p"
     android:horizontalGap="0dip"
     android:verticalGap="0dip"
@@ -23,38 +24,38 @@
   
     <Row>
         <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-201" android:keyIcon="@drawable/key_12key_hiragana1" android:iconPreview="@drawable/key_12key_hiragana1_b" android:horizontalGap="2%"/>
         <Key android:codes="-202" android:keyIcon="@drawable/key_12key_hiragana2" android:iconPreview="@drawable/key_12key_hiragana2_b"/>
         <Key android:codes="-203" android:keyIcon="@drawable/key_12key_hiragana3" android:iconPreview="@drawable/key_12key_hiragana3_b"/>
-        <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b"
-             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-204" android:keyIcon="@drawable/key_12key_hiragana4" android:iconPreview="@drawable/key_12key_hiragana4_b" android:horizontalGap="2%"/>
         <Key android:codes="-205" android:keyIcon="@drawable/key_12key_hiragana5" android:iconPreview="@drawable/key_12key_hiragana5_b"/>
         <Key android:codes="-206" android:keyIcon="@drawable/key_12key_hiragana6" android:iconPreview="@drawable/key_12key_hiragana6_b"/>
-        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row>
-        <Key android:codes="-305" android:keyIcon="@drawable/key_12key_eisukana" android:iconPreview="@drawable/key_12key_eisukana_b" android:keyWidth="18%"/>
+        <Key android:codes="-305" android:keyIcon="@drawable/key_12key_eisukana" android:iconPreview="@drawable/key_12key_eisukana_b" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-207" android:keyIcon="@drawable/key_12key_hiragana7" android:iconPreview="@drawable/key_12key_hiragana7_b" android:horizontalGap="2%"/>
         <Key android:codes="-208" android:keyIcon="@drawable/key_12key_hiragana8" android:iconPreview="@drawable/key_12key_hiragana8_b"/>
         <Key android:codes="-209" android:keyIcon="@drawable/key_12key_hiragana9" android:iconPreview="@drawable/key_12key_hiragana9_b"/>
-        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space_jp" android:iconPreview="@drawable/key_12key_space_jp_b" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space_jp" android:iconPreview="@drawable/key_12key_space_jp_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
     
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_hira" android:iconPreview="@drawable/key_mode_change_b"
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b"
              android:popupKeyboard="@xml/keyboard_switch_key_jp"
-             android:keyEdgeFlags="left" android:keyWidth="18%"/>
+             android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/>
         <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b"   android:horizontalGap="2%"/>
         <Key android:codes="-210" android:keyIcon="@drawable/key_12key_hiragana0" android:iconPreview="@drawable/key_12key_hiragana0_b"/>
         <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" />
-        <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" 
-             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/>
+        <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_4key.xml b/res/xml/keyboard_4key.xml
new file mode 100644
index 0000000..9061302
--- /dev/null
+++ b/res/xml/keyboard_4key.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+    android:keyHeight="@dimen/key_height_4key"
+    >
+
+    <Row>
+        <Key android:codes="-300" android:keyLabel="@string/key_symbol_mode" android:keyEdgeFlags="left" android:keyWidth="25%p" wnn:isSecondKey="true"/>
+        <Key android:codes="-301" android:keyWidth="25%p" android:keyLabel="\u25b2" wnn:isSecondKey="true" />
+        <Key android:codes="-302" android:keyWidth="25%p" android:keyLabel="\u25bc" wnn:isSecondKey="true" />
+        <Key android:codes="-303" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:keyWidth="25%p" wnn:isSecondKey="true" />
+    </Row>
+</Keyboard>
+
diff --git a/res/xml/keyboard_qwerty_jp.xml b/res/xml/keyboard_qwerty_jp.xml
index ca87e72..1a5c956 100644
--- a/res/xml/keyboard_qwerty_jp.xml
+++ b/res/xml/keyboard_qwerty_jp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,14 +15,15 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+	  android:keyWidth="9%p"
+	  android:horizontalGap="0.93%p"
+	  android:verticalGap="8dip"
+	  android:keyHeight="@dimen/key_height_qwerty"
 	  >
   
   <Row>
-    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
+    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="119" android:keyLabel="w"/>
     <Key android:codes="101" android:keyLabel="e"/>
     <Key android:codes="114" android:keyLabel="r"/>
@@ -35,7 +36,7 @@
   </Row>
   
   <Row>
-    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left"/>
+    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="115" android:keyLabel="s"/>
     <Key android:codes="100" android:keyLabel="d"/>
     <Key android:codes="102" android:keyLabel="f"/>
@@ -48,9 +49,10 @@
          android:keyEdgeFlags="right"/>
   </Row>
   
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+         android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
     <Key android:codes="122" android:keyLabel="z"/>
     <Key android:codes="120" android:keyLabel="x"/>
     <Key android:codes="99" android:keyLabel="c"/>
@@ -58,23 +60,26 @@
     <Key android:codes="98" android:keyLabel="b"/>
     <Key android:codes="110" android:keyLabel="n"/>
     <Key android:codes="109" android:keyLabel="m"/>
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-         android:keyEdgeFlags="right" android:isRepeatable="true"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_hira" android:iconPreview="@drawable/key_mode_change_b"
-	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left"/>
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p"/>
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="44" android:keyLabel="@string/key_qwerty_full_touten"/>
     <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space_conv" android:iconPreview="@drawable/key_qwerty_space_conv_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="44" android:keyLabel="@string/key_qwerty_full_touten"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="46" android:keyLabel="@string/key_qwerty_full_kuten"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="46" android:keyLabel="@string/key_qwerty_full_kuten"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_full_alphabet.xml b/res/xml/keyboard_qwerty_jp_full_alphabet.xml
index ea7d72f..34de3db 100644
--- a/res/xml/keyboard_qwerty_jp_full_alphabet.xml
+++ b/res/xml/keyboard_qwerty_jp_full_alphabet.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,14 +15,15 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
 	  >
   
   <Row>
-    <Key android:codes="65361" android:keyLabel="q" android:keyEdgeFlags="left"/>
+    <Key android:codes="65361" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="65367" android:keyLabel="w"/>
     <Key android:codes="65349" android:keyLabel="e"/>
     <Key android:codes="65362" android:keyLabel="r"/>
@@ -35,7 +36,7 @@
   </Row>
   
   <Row>
-    <Key android:codes="65345" android:keyLabel="a" android:keyEdgeFlags="left"/>
+    <Key android:codes="65345" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="65363" android:keyLabel="s"/>
     <Key android:codes="65348" android:keyLabel="d"/>
     <Key android:codes="65350" android:keyLabel="f"/>
@@ -48,9 +49,10 @@
          android:keyEdgeFlags="right"/>
   </Row>
   
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+         android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
     <Key android:codes="65370" android:keyLabel="z"/>
     <Key android:codes="65368" android:keyLabel="x"/>
     <Key android:codes="65347" android:keyLabel="c"/>
@@ -58,23 +60,26 @@
     <Key android:codes="65346" android:keyLabel="b"/>
     <Key android:codes="65358" android:keyLabel="n"/>
     <Key android:codes="65357" android:keyLabel="m"/>
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-         android:keyEdgeFlags="right" android:isRepeatable="true"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b"
-	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left"/>
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p"/>
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma"/>
     <Key android:codes="12288"  android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" 
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_full_alphabet_shift.xml b/res/xml/keyboard_qwerty_jp_full_alphabet_shift.xml
index 38005c8..7a02ba7 100644
--- a/res/xml/keyboard_qwerty_jp_full_alphabet_shift.xml
+++ b/res/xml/keyboard_qwerty_jp_full_alphabet_shift.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,14 +15,15 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
 	  >
   
   <Row>
-    <Key android:codes="65329" android:keyLabel="Q" android:keyEdgeFlags="left"/>
+    <Key android:codes="65329" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="65335" android:keyLabel="W"/>
     <Key android:codes="65317" android:keyLabel="E"/>
     <Key android:codes="65330" android:keyLabel="R"/>
@@ -35,7 +36,7 @@
   </Row>
   
   <Row>
-    <Key android:codes="65313" android:keyLabel="A" android:keyEdgeFlags="left"/>
+    <Key android:codes="65313" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="65331" android:keyLabel="S"/>
     <Key android:codes="65316" android:keyLabel="D"/>
     <Key android:codes="65318" android:keyLabel="F"/>
@@ -48,9 +49,10 @@
          android:keyEdgeFlags="right"/>
   </Row>
   
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
     <Key android:codes="65338" android:keyLabel="Z"/>
     <Key android:codes="65336" android:keyLabel="X"/>
     <Key android:codes="65315" android:keyLabel="C"/>
@@ -58,23 +60,26 @@
     <Key android:codes="65314" android:keyLabel="B"/>
     <Key android:codes="65326" android:keyLabel="N"/>
     <Key android:codes="65325" android:keyLabel="M"/>
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-         android:keyEdgeFlags="right" android:isRepeatable="true"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b"
-	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left"/>
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p"/>
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/>
     <Key android:codes="12288"  android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" 
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_full_katakana.xml b/res/xml/keyboard_qwerty_jp_full_katakana.xml
index 5e2c0cd..c0bdd44 100644
--- a/res/xml/keyboard_qwerty_jp_full_katakana.xml
+++ b/res/xml/keyboard_qwerty_jp_full_katakana.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,14 +15,15 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
 	  >
   
   <Row>
-    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
+    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="119" android:keyLabel="w"/>
     <Key android:codes="101" android:keyLabel="e"/>
     <Key android:codes="114" android:keyLabel="r"/>
@@ -35,7 +36,7 @@
   </Row>
   
   <Row>
-    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left"/>
+    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="115" android:keyLabel="s"/>
     <Key android:codes="100" android:keyLabel="d"/>
     <Key android:codes="102" android:keyLabel="f"/>
@@ -48,9 +49,10 @@
          android:keyEdgeFlags="right"/>
   </Row>
   
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+         android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
     <Key android:codes="122" android:keyLabel="z"/>
     <Key android:codes="120" android:keyLabel="x"/>
     <Key android:codes="99" android:keyLabel="c"/>
@@ -58,23 +60,26 @@
     <Key android:codes="98" android:keyLabel="b"/>
     <Key android:codes="110" android:keyLabel="n"/>
     <Key android:codes="109" android:keyLabel="m"/>
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-         android:keyEdgeFlags="right" android:isRepeatable="true"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b"
-	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left"/>
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p"/>
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="12289" android:keyLabel="@string/key_qwerty_full_touten"/>
     <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="12289" android:keyLabel="@string/key_qwerty_full_touten"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="12290" android:keyLabel="@string/key_qwerty_full_kuten"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="12290" android:keyLabel="@string/key_qwerty_full_kuten"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" 
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_full_katakana_shift.xml b/res/xml/keyboard_qwerty_jp_full_katakana_shift.xml
index dfee410..11f946f 100644
--- a/res/xml/keyboard_qwerty_jp_full_katakana_shift.xml
+++ b/res/xml/keyboard_qwerty_jp_full_katakana_shift.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,66 +15,71 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
 	  >
   
   <Row>
-    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
-    <Key android:codes="119" android:keyLabel="w"/>
-    <Key android:codes="101" android:keyLabel="e"/>
-    <Key android:codes="114" android:keyLabel="r"/>
-    <Key android:codes="116" android:keyLabel="t"/>
-    <Key android:codes="121" android:keyLabel="y"/>
-    <Key android:codes="117" android:keyLabel="u"/>
-    <Key android:codes="105" android:keyLabel="i"/>
-    <Key android:codes="111" android:keyLabel="o"/>
-    <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+    <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="W"/>
+    <Key android:codes="101" android:keyLabel="E"/>
+    <Key android:codes="114" android:keyLabel="R"/>
+    <Key android:codes="116" android:keyLabel="T"/>
+    <Key android:codes="121" android:keyLabel="Y"/>
+    <Key android:codes="117" android:keyLabel="U"/>
+    <Key android:codes="105" android:keyLabel="I"/>
+    <Key android:codes="111" android:keyLabel="O"/>
+    <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/>
   </Row>
   
   <Row>
-    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left"/>
-    <Key android:codes="115" android:keyLabel="s"/>
-    <Key android:codes="100" android:keyLabel="d"/>
-    <Key android:codes="102" android:keyLabel="f"/>
-    <Key android:codes="103" android:keyLabel="g"/>
-    <Key android:codes="104" android:keyLabel="h"/>
-    <Key android:codes="106" android:keyLabel="j"/>
-    <Key android:codes="107" android:keyLabel="k"/>
-    <Key android:codes="108" android:keyLabel="l"/>
+    <Key android:codes="97"  android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="S"/>
+    <Key android:codes="100" android:keyLabel="D"/>
+    <Key android:codes="102" android:keyLabel="F"/>
+    <Key android:codes="103" android:keyLabel="G"/>
+    <Key android:codes="104" android:keyLabel="H"/>
+    <Key android:codes="106" android:keyLabel="J"/>
+    <Key android:codes="107" android:keyLabel="K"/>
+    <Key android:codes="108" android:keyLabel="L"/>
     <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon"
          android:keyEdgeFlags="right"/>
   </Row>
   
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
-    <Key android:codes="122" android:keyLabel="z"/>
-    <Key android:codes="120" android:keyLabel="x"/>
-    <Key android:codes="99" android:keyLabel="c"/>
-    <Key android:codes="118" android:keyLabel="v"/>
-    <Key android:codes="98" android:keyLabel="b"/>
-    <Key android:codes="110" android:keyLabel="n"/>
-    <Key android:codes="109" android:keyLabel="m"/>
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-         android:keyEdgeFlags="right" android:isRepeatable="true"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="Z"/>
+    <Key android:codes="120" android:keyLabel="X"/>
+    <Key android:codes="99" android:keyLabel="C"/>
+    <Key android:codes="118" android:keyLabel="V"/>
+    <Key android:codes="98" android:keyLabel="B"/>
+    <Key android:codes="110" android:keyLabel="N"/>
+    <Key android:codes="109" android:keyLabel="M"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b"
-	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left"/>
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p"/>
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/>
     <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_full_symbols.xml b/res/xml/keyboard_qwerty_jp_full_symbols.xml
index 1fcf7fa..48ab92c 100644
--- a/res/xml/keyboard_qwerty_jp_full_symbols.xml
+++ b/res/xml/keyboard_qwerty_jp_full_symbols.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,14 +15,15 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-    android:keyWidth="10%p"
-    android:horizontalGap="0dip"
-    android:verticalGap="0dip"
-    android:keyHeight="@dimen/key_height"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
     >
 
     <Row>
-        <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left"/>
+        <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
         <Key android:codes="65298" android:keyLabel="2"/>
         <Key android:codes="65299" android:keyLabel="3"/>
         <Key android:codes="65300" android:keyLabel="4"/>
@@ -35,7 +36,7 @@
     </Row>
     
     <Row>
-        <Key android:codes="65312" android:keyLabel="@string/key_qwerty_full_at_sign" android:keyEdgeFlags="left"/>
+        <Key android:codes="65312" android:keyLabel="@string/key_qwerty_full_at_sign" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
         <Key android:codes="65283" android:keyLabel="@string/key_qwerty_full_number_sign" />
         <Key android:codes="65285" android:keyLabel="@string/key_qwerty_full_percent_sign" />
         <Key android:codes="65286" android:keyLabel="@string/key_qwerty_full_ampersand" />
@@ -47,9 +48,10 @@
         <Key android:codes="12301" android:keyLabel="@string/key_qwerty_kagi_kakko_right"  android:keyEdgeFlags="right"/>
     </Row>
     
-    <Row>
-        <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-             android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
+    <Row android:horizontalGap="0.82%p">
+        <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+             android:keyWidth="14%p" android:horizontalGap="1.2%p"
+             android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
         <Key android:codes="65295" android:keyLabel="@string/key_qwerty_full_slash" />
         <Key android:codes="65288" android:keyLabel="@string/key_qwerty_full_left_parenthesis" />
         <Key android:codes="65289" android:keyLabel="@string/key_qwerty_full_right_parenthesis" />
@@ -57,21 +59,26 @@
         <Key android:codes="65307" android:keyLabel="@string/key_qwerty_full_semicolon" />
         <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"  />
         <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question" />
-        <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-             android:keyEdgeFlags="right" android:isRepeatable="true"/>
+        <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:keyWidth="13.9%p"
+             android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
     </Row>
     
-    <Row  android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_num" android:iconPreview="@drawable/key_mode_change_b"
+    <Row  android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b"
 	         android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-             android:keyWidth="15%p" android:keyEdgeFlags="left" />
-        <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-             android:keyWidth="15%p" />
+             android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true" />
+        <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+             android:keyWidth="15%p" wnn:isSecondKey="true" />
+        <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma"/>
         <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-             android:keyWidth="30%p" android:isRepeatable="true"/>
-        <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma"  android:keyWidth="12.5%p" />
-        <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period"  android:keyWidth="12.5%p" />
-        <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" 
-             android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+             android:keyWidth="15.1%p" android:isRepeatable="true"/>
+        <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period"/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+             android:isRepeatable="true" wnn:isSecondKey="true"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+             android:isRepeatable="true" wnn:isSecondKey="true"/>
+        <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_full_symbols_shift.xml b/res/xml/keyboard_qwerty_jp_full_symbols_shift.xml
index 26e5cb3..8421f69 100644
--- a/res/xml/keyboard_qwerty_jp_full_symbols_shift.xml
+++ b/res/xml/keyboard_qwerty_jp_full_symbols_shift.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,14 +15,15 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
 	  >
   
   <Row>
-    <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left"/>
+    <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="65298" android:keyLabel="2"/>
     <Key android:codes="65299" android:keyLabel="3"/>
     <Key android:codes="65300" android:keyLabel="4"/>
@@ -35,7 +36,7 @@
   </Row>
   
   <Row>
-    <Key android:codes="65374" android:keyLabel="@string/key_qwerty_full_thilde" android:keyEdgeFlags="left"/>
+    <Key android:codes="65374" android:keyLabel="@string/key_qwerty_full_thilde" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="65342" android:keyLabel="@string/key_qwerty_full_hat"/>
     <Key android:codes="65509" android:keyLabel="@string/key_qwerty_full_yen_sign"/>
     <Key android:codes="65284" android:keyLabel="@string/key_qwerty_full_dollar_sign"/>
@@ -47,9 +48,10 @@
     <Key android:codes="65373" android:keyLabel="@string/key_qwerty_full_right_curly_blacket" android:keyEdgeFlags="right"/>
   </Row>
     
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
     <Key android:codes="65372" android:keyLabel="@string/key_qwerty_full_vertical_bar"/>
     <Key android:codes="65308" android:keyLabel="@string/key_qwerty_full_less_than_sign"/>
     <Key android:codes="65310" android:keyLabel="@string/key_qwerty_full_greater_than_sign"/>
@@ -57,23 +59,26 @@
     <Key android:codes="8217" android:keyLabel="@string/key_qwerty_full_right_single_quote"/>
     <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma" />
     <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period" />
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-	     android:keyEdgeFlags="right" android:isRepeatable="true"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+	     android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_num" android:iconPreview="@drawable/key_mode_change_b"
-         android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left" />
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p" />
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b"
+         android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true" />
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true" />
+    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/>
     <Key android:codes="12288"  android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"
-         android:keyWidth="12.5%p" />
-    <Key android:codes="12539" android:keyLabel="@string/key_qwerty_full_middot"
-         android:keyWidth="12.5%p" />
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="12539" android:keyLabel="@string/key_qwerty_full_middot"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_half_alphabet.xml b/res/xml/keyboard_qwerty_jp_half_alphabet.xml
index 80b7934..58b2181 100644
--- a/res/xml/keyboard_qwerty_jp_half_alphabet.xml
+++ b/res/xml/keyboard_qwerty_jp_half_alphabet.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,14 +15,15 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
-	  >
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
+      >
   
   <Row>
-    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
+    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="119" android:keyLabel="w"/>
     <Key android:codes="101" android:keyLabel="e"/>
     <Key android:codes="114" android:keyLabel="r"/>
@@ -35,7 +36,7 @@
   </Row>
   
   <Row>
-    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left"/>
+    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="115" android:keyLabel="s"/>
     <Key android:codes="100" android:keyLabel="d"/>
     <Key android:codes="102" android:keyLabel="f"/>
@@ -47,9 +48,10 @@
     <Key android:codes="64"  android:keyLabel="\@" android:keyEdgeFlags="right"/>
   </Row>
   
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+         android:keyWidth="14%p" android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
     <Key android:codes="122" android:keyLabel="z"/>
     <Key android:codes="120" android:keyLabel="x"/>
     <Key android:codes="99" android:keyLabel="c"/>
@@ -57,23 +59,26 @@
     <Key android:codes="98" android:keyLabel="b"/>
     <Key android:codes="110" android:keyLabel="n"/>
     <Key android:codes="109" android:keyLabel="m"/>
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-         android:keyEdgeFlags="right" android:isRepeatable="true"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left"/>
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p"/>
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="44" android:keyLabel=","/>
     <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="44" android:keyLabel=","
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="46" android:keyLabel="."
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="46" android:keyLabel="."/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_half_alphabet_shift.xml b/res/xml/keyboard_qwerty_jp_half_alphabet_shift.xml
index 7dc0869..21112d4 100644
--- a/res/xml/keyboard_qwerty_jp_half_alphabet_shift.xml
+++ b/res/xml/keyboard_qwerty_jp_half_alphabet_shift.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,65 +15,70 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
 	  >
   
   <Row>
-    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
-    <Key android:codes="119" android:keyLabel="w"/>
-    <Key android:codes="101" android:keyLabel="e"/>
-    <Key android:codes="114" android:keyLabel="r"/>
-    <Key android:codes="116" android:keyLabel="t"/>
-    <Key android:codes="121" android:keyLabel="y"/>
-    <Key android:codes="117" android:keyLabel="u"/>
-    <Key android:codes="105" android:keyLabel="i"/>
-    <Key android:codes="111" android:keyLabel="o"/>
-    <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+    <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="W"/>
+    <Key android:codes="101" android:keyLabel="E"/>
+    <Key android:codes="114" android:keyLabel="R"/>
+    <Key android:codes="116" android:keyLabel="T"/>
+    <Key android:codes="121" android:keyLabel="Y"/>
+    <Key android:codes="117" android:keyLabel="U"/>
+    <Key android:codes="105" android:keyLabel="I"/>
+    <Key android:codes="111" android:keyLabel="O"/>
+    <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/>
   </Row>
   
   <Row>
-    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left"/>
-    <Key android:codes="115" android:keyLabel="s"/>
-    <Key android:codes="100" android:keyLabel="d"/>
-    <Key android:codes="102" android:keyLabel="f"/>
-    <Key android:codes="103" android:keyLabel="g"/>
-    <Key android:codes="104" android:keyLabel="h"/>
-    <Key android:codes="106" android:keyLabel="j"/>
-    <Key android:codes="107" android:keyLabel="k"/>
-    <Key android:codes="108" android:keyLabel="l"/>
+    <Key android:codes="97"  android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="S"/>
+    <Key android:codes="100" android:keyLabel="D"/>
+    <Key android:codes="102" android:keyLabel="F"/>
+    <Key android:codes="103" android:keyLabel="G"/>
+    <Key android:codes="104" android:keyLabel="H"/>
+    <Key android:codes="106" android:keyLabel="J"/>
+    <Key android:codes="107" android:keyLabel="K"/>
+    <Key android:codes="108" android:keyLabel="L"/>
     <Key android:codes="47"  android:keyLabel="/" android:keyEdgeFlags="right"/>
   </Row>
   
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
-    <Key android:codes="122" android:keyLabel="z"/>
-    <Key android:codes="120" android:keyLabel="x"/>
-    <Key android:codes="99" android:keyLabel="c"/>
-    <Key android:codes="118" android:keyLabel="v"/>
-    <Key android:codes="98" android:keyLabel="b"/>
-    <Key android:codes="110" android:keyLabel="n"/>
-    <Key android:codes="109" android:keyLabel="m"/>
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-         android:keyEdgeFlags="right" android:isRepeatable="true"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="Z"/>
+    <Key android:codes="120" android:keyLabel="X"/>
+    <Key android:codes="99" android:keyLabel="C"/>
+    <Key android:codes="118" android:keyLabel="V"/>
+    <Key android:codes="98" android:keyLabel="B"/>
+    <Key android:codes="110" android:keyLabel="N"/>
+    <Key android:codes="109" android:keyLabel="M"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b"
-	     android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left"/>
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p"/>
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b"
+	     android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="33" android:keyLabel="!"/>
     <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="33" android:keyLabel="!"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="63" android:keyLabel="\?"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="63" android:keyLabel="\?"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_half_katakana.xml b/res/xml/keyboard_qwerty_jp_half_katakana.xml
index 18d6c4c..190a55e 100644
--- a/res/xml/keyboard_qwerty_jp_half_katakana.xml
+++ b/res/xml/keyboard_qwerty_jp_half_katakana.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,14 +15,15 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
 	  >
   
   <Row>
-    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
+    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="119" android:keyLabel="w"/>
     <Key android:codes="101" android:keyLabel="e"/>
     <Key android:codes="114" android:keyLabel="r"/>
@@ -35,7 +36,7 @@
   </Row>
   
   <Row>
-    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left"/>
+    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="115" android:keyLabel="s"/>
     <Key android:codes="100" android:keyLabel="d"/>
     <Key android:codes="102" android:keyLabel="f"/>
@@ -48,9 +49,10 @@
          android:keyEdgeFlags="right"/>
   </Row>
   
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+         android:keyWidth="14%p" android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
     <Key android:codes="122" android:keyLabel="z"/>
     <Key android:codes="120" android:keyLabel="x"/>
     <Key android:codes="99" android:keyLabel="c"/>
@@ -58,23 +60,26 @@
     <Key android:codes="98" android:keyLabel="b"/>
     <Key android:codes="110" android:keyLabel="n"/>
     <Key android:codes="109" android:keyLabel="m"/>
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-         android:keyEdgeFlags="right" android:isRepeatable="true"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b"
-	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left"/>
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p"/>
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="65380" android:keyLabel="@string/key_qwerty_half_comma"/>
     <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="65380" android:keyLabel="@string/key_qwerty_half_comma"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="65377" android:keyLabel="@string/key_qwerty_half_period"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="65377" android:keyLabel="@string/key_qwerty_half_period"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_half_katakana_shift.xml b/res/xml/keyboard_qwerty_jp_half_katakana_shift.xml
index c250968..ca9b724 100644
--- a/res/xml/keyboard_qwerty_jp_half_katakana_shift.xml
+++ b/res/xml/keyboard_qwerty_jp_half_katakana_shift.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,66 +15,71 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
-	  >
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
+      >
   
   <Row>
-    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
-    <Key android:codes="119" android:keyLabel="w"/>
-    <Key android:codes="101" android:keyLabel="e"/>
-    <Key android:codes="114" android:keyLabel="r"/>
-    <Key android:codes="116" android:keyLabel="t"/>
-    <Key android:codes="121" android:keyLabel="y"/>
-    <Key android:codes="117" android:keyLabel="u"/>
-    <Key android:codes="105" android:keyLabel="i"/>
-    <Key android:codes="111" android:keyLabel="o"/>
-    <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+    <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="W"/>
+    <Key android:codes="101" android:keyLabel="E"/>
+    <Key android:codes="114" android:keyLabel="R"/>
+    <Key android:codes="116" android:keyLabel="T"/>
+    <Key android:codes="121" android:keyLabel="Y"/>
+    <Key android:codes="117" android:keyLabel="U"/>
+    <Key android:codes="105" android:keyLabel="I"/>
+    <Key android:codes="111" android:keyLabel="O"/>
+    <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/>
   </Row>
   
   <Row>
-    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left"/>
-    <Key android:codes="115" android:keyLabel="s"/>
-    <Key android:codes="100" android:keyLabel="d"/>
-    <Key android:codes="102" android:keyLabel="f"/>
-    <Key android:codes="103" android:keyLabel="g"/>
-    <Key android:codes="104" android:keyLabel="h"/>
-    <Key android:codes="106" android:keyLabel="j"/>
-    <Key android:codes="107" android:keyLabel="k"/>
-    <Key android:codes="108" android:keyLabel="l"/>
+    <Key android:codes="97"  android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="S"/>
+    <Key android:codes="100" android:keyLabel="D"/>
+    <Key android:codes="102" android:keyLabel="F"/>
+    <Key android:codes="103" android:keyLabel="G"/>
+    <Key android:codes="104" android:keyLabel="H"/>
+    <Key android:codes="106" android:keyLabel="J"/>
+    <Key android:codes="107" android:keyLabel="K"/>
+    <Key android:codes="108" android:keyLabel="L"/>
     <Key android:codes="65392" android:keyLabel="@string/key_qwerty_half_tyouon"
          android:keyEdgeFlags="right"/>
   </Row>
   
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
-    <Key android:codes="122" android:keyLabel="z"/>
-    <Key android:codes="120" android:keyLabel="x"/>
-    <Key android:codes="99" android:keyLabel="c"/>
-    <Key android:codes="118" android:keyLabel="v"/>
-    <Key android:codes="98" android:keyLabel="b"/>
-    <Key android:codes="110" android:keyLabel="n"/>
-    <Key android:codes="109" android:keyLabel="m"/>
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-         android:keyEdgeFlags="right" android:isRepeatable="true"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="Z"/>
+    <Key android:codes="120" android:keyLabel="X"/>
+    <Key android:codes="99" android:keyLabel="C"/>
+    <Key android:codes="118" android:keyLabel="V"/>
+    <Key android:codes="98" android:keyLabel="B"/>
+    <Key android:codes="110" android:keyLabel="N"/>
+    <Key android:codes="109" android:keyLabel="M"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b"
-	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left"/>
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p"/>
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="33" android:keyLabel="!"/>
     <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="33" android:keyLabel="!"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="63" android:keyLabel="\?"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="63" android:keyLabel="\?"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_half_symbols.xml b/res/xml/keyboard_qwerty_jp_half_symbols.xml
index 4621b9e..6ce9cf6 100644
--- a/res/xml/keyboard_qwerty_jp_half_symbols.xml
+++ b/res/xml/keyboard_qwerty_jp_half_symbols.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,14 +15,15 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-    android:keyWidth="10%p"
-    android:horizontalGap="0dip"
-    android:verticalGap="0dip"
-    android:keyHeight="@dimen/key_height"
+    xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
     >
 
     <Row>
-        <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/>
+        <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
         <Key android:codes="50" android:keyLabel="2"/>
         <Key android:codes="51" android:keyLabel="3"/>
         <Key android:codes="52" android:keyLabel="4"/>
@@ -35,7 +36,7 @@
     </Row>
     
     <Row>
-        <Key android:codes="64" android:keyLabel="\@" android:keyEdgeFlags="left"/>
+        <Key android:codes="64" android:keyLabel="\@" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
         <Key android:codes="35" android:keyLabel="\#"/>
         <Key android:codes="37" android:keyLabel="%"/>
         <Key android:codes="38" android:keyLabel="&amp;"/>
@@ -47,9 +48,10 @@
         <Key android:codes="93" android:keyLabel="]" android:keyEdgeFlags="right"/>
     </Row>
     
-    <Row>
-        <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-             android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
+    <Row android:horizontalGap="0.82%p">
+        <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b"
+             android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+             android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
         <Key android:codes="47" android:keyLabel="/" />
         <Key android:codes="40" android:keyLabel="("/>
         <Key android:codes="41" android:keyLabel=")"/>
@@ -57,21 +59,26 @@
         <Key android:codes="59" android:keyLabel=";"/>
         <Key android:codes="33" android:keyLabel="!" />
         <Key android:codes="63" android:keyLabel="\?"/>
-        <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-             android:keyEdgeFlags="right" android:isRepeatable="true"/>
+        <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+             android:keyWidth="13.9%p"
+             android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
     </Row>
     
-    <Row  android:rowEdgeFlags="bottom">
-        <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_num" android:iconPreview="@drawable/key_mode_change_b"
-	         android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-             android:keyWidth="15%p" android:keyEdgeFlags="left" />
-        <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-             android:keyWidth="15%p" />
+    <Row  android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+        <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b"
+	         android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+             android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+        <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+             android:keyWidth="15%p" wnn:isSecondKey="true" />
+        <Key android:codes="44" android:keyLabel=","/>
         <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-             android:keyWidth="30%p" android:isRepeatable="true"/>
-        <Key android:codes="44" android:keyLabel="," android:keyWidth="12.5%p" />
-        <Key android:codes="46" android:keyLabel="." android:keyWidth="12.5%p" />
-        <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" 
-             android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+             android:keyWidth="15.1%p" android:isRepeatable="true"/>
+        <Key android:codes="46" android:keyLabel="."/>
+        <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+             android:isRepeatable="true" wnn:isSecondKey="true"/>
+        <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+             android:isRepeatable="true" wnn:isSecondKey="true"/>
+        <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+             android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
     </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_half_symbols_shift.xml b/res/xml/keyboard_qwerty_jp_half_symbols_shift.xml
index e7871f1..5df9fec 100644
--- a/res/xml/keyboard_qwerty_jp_half_symbols_shift.xml
+++ b/res/xml/keyboard_qwerty_jp_half_symbols_shift.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,14 +15,15 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
-	  >
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
+      >
   
   <Row>
-    <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/>
+    <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="50" android:keyLabel="2"/>
     <Key android:codes="51" android:keyLabel="3"/>
     <Key android:codes="52" android:keyLabel="4"/>
@@ -35,7 +36,7 @@
   </Row>
   
   <Row>
-    <Key android:codes="126" android:keyLabel="~" android:keyEdgeFlags="left"/>
+    <Key android:codes="126" android:keyLabel="~" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
     <Key android:codes="94" android:keyLabel="^"/>
     <Key android:codes="165" android:keyLabel="¥"/>
     <Key android:codes="36" android:keyLabel="$"/>
@@ -47,9 +48,10 @@
     <Key android:codes="125" android:keyLabel="}" android:keyEdgeFlags="right"/>
   </Row>
     
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p"  android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
     <Key android:codes="124" android:keyLabel="|"/>
     <Key android:codes="60" android:keyLabel="&lt;"/>
     <Key android:codes="62" android:keyLabel="&gt;"/>
@@ -57,21 +59,26 @@
     <Key android:codes="39" android:keyLabel="'"/>
     <Key android:codes="44" android:keyLabel="," />
     <Key android:codes="46" android:keyLabel="." />
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-	     android:keyEdgeFlags="right" android:isRepeatable="true"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+	     android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_num" android:iconPreview="@drawable/key_mode_change_b"
-         android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left" />
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p" />
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b"
+         android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="33" android:keyLabel="!"/>
     <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="33" android:keyLabel="!" android:keyWidth="12.5%p" />
-    <Key android:codes="63" android:keyLabel="\?" android:keyWidth="12.5%p" />
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="63" android:keyLabel="\?"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_qwerty_jp_shift.xml b/res/xml/keyboard_qwerty_jp_shift.xml
index 99b8ea8..d5f542b 100644
--- a/res/xml/keyboard_qwerty_jp_shift.xml
+++ b/res/xml/keyboard_qwerty_jp_shift.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -15,66 +15,71 @@
  limitations under the License.
 -->
 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-	  android:keyWidth="10%p"
-	  android:horizontalGap="0dip"
-	  android:verticalGap="0dip"
-	  android:keyHeight="@dimen/key_height"
+      xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn"
+      android:keyWidth="9%p"
+      android:horizontalGap="0.93%p"
+      android:verticalGap="8dip"
+      android:keyHeight="@dimen/key_height_qwerty"
 	  >
   
   <Row>
-    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
-    <Key android:codes="119" android:keyLabel="w"/>
-    <Key android:codes="101" android:keyLabel="e"/>
-    <Key android:codes="114" android:keyLabel="r"/>
-    <Key android:codes="116" android:keyLabel="t"/>
-    <Key android:codes="121" android:keyLabel="y"/>
-    <Key android:codes="117" android:keyLabel="u"/>
-    <Key android:codes="105" android:keyLabel="i"/>
-    <Key android:codes="111" android:keyLabel="o"/>
-    <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+    <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="119" android:keyLabel="W"/>
+    <Key android:codes="101" android:keyLabel="E"/>
+    <Key android:codes="114" android:keyLabel="R"/>
+    <Key android:codes="116" android:keyLabel="T"/>
+    <Key android:codes="121" android:keyLabel="Y"/>
+    <Key android:codes="117" android:keyLabel="U"/>
+    <Key android:codes="105" android:keyLabel="I"/>
+    <Key android:codes="111" android:keyLabel="O"/>
+    <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/>
   </Row>
   
   <Row>
-    <Key android:codes="97"  android:keyLabel="a" android:keyEdgeFlags="left"/>
-    <Key android:codes="115" android:keyLabel="s"/>
-    <Key android:codes="100" android:keyLabel="d"/>
-    <Key android:codes="102" android:keyLabel="f"/>
-    <Key android:codes="103" android:keyLabel="g"/>
-    <Key android:codes="104" android:keyLabel="h"/>
-    <Key android:codes="106" android:keyLabel="j"/>
-    <Key android:codes="107" android:keyLabel="k"/>
-    <Key android:codes="108" android:keyLabel="l"/>
+    <Key android:codes="97"  android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/>
+    <Key android:codes="115" android:keyLabel="S"/>
+    <Key android:codes="100" android:keyLabel="D"/>
+    <Key android:codes="102" android:keyLabel="F"/>
+    <Key android:codes="103" android:keyLabel="G"/>
+    <Key android:codes="104" android:keyLabel="H"/>
+    <Key android:codes="106" android:keyLabel="J"/>
+    <Key android:codes="107" android:keyLabel="K"/>
+    <Key android:codes="108" android:keyLabel="L"/>
     <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon"
          android:keyEdgeFlags="right"/>
   </Row>
   
-  <Row>
-    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p"
-         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/>
-    <Key android:codes="122" android:keyLabel="z"/>
-    <Key android:codes="120" android:keyLabel="x"/>
-    <Key android:codes="99" android:keyLabel="c"/>
-    <Key android:codes="118" android:keyLabel="v"/>
-    <Key android:codes="98" android:keyLabel="b"/>
-    <Key android:codes="110" android:keyLabel="n"/>
-    <Key android:codes="109" android:keyLabel="m"/>
-    <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" 
-         android:keyEdgeFlags="right" android:isRepeatable="true"/>
+  <Row android:horizontalGap="0.82%p">
+    <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift"
+         android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p"
+         android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="122" android:keyLabel="Z"/>
+    <Key android:codes="120" android:keyLabel="X"/>
+    <Key android:codes="99" android:keyLabel="C"/>
+    <Key android:codes="118" android:keyLabel="V"/>
+    <Key android:codes="98" android:keyLabel="B"/>
+    <Key android:codes="110" android:keyLabel="N"/>
+    <Key android:codes="109" android:keyLabel="M"/>
+    <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b"
+         android:keyWidth="13.9%p"
+         android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/>
   </Row>
   
-  <Row android:rowEdgeFlags="bottom">
-    <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_hira" android:iconPreview="@drawable/key_mode_change_b"
-	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp"
-         android:keyWidth="15%p" android:keyEdgeFlags="left"/>
-    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b"
-         android:keyWidth="15%p"/>
+  <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p">
+    <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b"
+	 android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p"
+         android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/>
+    <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b"
+         android:keyWidth="15%p" wnn:isSecondKey="true"/>
+    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/>
     <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space_conv" android:iconPreview="@drawable/key_qwerty_space_conv_b" 
-         android:keyWidth="30%p" android:isRepeatable="true"/>
-    <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"
-         android:keyWidth="12.5%p"/>
-    <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" 
-         android:keyWidth="15%p" android:keyEdgeFlags="right"/>
+         android:keyWidth="15.1%p" android:isRepeatable="true"/>
+    <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/>
+    <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b"
+         android:isRepeatable="true" wnn:isSecondKey="true"/>
+    <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b"
+         android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/>
   </Row>
 </Keyboard>
diff --git a/res/xml/keyboard_switch_key_jp.xml b/res/xml/keyboard_switch_key_jp.xml
index 0ba7976..f5e461c 100644
--- a/res/xml/keyboard_switch_key_jp.xml
+++ b/res/xml/keyboard_switch_key_jp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/xml/keyboard_switch_key_qwerty_jp.xml b/res/xml/keyboard_switch_key_qwerty_jp.xml
index 3c09b96..9305017 100644
--- a/res/xml/keyboard_switch_key_qwerty_jp.xml
+++ b/res/xml/keyboard_switch_key_qwerty_jp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/xml/method_ja.xml b/res/xml/method_ja.xml
index 4e5f157..b36d24a 100644
--- a/res/xml/method_ja.xml
+++ b/res/xml/method_ja.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -19,4 +19,9 @@
 
 <input-method xmlns:android="http://schemas.android.com/apk/res/android"
               android:settingsActivity="jp.co.omronsoft.openwnn.OpenWnnControlPanelJAJP"
-/>
+              >
+   <subtype android:label="@string/label_subtype_generic"
+           android:imeSubtypeLocale="ja"
+           android:imeSubtypeMode="keyboard"
+   />
+</input-method>
diff --git a/res/xml/openwnn_pref_ja.xml b/res/xml/openwnn_pref_ja.xml
index 6de5fbf..bc90ddd 100644
--- a/res/xml/openwnn_pref_ja.xml
+++ b/res/xml/openwnn_pref_ja.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -23,7 +23,8 @@
 			android:summary="@string/preference_key_sound_summary"/>
     <CheckBoxPreference android:key="key_vibration"
 			android:title="@string/preference_key_vibration_title"
-			android:summary="@string/preference_key_vibration_summary"/>
+			android:summary="@string/preference_key_vibration_summary"
+			android:defaultValue="true" />
     <CheckBoxPreference android:key="popup_preview"
 			android:title="@string/preference_preview_title"
 			android:summary="@string/preference_preview_summary"
@@ -41,20 +42,31 @@
 			android:defaultValue="keyboard_android_default" />
   </PreferenceCategory>
     
-  <PreferenceCategory android:title="@string/preference_conversion_menu">
-    <CheckBoxPreference android:key="opt_enable_learning"
-			android:title="@string/preference_input_learning_title"
+  <PreferenceCategory android:title="@string/preference_conversion_menu_ja">
+    <CheckBoxPreference android:key="opt_enable_learning_ja"
+			android:title="@string/preference_input_learning_title_ja"
 			android:summary="@string/preference_input_learning_summary"
 			android:defaultValue="true" />
-    <CheckBoxPreference android:key="opt_prediction"
-			android:title="@string/preference_prediction_title"
+    <CheckBoxPreference android:key="opt_prediction_ja"
+			android:title="@string/preference_prediction_title_ja"
 			android:summary="@string/preference_prediction_summary"
 			android:defaultValue="true" />
-    <CheckBoxPreference android:key="opt_spell_correction"
-			android:title="@string/preference_correct_spell_title"
+  </PreferenceCategory>
+
+  <PreferenceCategory android:title="@string/preference_conversion_menu_en">
+    <CheckBoxPreference android:key="opt_enable_learning_en"
+			android:title="@string/preference_input_learning_title_en"
+			android:summary="@string/preference_input_learning_summary"
+			android:defaultValue="true" />
+    <CheckBoxPreference android:key="opt_prediction_en"
+			android:title="@string/preference_prediction_title_en"
+			android:summary="@string/preference_prediction_summary"
+			android:defaultValue="false" />
+    <CheckBoxPreference android:key="opt_spell_correction_en"
+			android:title="@string/preference_correct_spell_title_en"
 			android:summary="@string/preference_correct_spell_summary"
 			android:defaultValue="true"
-			android:dependency="opt_prediction" />
+			android:dependency="opt_prediction_en" />
   </PreferenceCategory>
     
   <PreferenceCategory android:title="@string/preference_dictionary_menu">
diff --git a/res/xml/symbols_china_list.xml b/res/xml/symbols_china_list.xml
index a9fc71b..3e9839d 100644
--- a/res/xml/symbols_china_list.xml
+++ b/res/xml/symbols_china_list.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/xml/symbols_japan_emoji_list.xml b/res/xml/symbols_japan_emoji_list.xml
new file mode 100644
index 0000000..22e3004
--- /dev/null
+++ b/res/xml/symbols_japan_emoji_list.xml
@@ -0,0 +1,825 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!--symbols -->
+<keystring>
+
+<string value="\udbb8\udc00"/>
+<string value="\udbb8\udc01"/>
+<string value="\udbb8\udc02"/>
+<string value="\udbb8\udc03"/>
+<string value="\udbb8\udc04"/>
+<string value="\udbb8\udc05"/>
+<string value="\udbb8\udc06"/>
+<string value="\udbb8\udc07"/>
+<string value="\udbb8\udc08"/>
+<string value="\udbb8\udc09"/>
+<string value="\udbb8\udc0a"/>
+<string value="\udbb8\udc0b"/>
+<string value="\udbb8\udc0c"/>
+<string value="\udbb8\udc0d"/>
+<string value="\udbb8\udc0e"/>
+<string value="\udbb8\udc0f"/>
+<string value="\udbb8\udc10"/>
+<string value="\udbb8\udc11"/>
+<string value="\udbb8\udc12"/>
+<string value="\udbb8\udc13"/>
+<string value="\udbb8\udc14"/>
+<string value="\udbb8\udc15"/>
+<string value="\udbb8\udc16"/>
+<string value="\udbb8\udc17"/>
+<string value="\udbb8\udc18"/>
+<string value="\udbb8\udc19"/>
+<string value="\udbb8\udc1a"/>
+<string value="\udbb8\udc1b"/>
+<string value="\udbb8\udc1c"/>
+<string value="\udbb8\udc1d"/>
+<string value="\udbb8\udc1e"/>
+<string value="\udbb8\udc1f"/>
+<string value="\udbb8\udc20"/>
+<string value="\udbb8\udc21"/>
+<string value="\udbb8\udc22"/>
+<string value="\udbb8\udc23"/>
+<string value="\udbb8\udc24"/>
+<string value="\udbb8\udc25"/>
+<string value="\udbb8\udc26"/>
+<string value="\udbb8\udc27"/>
+<string value="\udbb8\udc28"/>
+<string value="\udbb8\udc29"/>
+<string value="\udbb8\udc2a"/>
+<string value="\udbb8\udc2b"/>
+<string value="\udbb8\udc2c"/>
+<string value="\udbb8\udc2d"/>
+<string value="\udbb8\udc2e"/>
+<string value="\udbb8\udc2f"/>
+<string value="\udbb8\udc30"/>
+<string value="\udbb8\udc31"/>
+<string value="\udbb8\udc32"/>
+<string value="\udbb8\udc33"/>
+<string value="\udbb8\udc34"/>
+<string value="\udbb8\udc35"/>
+<string value="\udbb8\udc36"/>
+<string value="\udbb8\udc37"/>
+<string value="\udbb8\udc38"/>
+<string value="\udbb8\udc39"/>
+<string value="\udbb8\udc3a"/>
+<string value="\udbb8\udc3b"/>
+<string value="\udbb8\udc3c"/>
+<string value="\udbb8\udc3d"/>
+<string value="\udbb8\udc3e"/>
+<string value="\udbb8\udc3f"/>
+<string value="\udbb8\udc40"/>
+<string value="\udbb8\udc41"/>
+<string value="\udbb8\udc42"/>
+<string value="\udbb8\udc43"/>
+<string value="\udbb8\udc44"/>
+<string value="\udbb8\udc45"/>
+<string value="\udbb8\udc46"/>
+<string value="\udbb8\udc47"/>
+<string value="\udbb8\udc48"/>
+<string value="\udbb8\udc49"/>
+<string value="\udbb8\udc4a"/>
+<string value="\udbb8\udc4b"/>
+<string value="\udbb8\udc4c"/>
+<string value="\udbb8\udc4d"/>
+<string value="\udbb8\udc4e"/>
+<string value="\udbb8\udc4f"/>
+<string value="\udbb8\udc50"/>
+<string value="\udbb8\udc51"/>
+<string value="\udbb8\udc52"/>
+<string value="\udbb8\udc53"/>
+<string value="\udbb8\udc54"/>
+<string value="\udbb8\udc55"/>
+<string value="\udbb8\udc56"/>
+<string value="\udbb8\udc57"/>
+<string value="\udbb8\udc58"/>
+<string value="\udbb8\udc59"/>
+<string value="\udbb8\udc5a"/>
+<string value="\udbb8\udc5b"/>
+<string value="\udbb8\udd90"/>
+<string value="\udbb8\udd91"/>
+<string value="\udbb8\udd92"/>
+<string value="\udbb8\udd93"/>
+<string value="\udbb8\udd94"/>
+<string value="\udbb8\udd95"/>
+<string value="\udbb8\udd96"/>
+<string value="\udbb8\udd97"/>
+<string value="\udbb8\udd98"/>
+<string value="\udbb8\udd99"/>
+<string value="\udbb8\udd9a"/>
+<string value="\udbb8\udd9b"/>
+<string value="\udbb8\udd9c"/>
+<string value="\udbb8\udd9d"/>
+<string value="\udbb8\udd9e"/>
+<string value="\udbb8\udd9f"/>
+<string value="\udbb8\udda0"/>
+<string value="\udbb8\udda1"/>
+<string value="\udbb8\udda2"/>
+<string value="\udbb8\udda3"/>
+<string value="\udbb8\udda4"/>
+<string value="\udbb8\udda5"/>
+<string value="\udbb8\udda6"/>
+<string value="\udbb8\udda7"/>
+<string value="\udbb8\udda8"/>
+<string value="\udbb8\udda9"/>
+<string value="\udbb8\uddaa"/>
+<string value="\udbb8\uddab"/>
+<string value="\udbb8\uddac"/>
+<string value="\udbb8\uddad"/>
+<string value="\udbb8\uddae"/>
+<string value="\udbb8\uddaf"/>
+<string value="\udbb8\uddb0"/>
+<string value="\udbb8\uddb1"/>
+<string value="\udbb8\uddb2"/>
+<string value="\udbb8\uddb3"/>
+<string value="\udbb8\uddb4"/>
+<string value="\udbb8\uddb5"/>
+<string value="\udbb8\uddb6"/>
+<string value="\udbb8\uddb7"/>
+<string value="\udbb8\uddb8"/>
+<string value="\udbb8\uddb9"/>
+<string value="\udbb8\uddba"/>
+<string value="\udbb8\uddbb"/>
+<string value="\udbb8\uddbc"/>
+<string value="\udbb8\uddbd"/>
+<string value="\udbb8\uddbe"/>
+<string value="\udbb8\uddbf"/>
+<string value="\udbb8\uddc0"/>
+<string value="\udbb8\uddc1"/>
+<string value="\udbb8\uddc2"/>
+<string value="\udbb8\uddc3"/>
+<string value="\udbb8\uddc4"/>
+<string value="\udbb8\uddc5"/>
+<string value="\udbb8\uddc6"/>
+<string value="\udbb8\uddc7"/>
+<string value="\udbb8\uddc8"/>
+<string value="\udbb8\uddc9"/>
+<string value="\udbb8\uddca"/>
+<string value="\udbb8\uddcb"/>
+<string value="\udbb8\uddcc"/>
+<string value="\udbb8\uddcd"/>
+<string value="\udbb8\uddce"/>
+<string value="\udbb8\uddcf"/>
+<string value="\udbb8\uddd0"/>
+<string value="\udbb8\uddd1"/>
+<string value="\udbb8\uddd2"/>
+<string value="\udbb8\uddd3"/>
+<string value="\udbb8\uddd4"/>
+<string value="\udbb8\uddd5"/>
+<string value="\udbb8\uddd6"/>
+<string value="\udbb8\uddd7"/>
+<string value="\udbb8\uddd8"/>
+<string value="\udbb8\uddd9"/>
+<string value="\udbb8\uddda"/>
+<string value="\udbb8\udddb"/>
+<string value="\udbb8\udddc"/>
+<string value="\udbb8\udddd"/>
+<string value="\udbb8\uddde"/>
+<string value="\udbb8\udddf"/>
+<string value="\udbb8\udde0"/>
+<string value="\udbb8\udde1"/>
+<string value="\udbb8\udde2"/>
+<string value="\udbb8\udde3"/>
+<string value="\udbb8\udf20"/>
+<string value="\udbb8\udf21"/>
+<string value="\udbb8\udf22"/>
+<string value="\udbb8\udf23"/>
+<string value="\udbb8\udf24"/>
+<string value="\udbb8\udf25"/>
+<string value="\udbb8\udf26"/>
+<string value="\udbb8\udf27"/>
+<string value="\udbb8\udf28"/>
+<string value="\udbb8\udf29"/>
+<string value="\udbb8\udf2a"/>
+<string value="\udbb8\udf2b"/>
+<string value="\udbb8\udf2c"/>
+<string value="\udbb8\udf2d"/>
+<string value="\udbb8\udf2e"/>
+<string value="\udbb8\udf2f"/>
+<string value="\udbb8\udf30"/>
+<string value="\udbb8\udf31"/>
+<string value="\udbb8\udf32"/>
+<string value="\udbb8\udf33"/>
+<string value="\udbb8\udf34"/>
+<string value="\udbb8\udf35"/>
+<string value="\udbb8\udf36"/>
+<string value="\udbb8\udf37"/>
+<string value="\udbb8\udf38"/>
+<string value="\udbb8\udf39"/>
+<string value="\udbb8\udf3a"/>
+<string value="\udbb8\udf3b"/>
+<string value="\udbb8\udf3c"/>
+<string value="\udbb8\udf3d"/>
+<string value="\udbb8\udf3e"/>
+<string value="\udbb8\udf3f"/>
+<string value="\udbb8\udf40"/>
+<string value="\udbb8\udf41"/>
+<string value="\udbb8\udf42"/>
+<string value="\udbb8\udf43"/>
+<string value="\udbb8\udf44"/>
+<string value="\udbb8\udf45"/>
+<string value="\udbb8\udf46"/>
+<string value="\udbb8\udf47"/>
+<string value="\udbb8\udf48"/>
+<string value="\udbb8\udf49"/>
+<string value="\udbb8\udf4a"/>
+<string value="\udbb8\udf4b"/>
+<string value="\udbb8\udf4c"/>
+<string value="\udbb8\udf4d"/>
+<string value="\udbb8\udf4e"/>
+<string value="\udbb8\udf4f"/>
+<string value="\udbb8\udf50"/>
+<string value="\udbb8\udf51"/>
+<string value="\udbb8\udf52"/>
+<string value="\udbb8\udf53"/>
+<string value="\udbb8\udf54"/>
+<string value="\udbb8\udf55"/>
+<string value="\udbb8\udf56"/>
+<string value="\udbb8\udf57"/>
+<string value="\udbb8\udf58"/>
+<string value="\udbb8\udf59"/>
+<string value="\udbb8\udf5a"/>
+<string value="\udbb8\udf5b"/>
+<string value="\udbb8\udf5c"/>
+<string value="\udbb8\udf5d"/>
+<string value="\udbb8\udf5e"/>
+<string value="\udbb8\udf5f"/>
+<string value="\udbb8\udf60"/>
+<string value="\udbb8\udf61"/>
+<string value="\udbb8\udf62"/>
+<string value="\udbb8\udf63"/>
+<string value="\udbb8\udf64"/>
+<string value="\udbb8\udf65"/>
+<string value="\udbb8\udf66"/>
+<string value="\udbb8\udf67"/>
+<string value="\udbb8\udf68"/>
+<string value="\udbb8\udf69"/>
+<string value="\udbb9\udcb0"/>
+<string value="\udbb9\udcb1"/>
+<string value="\udbb9\udcb2"/>
+<string value="\udbb9\udcb3"/>
+<string value="\udbb9\udcb4"/>
+<string value="\udbb9\udcb5"/>
+<string value="\udbb9\udcb6"/>
+<string value="\udbb9\udcb7"/>
+<string value="\udbb9\udcb8"/>
+<string value="\udbb9\udcb9"/>
+<string value="\udbb9\udcba"/>
+<string value="\udbb9\udcbb"/>
+<string value="\udbb9\udcbc"/>
+<string value="\udbb9\udcbd"/>
+<string value="\udbb9\udcbe"/>
+<string value="\udbb9\udcbf"/>
+<string value="\udbb9\udcc0"/>
+<string value="\udbb9\udcc1"/>
+<string value="\udbb9\udcc2"/>
+<string value="\udbb9\udcc3"/>
+<string value="\udbb9\udcc4"/>
+<string value="\udbb9\udcc5"/>
+<string value="\udbb9\udcc6"/>
+<string value="\udbb9\udcc7"/>
+<string value="\udbb9\udcc8"/>
+<string value="\udbb9\udcc9"/>
+<string value="\udbb9\udcca"/>
+<string value="\udbb9\udccb"/>
+<string value="\udbb9\udccc"/>
+<string value="\udbb9\udccd"/>
+<string value="\udbb9\udcce"/>
+<string value="\udbb9\udccf"/>
+<string value="\udbb9\udcd0"/>
+<string value="\udbb9\udcd1"/>
+<string value="\udbb9\udcd2"/>
+<string value="\udbb9\udcd3"/>
+<string value="\udbb9\udcd4"/>
+<string value="\udbb9\udcd5"/>
+<string value="\udbb9\udcd6"/>
+<string value="\udbb9\udcd7"/>
+<string value="\udbb9\udcd8"/>
+<string value="\udbb9\udcd9"/>
+<string value="\udbb9\udcda"/>
+<string value="\udbb9\udcdb"/>
+<string value="\udbb9\udcdc"/>
+<string value="\udbb9\udcdd"/>
+<string value="\udbb9\udcde"/>
+<string value="\udbb9\udcdf"/>
+<string value="\udbb9\udce0"/>
+<string value="\udbb9\udce1"/>
+<string value="\udbb9\udce2"/>
+<string value="\udbb9\udce3"/>
+<string value="\udbb9\udce4"/>
+<string value="\udbb9\udce5"/>
+<string value="\udbb9\udce6"/>
+<string value="\udbb9\udce7"/>
+<string value="\udbb9\udce8"/>
+<string value="\udbb9\udce9"/>
+<string value="\udbb9\udcea"/>
+<string value="\udbb9\udceb"/>
+<string value="\udbb9\udcec"/>
+<string value="\udbb9\udced"/>
+<string value="\udbb9\udcee"/>
+<string value="\udbb9\udcef"/>
+<string value="\udbb9\udcf0"/>
+<string value="\udbb9\udcf1"/>
+<string value="\udbb9\udcf2"/>
+<string value="\udbb9\udcf3"/>
+<string value="\udbb9\udcf4"/>
+<string value="\udbb9\udcf5"/>
+<string value="\udbb9\udcf6"/>
+<string value="\udbb9\udcf7"/>
+<string value="\udbb9\udcf8"/>
+<string value="\udbb9\udcf9"/>
+<string value="\udbb9\udcfa"/>
+<string value="\udbb9\udcfb"/>
+<string value="\udbb9\udcfc"/>
+<string value="\udbb9\udcfd"/>
+<string value="\udbb9\udcfe"/>
+<string value="\udbb9\udcff"/>
+<string value="\udbb9\udd00"/>
+<string value="\udbb9\udd01"/>
+<string value="\udbb9\udd02"/>
+<string value="\udbb9\udd03"/>
+<string value="\udbb9\udd04"/>
+<string value="\udbb9\udd05"/>
+<string value="\udbb9\udd06"/>
+<string value="\udbb9\udd07"/>
+<string value="\udbb9\udd08"/>
+<string value="\udbb9\udd09"/>
+<string value="\udbb9\udd0a"/>
+<string value="\udbb9\udd0b"/>
+<string value="\udbb9\udd0c"/>
+<string value="\udbb9\udd0d"/>
+<string value="\udbb9\udd0e"/>
+<string value="\udbb9\udd0f"/>
+<string value="\udbb9\udd10"/>
+<string value="\udbb9\udd11"/>
+<string value="\udbb9\udd12"/>
+<string value="\udbb9\udd13"/>
+<string value="\udbb9\udd14"/>
+<string value="\udbb9\udd15"/>
+<string value="\udbb9\udd16"/>
+<string value="\udbb9\udd17"/>
+<string value="\udbb9\udd18"/>
+<string value="\udbb9\udd19"/>
+<string value="\udbb9\udd1a"/>
+<string value="\udbb9\udd1b"/>
+<string value="\udbb9\udd1c"/>
+<string value="\udbb9\udd1d"/>
+<string value="\udbb9\udd1e"/>
+<string value="\udbb9\udd1f"/>
+<string value="\udbb9\udd20"/>
+<string value="\udbb9\udd21"/>
+<string value="\udbb9\udd22"/>
+<string value="\udbb9\udd23"/>
+<string value="\udbb9\udd24"/>
+<string value="\udbb9\udd25"/>
+<string value="\udbb9\udd26"/>
+<string value="\udbb9\udd27"/>
+<string value="\udbb9\udd28"/>
+<string value="\udbb9\udd29"/>
+<string value="\udbb9\udd2a"/>
+<string value="\udbb9\udd2b"/>
+<string value="\udbb9\udd2c"/>
+<string value="\udbb9\udd2d"/>
+<string value="\udbb9\udd2e"/>
+<string value="\udbb9\udd2f"/>
+<string value="\udbb9\udd30"/>
+<string value="\udbb9\udd31"/>
+<string value="\udbb9\udd32"/>
+<string value="\udbb9\udd33"/>
+<string value="\udbb9\udd34"/>
+<string value="\udbb9\udd35"/>
+<string value="\udbb9\udd36"/>
+<string value="\udbb9\udd37"/>
+<string value="\udbb9\udd38"/>
+<string value="\udbb9\udd39"/>
+<string value="\udbb9\udd3a"/>
+<string value="\udbb9\udd3b"/>
+<string value="\udbb9\udd3c"/>
+<string value="\udbb9\udd3d"/>
+<string value="\udbb9\udd3e"/>
+<string value="\udbb9\udd3f"/>
+<string value="\udbb9\udd40"/>
+<string value="\udbb9\udd41"/>
+<string value="\udbb9\udd42"/>
+<string value="\udbb9\udd43"/>
+<string value="\udbb9\udd44"/>
+<string value="\udbb9\udd45"/>
+<string value="\udbb9\udd46"/>
+<string value="\udbb9\udd47"/>
+<string value="\udbb9\udd48"/>
+<string value="\udbb9\udd49"/>
+<string value="\udbb9\udd4a"/>
+<string value="\udbb9\udd4b"/>
+<string value="\udbb9\udd4c"/>
+<string value="\udbb9\udd4d"/>
+<string value="\udbb9\udd4e"/>
+<string value="\udbb9\udd4f"/>
+<string value="\udbb9\udd50"/>
+<string value="\udbb9\udd51"/>
+<string value="\udbb9\udd52"/>
+<string value="\udbb9\udd53"/>
+<string value="\udbb9\udfd0"/>
+<string value="\udbb9\udfd1"/>
+<string value="\udbb9\udfd2"/>
+<string value="\udbb9\udfd3"/>
+<string value="\udbb9\udfd4"/>
+<string value="\udbb9\udfd5"/>
+<string value="\udbb9\udfd6"/>
+<string value="\udbb9\udfd7"/>
+<string value="\udbb9\udfd8"/>
+<string value="\udbb9\udfd9"/>
+<string value="\udbb9\udfda"/>
+<string value="\udbb9\udfdb"/>
+<string value="\udbb9\udfdc"/>
+<string value="\udbb9\udfdd"/>
+<string value="\udbb9\udfde"/>
+<string value="\udbb9\udfdf"/>
+<string value="\udbb9\udfe0"/>
+<string value="\udbb9\udfe1"/>
+<string value="\udbb9\udfe2"/>
+<string value="\udbb9\udfe3"/>
+<string value="\udbb9\udfe4"/>
+<string value="\udbb9\udfe5"/>
+<string value="\udbb9\udfe6"/>
+<string value="\udbb9\udfe7"/>
+<string value="\udbb9\udfe8"/>
+<string value="\udbb9\udfe9"/>
+<string value="\udbb9\udfea"/>
+<string value="\udbb9\udfeb"/>
+<string value="\udbb9\udfec"/>
+<string value="\udbb9\udfed"/>
+<string value="\udbb9\udfee"/>
+<string value="\udbb9\udfef"/>
+<string value="\udbb9\udff0"/>
+<string value="\udbb9\udff1"/>
+<string value="\udbb9\udff2"/>
+<string value="\udbb9\udff3"/>
+<string value="\udbb9\udff4"/>
+<string value="\udbb9\udff5"/>
+<string value="\udbb9\udff6"/>
+<string value="\udbb9\udff7"/>
+<string value="\udbb9\udff8"/>
+<string value="\udbb9\udff9"/>
+<string value="\udbb9\udffa"/>
+<string value="\udbb9\udffb"/>
+<string value="\udbb9\udffc"/>
+<string value="\udbb9\udffd"/>
+<string value="\udbb9\udffe"/>
+<string value="\udbb9\udfff"/>
+<string value="\udbba\udc00"/>
+<string value="\udbba\udc01"/>
+<string value="\udbba\udc02"/>
+<string value="\udbba\udc03"/>
+<string value="\udbba\udc04"/>
+<string value="\udbba\udc05"/>
+<string value="\udbba\udc06"/>
+<string value="\udbba\udc07"/>
+<string value="\udbba\udc08"/>
+<string value="\udbba\udc09"/>
+<string value="\udbba\udc0a"/>
+<string value="\udbba\udc0b"/>
+<string value="\udbba\udc0c"/>
+<string value="\udbba\udc0d"/>
+<string value="\udbba\udc0e"/>
+<string value="\udbba\udc0f"/>
+<string value="\udbba\udc10"/>
+<string value="\udbba\udc11"/>
+<string value="\udbba\udc12"/>
+<string value="\udbba\udc13"/>
+<string value="\udbba\udc14"/>
+<string value="\udbba\udc15"/>
+<string value="\udbba\udc16"/>
+<string value="\udbba\udc17"/>
+<string value="\udbba\udc18"/>
+<string value="\udbba\udc19"/>
+<string value="\udbba\udc1a"/>
+<string value="\udbba\udc1b"/>
+<string value="\udbba\udc1c"/>
+<string value="\udbba\udc1d"/>
+<string value="\udbba\udc1e"/>
+<string value="\udbba\udc1f"/>
+<string value="\udbba\udc20"/>
+<string value="\udbba\udc21"/>
+<string value="\udbba\udc22"/>
+<string value="\udbba\udc23"/>
+<string value="\udbba\udc24"/>
+<string value="\udbba\udc25"/>
+<string value="\udbba\udc26"/>
+<string value="\udbba\udc27"/>
+<string value="\udbba\udc28"/>
+<string value="\udbba\udc29"/>
+<string value="\udbba\udc2a"/>
+<string value="\udbba\udc2b"/>
+<string value="\udbba\udc2c"/>
+<string value="\udbba\udc2d"/>
+<string value="\udbba\udc2e"/>
+<string value="\udbba\udc2f"/>
+<string value="\udbba\udc30"/>
+<string value="\udbba\udc31"/>
+<string value="\udbba\udc32"/>
+<string value="\udbba\udc33"/>
+<string value="\udbba\udc34"/>
+<string value="\udbba\udc35"/>
+<string value="\udbba\udc36"/>
+<string value="\udbba\udc37"/>
+<string value="\udbba\udc38"/>
+<string value="\udbba\udc39"/>
+<string value="\udbba\udc3a"/>
+<string value="\udbba\udc3b"/>
+<string value="\udbba\udc3c"/>
+<string value="\udbba\udd60"/>
+<string value="\udbba\udd61"/>
+<string value="\udbba\udd62"/>
+<string value="\udbba\udd63"/>
+<string value="\udbba\udd64"/>
+<string value="\udbba\udd65"/>
+<string value="\udbba\udd66"/>
+<string value="\udbba\udd67"/>
+<string value="\udbba\udd68"/>
+<string value="\udbba\udd69"/>
+<string value="\udbba\udd6a"/>
+<string value="\udbba\udd6b"/>
+<string value="\udbba\udd6c"/>
+<string value="\udbba\udd6d"/>
+<string value="\udbba\udd6e"/>
+<string value="\udbba\udd6f"/>
+<string value="\udbba\udd70"/>
+<string value="\udbba\udd71"/>
+<string value="\udbba\udd72"/>
+<string value="\udbba\udd73"/>
+<string value="\udbba\udd74"/>
+<string value="\udbba\udd75"/>
+<string value="\udbba\udd76"/>
+<string value="\udbba\udd77"/>
+<string value="\udbba\udd78"/>
+<string value="\udbba\udd79"/>
+<string value="\udbba\udd7a"/>
+<string value="\udbba\udd7b"/>
+<string value="\udbba\udd7c"/>
+<string value="\udbba\udd7d"/>
+<string value="\udbba\udd7e"/>
+<string value="\udbba\udd7f"/>
+<string value="\udbba\udd80"/>
+<string value="\udbba\udd81"/>
+<string value="\udbba\udd82"/>
+<string value="\udbba\udd83"/>
+<string value="\udbba\udd84"/>
+<string value="\udbba\udd85"/>
+<string value="\udbba\udd86"/>
+<string value="\udbba\udd87"/>
+<string value="\udbba\udd88"/>
+<string value="\udbba\udef0"/>
+<string value="\udbba\udef1"/>
+<string value="\udbba\udef2"/>
+<string value="\udbba\udef3"/>
+<string value="\udbba\udef4"/>
+<string value="\udbba\udef5"/>
+<string value="\udbba\udef6"/>
+<string value="\udbba\udef7"/>
+<string value="\udbba\udef8"/>
+<string value="\udbba\udef9"/>
+<string value="\udbba\udefa"/>
+<string value="\udbba\udefb"/>
+<string value="\udbba\udefc"/>
+<string value="\udbba\udefd"/>
+<string value="\udbba\udefe"/>
+<string value="\udbba\udeff"/>
+<string value="\udbba\udf00"/>
+<string value="\udbba\udf01"/>
+<string value="\udbba\udf02"/>
+<string value="\udbba\udf03"/>
+<string value="\udbba\udf04"/>
+<string value="\udbba\udf05"/>
+<string value="\udbba\udf06"/>
+<string value="\udbba\udf07"/>
+<string value="\udbba\udf08"/>
+<string value="\udbba\udf09"/>
+<string value="\udbba\udf0a"/>
+<string value="\udbba\udf0b"/>
+<string value="\udbba\udf0c"/>
+<string value="\udbba\udf0d"/>
+<string value="\udbba\udf0e"/>
+<string value="\udbba\udf0f"/>
+<string value="\udbba\udf10"/>
+<string value="\udbba\udf11"/>
+<string value="\udbba\udf12"/>
+<string value="\udbba\udf13"/>
+<string value="\udbba\udf14"/>
+<string value="\udbba\udf15"/>
+<string value="\udbba\udf16"/>
+<string value="\udbba\udf17"/>
+<string value="\udbba\udf18"/>
+<string value="\udbba\udf19"/>
+<string value="\udbba\udf1a"/>
+<string value="\udbba\udf1b"/>
+<string value="\udbba\udf1c"/>
+<string value="\udbba\udf1d"/>
+<string value="\udbba\udf1e"/>
+<string value="\udbba\udf1f"/>
+<string value="\udbba\udf20"/>
+<string value="\udbba\udf21"/>
+<string value="\udbba\udf22"/>
+<string value="\udbba\udf23"/>
+<string value="\udbba\udf24"/>
+<string value="\udbba\udf25"/>
+<string value="\udbba\udf26"/>
+<string value="\udbba\udf27"/>
+<string value="\udbba\udf28"/>
+<string value="\udbba\udf29"/>
+<string value="\udbba\udf2a"/>
+<string value="\udbba\udf2b"/>
+<string value="\udbba\udf2c"/>
+<string value="\udbba\udf2d"/>
+<string value="\udbba\udf2e"/>
+<string value="\udbba\udf2f"/>
+<string value="\udbba\udf30"/>
+<string value="\udbba\udf31"/>
+<string value="\udbba\udf32"/>
+<string value="\udbba\udf33"/>
+<string value="\udbba\udf34"/>
+<string value="\udbba\udf35"/>
+<string value="\udbba\udf36"/>
+<string value="\udbba\udf37"/>
+<string value="\udbba\udf38"/>
+<string value="\udbba\udf39"/>
+<string value="\udbba\udf3a"/>
+<string value="\udbba\udf3b"/>
+<string value="\udbba\udf3c"/>
+<string value="\udbba\udf3d"/>
+<string value="\udbba\udf3e"/>
+<string value="\udbba\udf3f"/>
+<string value="\udbba\udf40"/>
+<string value="\udbba\udf41"/>
+<string value="\udbba\udf42"/>
+<string value="\udbba\udf43"/>
+<string value="\udbba\udf44"/>
+<string value="\udbba\udf45"/>
+<string value="\udbba\udf46"/>
+<string value="\udbba\udf47"/>
+<string value="\udbba\udf48"/>
+<string value="\udbba\udf49"/>
+<string value="\udbba\udf4a"/>
+<string value="\udbba\udf4b"/>
+<string value="\udbba\udf4c"/>
+<string value="\udbba\udf4d"/>
+<string value="\udbba\udf4e"/>
+<string value="\udbba\udf4f"/>
+<string value="\udbba\udf50"/>
+<string value="\udbba\udf51"/>
+<string value="\udbba\udf52"/>
+<string value="\udbba\udf53"/>
+<string value="\udbba\udf54"/>
+<string value="\udbba\udf55"/>
+<string value="\udbba\udf56"/>
+<string value="\udbba\udf57"/>
+<string value="\udbba\udf58"/>
+<string value="\udbba\udf59"/>
+<string value="\udbba\udf5a"/>
+<string value="\udbba\udf5b"/>
+<string value="\udbba\udf5c"/>
+<string value="\udbba\udf5d"/>
+<string value="\udbba\udf5e"/>
+<string value="\udbba\udf5f"/>
+<string value="\udbba\udf60"/>
+<string value="\udbba\udf61"/>
+<string value="\udbba\udf62"/>
+<string value="\udbba\udf63"/>
+<string value="\udbba\udf64"/>
+<string value="\udbba\udf65"/>
+<string value="\udbba\udf66"/>
+<string value="\udbba\udf67"/>
+<string value="\udbba\udf68"/>
+<string value="\udbba\udf69"/>
+<string value="\udbba\udf6a"/>
+<string value="\udbba\udf6b"/>
+<string value="\udbba\udf6c"/>
+<string value="\udbba\udf6d"/>
+<string value="\udbba\udf6e"/>
+<string value="\udbba\udf6f"/>
+<string value="\udbba\udf70"/>
+<string value="\udbba\udf71"/>
+<string value="\udbba\udf72"/>
+<string value="\udbba\udf73"/>
+<string value="\udbba\udf74"/>
+<string value="\udbba\udf75"/>
+<string value="\udbba\udf76"/>
+<string value="\udbba\udf77"/>
+<string value="\udbba\udf78"/>
+<string value="\udbba\udf79"/>
+<string value="\udbba\udf7a"/>
+<string value="\udbba\udf7b"/>
+<string value="\udbba\udf7c"/>
+<string value="\udbba\udf7d"/>
+<string value="\udbba\udf7e"/>
+<string value="\udbba\udf7f"/>
+<string value="\udbba\udf80"/>
+<string value="\udbba\udf81"/>
+<string value="\udbba\udf82"/>
+<string value="\udbba\udf83"/>
+<string value="\udbba\udf84"/>
+<string value="\udbba\udf85"/>
+<string value="\udbba\udf86"/>
+<string value="\udbba\udf87"/>
+<string value="\udbba\udf88"/>
+<string value="\udbba\udf89"/>
+<string value="\udbba\udf8a"/>
+<string value="\udbba\udf8b"/>
+<string value="\udbba\udf8c"/>
+<string value="\udbba\udf8d"/>
+<string value="\udbba\udf8e"/>
+<string value="\udbba\udf8f"/>
+<string value="\udbba\udf90"/>
+<string value="\udbba\udf91"/>
+<string value="\udbba\udf92"/>
+<string value="\udbba\udf93"/>
+<string value="\udbba\udf94"/>
+<string value="\udbba\udf95"/>
+<string value="\udbba\udf96"/>
+<string value="\udbba\udf97"/>
+<string value="\udbba\udf98"/>
+<string value="\udbba\udf99"/>
+<string value="\udbba\udf9a"/>
+<string value="\udbba\udf9b"/>
+<string value="\udbba\udf9c"/>
+<string value="\udbba\udf9d"/>
+<string value="\udbba\udf9e"/>
+<string value="\udbba\udf9f"/>
+<string value="\udbba\udfa0"/>
+<string value="\udbba\udfa1"/>
+<string value="\udbba\udfa2"/>
+<string value="\udbbb\ude10"/>
+<string value="\udbbb\ude11"/>
+<string value="\udbbb\ude12"/>
+<string value="\udbbb\ude13"/>
+<string value="\udbbb\ude14"/>
+<string value="\udbbb\ude15"/>
+<string value="\udbbb\ude16"/>
+<string value="\udbbb\ude17"/>
+<string value="\udbbb\ude18"/>
+<string value="\udbbb\ude19"/>
+<string value="\udbbb\ude1a"/>
+<string value="\udbbb\ude1b"/>
+<string value="\udbbb\ude1c"/>
+<string value="\udbbb\ude1d"/>
+<string value="\udbbb\ude1e"/>
+<string value="\udbbb\ude1f"/>
+<string value="\udbbb\ude20"/>
+<string value="\udbbb\ude21"/>
+<string value="\udbbb\ude22"/>
+<string value="\udbbb\ude23"/>
+<string value="\udbbb\ude24"/>
+<string value="\udbbb\ude25"/>
+<string value="\udbbb\ude26"/>
+<string value="\udbbb\ude27"/>
+<string value="\udbbb\ude28"/>
+<string value="\udbbb\ude29"/>
+<string value="\udbbb\ude2a"/>
+<string value="\udbbb\ude2b"/>
+<string value="\udbbb\ude2c"/>
+<string value="\udbbb\ude2d"/>
+<string value="\udbbb\ude2e"/>
+<string value="\udbbb\ude2f"/>
+<string value="\udbbb\ude30"/>
+<string value="\udbbb\ude31"/>
+<string value="\udbbb\ude32"/>
+<string value="\udbbb\ude33"/>
+<string value="\udbbb\ude40"/>
+<string value="\udbbb\ude41"/>
+<string value="\udbbb\ude42"/>
+<string value="\udbbb\ude43"/>
+<string value="\udbbb\ude44"/>
+<string value="\udbbb\ude45"/>
+<string value="\udbbb\ude46"/>
+<string value="\udbbb\ude47"/>
+<string value="\udbbb\ude48"/>
+<string value="\udbbb\ude49"/>
+<string value="\udbbb\ude4a"/>
+<string value="\udbbb\ude70"/>
+<string value="\udbbb\ude71"/>
+<string value="\udbbb\ude72"/>
+<string value="\udbbb\ude73"/>
+<string value="\udbbb\ude74"/>
+<string value="\udbbb\ude75"/>
+<string value="\udbbb\ude76"/>
+<string value="\udbbb\ude77"/>
+<string value="\udbbb\ude78"/>
+<string value="\udbbb\ude79"/>
+<string value="\udbbb\ude7a"/>
+<string value="\udbbb\ude7b"/>
+<string value="\udbbb\ude7c"/>
+<string value="\udbbb\ude7d"/>
+<string value="\udbbb\udea0"/>
+</keystring>
diff --git a/res/xml/symbols_japan_emoji_list1.xml b/res/xml/symbols_japan_emoji_list1.xml
new file mode 100644
index 0000000..f7506c5
--- /dev/null
+++ b/res/xml/symbols_japan_emoji_list1.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!--symbols -->
+<keystring>
+<!-- 1. Nature -->
+<!-- Weather -->
+<string value="\udbb8\udc00"/>
+<string value="\udbb8\udc01"/>
+<string value="\udbb8\udc02"/>
+<string value="\udbb8\udc03"/>
+<string value="\udbb8\udc04"/>
+<string value="\udbb8\udc05"/>
+<string value="\udbb8\udc06"/>
+<string value="\udbb8\udc07"/>
+<string value="\udbb8\udc08"/>
+<string value="\udbb8\udc09"/>
+<string value="\udbb8\udc0a"/>
+<string value="\udbb8\udc0b"/>
+<string value="\udbb8\udc0c"/>
+<string value="\udbb8\udc0d"/>
+<string value="\udbb8\udc0e"/>
+<string value="\udbb8\udc0f"/>
+<string value="\udbb8\udc10"/>
+<!-- Moon -->
+<string value="\udbb8\udc11"/>
+<string value="\udbb8\udc12"/>
+<string value="\udbb8\udc13"/>
+<string value="\udbb8\udc14"/>
+<string value="\udbb8\udc15"/>
+<string value="\udbb8\udc16"/>
+<string value="\udbb8\udc17"/>
+<!-- Time -->
+<string value="\udbb8\udc18"/>
+<string value="\udbb8\udc19"/>
+<string value="\udbb8\udc1a"/>
+<string value="\udbb8\udc1b"/>
+<string value="\udbb8\udc1c"/>
+<string value="\udbb8\udc1d"/>
+<string value="\udbb8\udc1e"/>
+<string value="\udbb8\udc1f"/>
+<string value="\udbb8\udc20"/>
+<string value="\udbb8\udc21"/>
+<string value="\udbb8\udc22"/>
+<string value="\udbb8\udc23"/>
+<string value="\udbb8\udc24"/>
+<string value="\udbb8\udc25"/>
+<string value="\udbb8\udc26"/>
+<string value="\udbb8\udc27"/>
+<string value="\udbb8\udc28"/>
+<string value="\udbb8\udc29"/>
+<string value="\udbb8\udc2a"/>
+<!-- Zodiacal Symbols -->
+<string value="\udbb8\udc2b"/>
+<string value="\udbb8\udc2c"/>
+<string value="\udbb8\udc2d"/>
+<string value="\udbb8\udc2e"/>
+<string value="\udbb8\udc2f"/>
+<string value="\udbb8\udc30"/>
+<string value="\udbb8\udc31"/>
+<string value="\udbb8\udc32"/>
+<string value="\udbb8\udc33"/>
+<string value="\udbb8\udc34"/>
+<string value="\udbb8\udc35"/>
+<string value="\udbb8\udc36"/>
+<string value="\udbb8\udc37"/>
+<!-- Places in Nature -->
+<string value="\udbb8\udc38"/>
+<string value="\udbb8\udc39"/>
+<string value="\udbb8\udc3a"/>
+<string value="\udbb8\udc3b"/>
+<!-- Plants -->
+<string value="\udbb8\udc3c"/>
+<string value="\udbb8\udc3d"/>
+<string value="\udbb8\udc3e"/>
+<string value="\udbb8\udc3f"/>
+<string value="\udbb8\udc40"/>
+<string value="\udbb8\udc41"/>
+<string value="\udbb8\udc42"/>
+<string value="\udbb8\udc43"/>
+<string value="\udbb8\udc44"/>
+<string value="\udbb8\udc45"/>
+<string value="\udbb8\udc46"/>
+<string value="\udbb8\udc47"/>
+<string value="\udbb8\udc48"/>
+<string value="\udbb8\udc49"/>
+<string value="\udbb8\udc4a"/>
+<string value="\udbb8\udc4b"/>
+<string value="\udbb8\udc4c"/>
+<string value="\udbb8\udc4d"/>
+<string value="\udbb8\udc4e"/>
+<!-- Fruits -->
+<string value="\udbb8\udc4f"/>
+<string value="\udbb8\udc50"/>
+<string value="\udbb8\udc51"/>
+<string value="\udbb8\udc52"/>
+<string value="\udbb8\udc53"/>
+<string value="\udbb8\udc54"/>
+<string value="\udbb8\udc55"/>
+<string value="\udbb8\udc56"/>
+<string value="\udbb8\udc57"/>
+<string value="\udbb8\udc58"/>
+<string value="\udbb8\udc59"/>
+<string value="\udbb8\udc5a"/>
+<string value="\udbb8\udc5b"/>
+<!-- 2. Human/Living Things -->
+<!-- Facial Parts -->
+<string value="\udbb8\udd90"/>
+<string value="\udbb8\udd91"/>
+<string value="\udbb8\udd92"/>
+<string value="\udbb8\udd93"/>
+<string value="\udbb8\udd94"/>
+<!-- Personal Care -->
+<string value="\udbb8\udd95"/>
+<string value="\udbb8\udd96"/>
+<string value="\udbb8\udd97"/>
+<string value="\udbb8\udd98"/>
+<string value="\udbb8\udd99"/>
+<!-- People / Personalities -->
+<string value="\udbb8\udd9a"/>
+<string value="\udbb8\udd9b"/>
+<string value="\udbb8\udd9c"/>
+<string value="\udbb8\udd9d"/>
+<string value="\udbb8\udd9e"/>
+<string value="\udbb8\udd9f"/>
+<string value="\udbb8\udda0"/>
+<string value="\udbb8\udda1"/>
+<string value="\udbb8\udda2"/>
+<string value="\udbb8\udda3"/>
+<string value="\udbb8\udda4"/>
+<string value="\udbb8\udda5"/>
+<string value="\udbb8\udda6"/>
+<string value="\udbb8\udda7"/>
+<string value="\udbb8\udda8"/>
+<string value="\udbb8\udda9"/>
+<string value="\udbb8\uddaa"/>
+<string value="\udbb8\uddab"/>
+<string value="\udbb8\uddac"/>
+<string value="\udbb8\uddad"/>
+<string value="\udbb8\uddae"/>
+<string value="\udbb8\uddaf"/>
+<string value="\udbb8\uddb0"/>
+<string value="\udbb8\uddb1"/>
+<string value="\udbb8\uddb2"/>
+<string value="\udbb8\uddb3"/>
+<string value="\udbb8\uddb4"/>
+<string value="\udbb8\uddb5"/>
+<string value="\udbb8\uddb6"/>
+<!-- Animals -->
+<string value="\udbb8\uddb7"/>
+<string value="\udbb8\uddb8"/>
+<string value="\udbb8\uddb9"/>
+<string value="\udbb8\uddba"/>
+<string value="\udbb8\uddbb"/>
+<string value="\udbb8\uddbc"/>
+<string value="\udbb8\uddbd"/>
+<string value="\udbb8\uddbe"/>
+<string value="\udbb8\uddbf"/>
+<string value="\udbb8\uddc0"/>
+<string value="\udbb8\uddc1"/>
+<string value="\udbb8\uddc2"/>
+<string value="\udbb8\uddc3"/>
+<string value="\udbb8\uddc4"/>
+<string value="\udbb8\uddc5"/>
+<string value="\udbb8\uddc6"/>
+<string value="\udbb8\uddc7"/>
+<string value="\udbb8\uddc8"/>
+<string value="\udbb8\uddc9"/>
+<string value="\udbb8\uddca"/>
+<string value="\udbb8\uddcb"/>
+<string value="\udbb8\uddcc"/>
+<string value="\udbb8\uddcd"/>
+<string value="\udbb8\uddce"/>
+<string value="\udbb8\uddcf"/>
+<string value="\udbb8\uddd0"/>
+<string value="\udbb8\uddd1"/>
+<string value="\udbb8\uddd2"/>
+<string value="\udbb8\uddd3"/>
+<string value="\udbb8\uddd4"/>
+<string value="\udbb8\uddd5"/>
+<string value="\udbb8\uddd6"/>
+<string value="\udbb8\uddd7"/>
+<string value="\udbb8\uddd8"/>
+<string value="\udbb8\uddd9"/>
+<string value="\udbb8\uddda"/>
+<string value="\udbb8\udddb"/>
+<string value="\udbb8\udddc"/>
+<string value="\udbb8\udddd"/>
+<string value="\udbb8\uddde"/>
+<string value="\udbb8\udddf"/>
+<string value="\udbb8\udde0"/>
+<string value="\udbb8\udde1"/>
+<string value="\udbb8\udde2"/>
+<string value="\udbb8\udde3"/>
+<!-- 3. Faces and Smiley's -->
+<!-- Faces -->
+<string value="\udbb8\udf20"/>
+<string value="\udbb8\udf21"/>
+<string value="\udbb8\udf22"/>
+<string value="\udbb8\udf23"/>
+<string value="\udbb8\udf24"/>
+<string value="\udbb8\udf25"/>
+<string value="\udbb8\udf26"/>
+<string value="\udbb8\udf27"/>
+<string value="\udbb8\udf28"/>
+<string value="\udbb8\udf29"/>
+<string value="\udbb8\udf2a"/>
+<string value="\udbb8\udf2b"/>
+<string value="\udbb8\udf2c"/>
+<string value="\udbb8\udf2d"/>
+<string value="\udbb8\udf2e"/>
+<string value="\udbb8\udf2f"/>
+<string value="\udbb8\udf30"/>
+<string value="\udbb8\udf31"/>
+<string value="\udbb8\udf32"/>
+<string value="\udbb8\udf33"/>
+<string value="\udbb8\udf34"/>
+<string value="\udbb8\udf35"/>
+<string value="\udbb8\udf36"/>
+<string value="\udbb8\udf37"/>
+<string value="\udbb8\udf38"/>
+<string value="\udbb8\udf39"/>
+<string value="\udbb8\udf3a"/>
+<string value="\udbb8\udf3b"/>
+<string value="\udbb8\udf3c"/>
+<string value="\udbb8\udf3d"/>
+<string value="\udbb8\udf3e"/>
+<string value="\udbb8\udf3f"/>
+<string value="\udbb8\udf40"/>
+<string value="\udbb8\udf41"/>
+<string value="\udbb8\udf42"/>
+<string value="\udbb8\udf43"/>
+<string value="\udbb8\udf44"/>
+<string value="\udbb8\udf45"/>
+<string value="\udbb8\udf46"/>
+<string value="\udbb8\udf47"/>
+<!-- More faces (animals, persons, characters) -->
+<string value="\udbb8\udf48"/>
+<string value="\udbb8\udf49"/>
+<string value="\udbb8\udf4a"/>
+<string value="\udbb8\udf4b"/>
+<string value="\udbb8\udf4c"/>
+<string value="\udbb8\udf4d"/>
+<string value="\udbb8\udf4e"/>
+<string value="\udbb8\udf4f"/>
+<string value="\udbb8\udf50"/>
+<string value="\udbb8\udf51"/>
+<string value="\udbb8\udf52"/>
+<string value="\udbb8\udf53"/>
+<string value="\udbb8\udf54"/>
+<string value="\udbb8\udf55"/>
+<string value="\udbb8\udf56"/>
+<string value="\udbb8\udf57"/>
+<string value="\udbb8\udf58"/>
+<string value="\udbb8\udf59"/>
+<string value="\udbb8\udf5a"/>
+<string value="\udbb8\udf5b"/>
+<string value="\udbb8\udf5c"/>
+<string value="\udbb8\udf5d"/>
+<string value="\udbb8\udf5e"/>
+<string value="\udbb8\udf5f"/>
+<string value="\udbb8\udf60"/>
+<string value="\udbb8\udf61"/>
+<string value="\udbb8\udf62"/>
+<string value="\udbb8\udf63"/>
+<string value="\udbb8\udf64"/>
+<string value="\udbb8\udf65"/>
+<string value="\udbb8\udf66"/>
+<string value="\udbb8\udf67"/>
+<string value="\udbb8\udf68"/>
+<string value="\udbb8\udf69"/>
+</keystring>
diff --git a/res/xml/symbols_japan_emoji_list2.xml b/res/xml/symbols_japan_emoji_list2.xml
new file mode 100644
index 0000000..10bdaf9
--- /dev/null
+++ b/res/xml/symbols_japan_emoji_list2.xml
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!--symbols -->
+<keystring>
+<!-- 6. Foods -->
+<!-- Prepared Food -->
+<string value="\udbba\udd60"/>
+<string value="\udbba\udd61"/>
+<string value="\udbba\udd62"/>
+<string value="\udbba\udd63"/>
+<string value="\udbba\udd64"/>
+<string value="\udbba\udd65"/>
+<string value="\udbba\udd66"/>
+<string value="\udbba\udd67"/>
+<string value="\udbba\udd68"/>
+<string value="\udbba\udd69"/>
+<string value="\udbba\udd6a"/>
+<string value="\udbba\udd6b"/>
+<string value="\udbba\udd6c"/>
+<string value="\udbba\udd6d"/>
+<string value="\udbba\udd6e"/>
+<string value="\udbba\udd6f"/>
+<string value="\udbba\udd70"/>
+<string value="\udbba\udd71"/>
+<string value="\udbba\udd72"/>
+<string value="\udbba\udd73"/>
+<string value="\udbba\udd74"/>
+<string value="\udbba\udd75"/>
+<string value="\udbba\udd76"/>
+<string value="\udbba\udd77"/>
+<string value="\udbba\udd78"/>
+<string value="\udbba\udd79"/>
+<string value="\udbba\udd7a"/>
+<string value="\udbba\udd7b"/>
+<string value="\udbba\udd7c"/>
+<string value="\udbba\udd7d"/>
+<string value="\udbba\udd7e"/>
+<string value="\udbba\udd7f"/>
+<string value="\udbba\udd80"/>
+<!-- Drink -->
+<string value="\udbba\udd81"/>
+<string value="\udbba\udd82"/>
+<string value="\udbba\udd83"/>
+<string value="\udbba\udd84"/>
+<string value="\udbba\udd85"/>
+<string value="\udbba\udd86"/>
+<string value="\udbba\udd87"/>
+<string value="\udbba\udd88"/>
+<!-- 7. Abstract Concepts -->
+<!-- Arrows -->
+<string value="\udbba\udef0"/>
+<string value="\udbba\udef1"/>
+<string value="\udbba\udef2"/>
+<string value="\udbba\udef3"/>
+<string value="\udbba\udef4"/>
+<string value="\udbba\udef5"/>
+<string value="\udbba\udef6"/>
+<string value="\udbba\udef7"/>
+<string value="\udbba\udef8"/>
+<string value="\udbba\udef9"/>
+<string value="\udbba\udefa"/>
+<string value="\udbba\udefb"/>
+<string value="\udbba\udefc"/>
+<string value="\udbba\udefd"/>
+<string value="\udbba\udefe"/>
+<string value="\udbba\udeff"/>
+<string value="\udbba\udf00"/>
+<string value="\udbba\udf01"/>
+<string value="\udbba\udf02"/>
+<string value="\udbba\udf03"/>
+<!-- Punctuation -->
+<string value="\udbba\udf04"/>
+<string value="\udbba\udf05"/>
+<string value="\udbba\udf06"/>
+<string value="\udbba\udf07"/>
+<string value="\udbba\udf08"/>
+<string value="\udbba\udf09"/>
+<string value="\udbba\udf0a"/>
+<string value="\udbba\udf0b"/>
+<!-- Hearts -->
+<string value="\udbba\udf0c"/>
+<string value="\udbba\udf0d"/>
+<string value="\udbba\udf0e"/>
+<string value="\udbba\udf0f"/>
+<string value="\udbba\udf10"/>
+<string value="\udbba\udf11"/>
+<string value="\udbba\udf12"/>
+<string value="\udbba\udf13"/>
+<string value="\udbba\udf14"/>
+<string value="\udbba\udf15"/>
+<string value="\udbba\udf16"/>
+<string value="\udbba\udf17"/>
+<string value="\udbba\udf18"/>
+<string value="\udbba\udf19"/>
+<!-- Cards -->
+<string value="\udbba\udf1a"/>
+<string value="\udbba\udf1b"/>
+<string value="\udbba\udf1c"/>
+<string value="\udbba\udf1d"/>
+<!-- Letter Signs and other Signs -->
+<string value="\udbba\udf1e"/>
+<string value="\udbba\udf1f"/>
+<string value="\udbba\udf20"/>
+<string value="\udbba\udf21"/>
+<string value="\udbba\udf22"/>
+<string value="\udbba\udf23"/>
+<string value="\udbba\udf24"/>
+<string value="\udbba\udf25"/>
+<string value="\udbba\udf26"/>
+<string value="\udbba\udf27"/>
+<string value="\udbba\udf28"/>
+<string value="\udbba\udf29"/>
+<string value="\udbba\udf2a"/>
+<string value="\udbba\udf2b"/>
+<string value="\udbba\udf2c"/>
+<string value="\udbba\udf2d"/>
+<string value="\udbba\udf2e"/>
+<string value="\udbba\udf2f"/>
+<string value="\udbba\udf30"/>
+<string value="\udbba\udf31"/>
+<string value="\udbba\udf32"/>
+<string value="\udbba\udf33"/>
+<string value="\udbba\udf34"/>
+<string value="\udbba\udf35"/>
+<string value="\udbba\udf36"/>
+<string value="\udbba\udf37"/>
+<string value="\udbba\udf38"/>
+<string value="\udbba\udf39"/>
+<string value="\udbba\udf3a"/>
+<string value="\udbba\udf3b"/>
+<string value="\udbba\udf3c"/>
+<string value="\udbba\udf3d"/>
+<string value="\udbba\udf3e"/>
+<string value="\udbba\udf3f"/>
+<string value="\udbba\udf40"/>
+<string value="\udbba\udf41"/>
+<string value="\udbba\udf42"/>
+<string value="\udbba\udf43"/>
+<string value="\udbba\udf44"/>
+<string value="\udbba\udf45"/>
+<string value="\udbba\udf46"/>
+<string value="\udbba\udf47"/>
+<string value="\udbba\udf48"/>
+<string value="\udbba\udf49"/>
+<string value="\udbba\udf4a"/>
+<string value="\udbba\udf4b"/>
+<string value="\udbba\udf4c"/>
+<string value="\udbba\udf4d"/>
+<string value="\udbba\udf4e"/>
+<string value="\udbba\udf4f"/>
+<string value="\udbba\udf50"/>
+<!-- Arithmetic Operators -->
+<string value="\udbba\udf51"/>
+<string value="\udbba\udf52"/>
+<string value="\udbba\udf53"/>
+<string value="\udbba\udf54"/>
+<!-- Emotion Symbols -->
+<string value="\udbba\udf55"/>
+<string value="\udbba\udf56"/>
+<string value="\udbba\udf57"/>
+<string value="\udbba\udf58"/>
+<string value="\udbba\udf59"/>
+<string value="\udbba\udf5a"/>
+<string value="\udbba\udf5b"/>
+<string value="\udbba\udf5c"/>
+<string value="\udbba\udf5d"/>
+<string value="\udbba\udf5e"/>
+<string value="\udbba\udf5f"/>
+<!-- Shapes / Sparkles -->
+<string value="\udbba\udf60"/>
+<string value="\udbba\udf61"/>
+<string value="\udbba\udf62"/>
+<string value="\udbba\udf63"/>
+<string value="\udbba\udf64"/>
+<string value="\udbba\udf65"/>
+<string value="\udbba\udf66"/>
+<string value="\udbba\udf67"/>
+<string value="\udbba\udf68"/>
+<string value="\udbba\udf69"/>
+<string value="\udbba\udf6a"/>
+<string value="\udbba\udf6b"/>
+<string value="\udbba\udf6c"/>
+<string value="\udbba\udf6d"/>
+<string value="\udbba\udf6e"/>
+<string value="\udbba\udf6f"/>
+<string value="\udbba\udf70"/>
+<string value="\udbba\udf71"/>
+<string value="\udbba\udf72"/>
+<string value="\udbba\udf73"/>
+<string value="\udbba\udf74"/>
+<string value="\udbba\udf75"/>
+<string value="\udbba\udf76"/>
+<string value="\udbba\udf77"/>
+<string value="\udbba\udf78"/>
+<string value="\udbba\udf79"/>
+<!-- School -->
+<string value="\udbba\udf7a"/>
+<string value="\udbba\udf7b"/>
+<string value="\udbba\udf7c"/>
+<string value="\udbba\udf7d"/>
+<string value="\udbba\udf7e"/>
+<string value="\udbba\udf7f"/>
+<string value="\udbba\udf80"/>
+<!-- Internet Specific -->
+<string value="\udbba\udf81"/>
+<string value="\udbba\udf82"/>
+<string value="\udbba\udf83"/>
+<string value="\udbba\udf84"/>
+<string value="\udbba\udf85"/>
+<string value="\udbba\udf86"/>
+<string value="\udbba\udf87"/>
+<string value="\udbba\udf88"/>
+<string value="\udbba\udf89"/>
+<string value="\udbba\udf8a"/>
+<string value="\udbba\udf8b"/>
+<string value="\udbba\udf8c"/>
+<string value="\udbba\udf8d"/>
+<string value="\udbba\udf8e"/>
+<string value="\udbba\udf8f"/>
+<string value="\udbba\udf90"/>
+<string value="\udbba\udf91"/>
+<string value="\udbba\udf92"/>
+<!-- Hand Signals -->
+<string value="\udbba\udf93"/>
+<string value="\udbba\udf94"/>
+<string value="\udbba\udf95"/>
+<string value="\udbba\udf96"/>
+<string value="\udbba\udf97"/>
+<string value="\udbba\udf98"/>
+<string value="\udbba\udf99"/>
+<string value="\udbba\udf9a"/>
+<string value="\udbba\udf9b"/>
+<string value="\udbba\udf9c"/>
+<string value="\udbba\udf9d"/>
+<string value="\udbba\udf9e"/>
+<string value="\udbba\udf9f"/>
+<string value="\udbba\udfa0"/>
+<string value="\udbba\udfa1"/>
+<string value="\udbba\udfa2"/>
+<!-- 8. Business logos/symbols -->
+<!-- DoCoMo specific -->
+<string value="\udbbb\ude10"/>
+<string value="\udbbb\ude11"/>
+<string value="\udbbb\ude12"/>
+<string value="\udbbb\ude13"/>
+<string value="\udbbb\ude14"/>
+<string value="\udbbb\ude15"/>
+<string value="\udbbb\ude16"/>
+<string value="\udbbb\ude17"/>
+<string value="\udbbb\ude18"/>
+<string value="\udbbb\ude19"/>
+<string value="\udbbb\ude1a"/>
+<string value="\udbbb\ude1b"/>
+<string value="\udbbb\ude1c"/>
+<string value="\udbbb\ude1d"/>
+<string value="\udbbb\ude1e"/>
+<string value="\udbbb\ude1f"/>
+<string value="\udbbb\ude20"/>
+<string value="\udbbb\ude21"/>
+<string value="\udbbb\ude22"/>
+<string value="\udbbb\ude23"/>
+<string value="\udbbb\ude24"/>
+<string value="\udbbb\ude25"/>
+<string value="\udbbb\ude26"/>
+<string value="\udbbb\ude27"/>
+<string value="\udbbb\ude28"/>
+<string value="\udbbb\ude29"/>
+<string value="\udbbb\ude2a"/>
+<string value="\udbbb\ude2b"/>
+<string value="\udbbb\ude2c"/>
+<string value="\udbbb\ude2d"/>
+<string value="\udbbb\ude2e"/>
+<string value="\udbbb\ude2f"/>
+<string value="\udbbb\ude30"/>
+<string value="\udbbb\ude31"/>
+<string value="\udbbb\ude32"/>
+<string value="\udbbb\ude33"/>
+<!-- KDDI specific -->
+<string value="\udbbb\ude40"/>
+<string value="\udbbb\ude41"/>
+<string value="\udbbb\ude42"/>
+<string value="\udbbb\ude43"/>
+<string value="\udbbb\ude44"/>
+<string value="\udbbb\ude45"/>
+<string value="\udbbb\ude46"/>
+<string value="\udbbb\ude47"/>
+<string value="\udbbb\ude48"/>
+<string value="\udbbb\ude49"/>
+<string value="\udbbb\ude4a"/>
+<!-- Softbank specific -->
+<string value="\udbbb\ude70"/>
+<string value="\udbbb\ude71"/>
+<string value="\udbbb\ude72"/>
+<string value="\udbbb\ude73"/>
+<string value="\udbbb\ude74"/>
+<string value="\udbbb\ude75"/>
+<string value="\udbbb\ude76"/>
+<string value="\udbbb\ude77"/>
+<string value="\udbbb\ude78"/>
+<string value="\udbbb\ude79"/>
+<string value="\udbbb\ude7a"/>
+<string value="\udbbb\ude7b"/>
+<string value="\udbbb\ude7c"/>
+<string value="\udbbb\ude7d"/>
+<!-- Google specific -->
+<string value="\udbbb\udea0"/>
+</keystring>
diff --git a/res/xml/symbols_japan_emoji_list3.xml b/res/xml/symbols_japan_emoji_list3.xml
new file mode 100644
index 0000000..dbd0668
--- /dev/null
+++ b/res/xml/symbols_japan_emoji_list3.xml
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!--symbols -->
+<keystring>
+<!-- 4. Artifacts -->
+<!-- Buildings / Common Places -->
+<string value="\udbb9\udcb0"/>
+<string value="\udbb9\udcb1"/>
+<string value="\udbb9\udcb2"/>
+<string value="\udbb9\udcb3"/>
+<string value="\udbb9\udcb4"/>
+<string value="\udbb9\udcb5"/>
+<string value="\udbb9\udcb6"/>
+<string value="\udbb9\udcb7"/>
+<string value="\udbb9\udcb8"/>
+<string value="\udbb9\udcb9"/>
+<string value="\udbb9\udcba"/>
+<string value="\udbb9\udcbb"/>
+<string value="\udbb9\udcbc"/>
+<string value="\udbb9\udcbd"/>
+<string value="\udbb9\udcbe"/>
+<string value="\udbb9\udcbf"/>
+<string value="\udbb9\udcc0"/>
+<string value="\udbb9\udcc1"/>
+<string value="\udbb9\udcc2"/>
+<!-- Landmarks /Famous Places -->
+<string value="\udbb9\udcc3"/>
+<string value="\udbb9\udcc4"/>
+<string value="\udbb9\udcc5"/>
+<string value="\udbb9\udcc6"/>
+<string value="\udbb9\udcc7"/>
+<string value="\udbb9\udcc8"/>
+<!-- Tools -->
+<string value="\udbb9\udcc9"/>
+<string value="\udbb9\udcca"/>
+<string value="\udbb9\udccb"/>
+<!-- Clothing / Wearables -->
+<string value="\udbb9\udccc"/>
+<string value="\udbb9\udccd"/>
+<string value="\udbb9\udcce"/>
+<string value="\udbb9\udccf"/>
+<string value="\udbb9\udcd0"/>
+<string value="\udbb9\udcd1"/>
+<string value="\udbb9\udcd2"/>
+<string value="\udbb9\udcd3"/>
+<string value="\udbb9\udcd4"/>
+<string value="\udbb9\udcd5"/>
+<string value="\udbb9\udcd6"/>
+<string value="\udbb9\udcd7"/>
+<string value="\udbb9\udcd8"/>
+<string value="\udbb9\udcd9"/>
+<string value="\udbb9\udcda"/>
+<string value="\udbb9\udcdb"/>
+<!-- Money -->
+<string value="\udbb9\udcdc"/>
+<string value="\udbb9\udcdd"/>
+<string value="\udbb9\udcde"/>
+<string value="\udbb9\udcdf"/>
+<string value="\udbb9\udce0"/>
+<string value="\udbb9\udce1"/>
+<string value="\udbb9\udce2"/>
+<string value="\udbb9\udce3"/>
+<string value="\udbb9\udce4"/>
+<!-- Flags -->
+<string value="\udbb9\udce5"/>
+<string value="\udbb9\udce6"/>
+<string value="\udbb9\udce7"/>
+<string value="\udbb9\udce8"/>
+<string value="\udbb9\udce9"/>
+<string value="\udbb9\udcea"/>
+<string value="\udbb9\udceb"/>
+<string value="\udbb9\udcec"/>
+<string value="\udbb9\udced"/>
+<string value="\udbb9\udcee"/>
+<!-- Miscellaneous Things -->
+<string value="\udbb9\udcef"/>
+<string value="\udbb9\udcf0"/>
+<string value="\udbb9\udcf1"/>
+<string value="\udbb9\udcf2"/>
+<string value="\udbb9\udcf3"/>
+<string value="\udbb9\udcf4"/>
+<string value="\udbb9\udcf5"/>
+<string value="\udbb9\udcf6"/>
+<string value="\udbb9\udcf7"/>
+<string value="\udbb9\udcf8"/>
+<string value="\udbb9\udcf9"/>
+<string value="\udbb9\udcfa"/>
+<string value="\udbb9\udcfb"/>
+<string value="\udbb9\udcfc"/>
+<string value="\udbb9\udcfd"/>
+<string value="\udbb9\udcfe"/>
+<string value="\udbb9\udcff"/>
+<string value="\udbb9\udd00"/>
+<string value="\udbb9\udd01"/>
+<string value="\udbb9\udd02"/>
+<string value="\udbb9\udd03"/>
+<string value="\udbb9\udd04"/>
+<!-- Bath / Bathroom -->
+<string value="\udbb9\udd05"/>
+<string value="\udbb9\udd06"/>
+<string value="\udbb9\udd07"/>
+<string value="\udbb9\udd08"/>
+<!-- Medical -->
+<string value="\udbb9\udd09"/>
+<string value="\udbb9\udd0a"/>
+<string value="\udbb9\udd0b"/>
+<string value="\udbb9\udd0c"/>
+<string value="\udbb9\udd0d"/>
+<string value="\udbb9\udd0e"/>
+<!-- Celebration / Holidays -->
+<string value="\udbb9\udd0f"/>
+<string value="\udbb9\udd10"/>
+<string value="\udbb9\udd11"/>
+<string value="\udbb9\udd12"/>
+<string value="\udbb9\udd13"/>
+<string value="\udbb9\udd14"/>
+<string value="\udbb9\udd15"/>
+<string value="\udbb9\udd16"/>
+<string value="\udbb9\udd17"/>
+<string value="\udbb9\udd18"/>
+<string value="\udbb9\udd19"/>
+<string value="\udbb9\udd1a"/>
+<string value="\udbb9\udd1b"/>
+<string value="\udbb9\udd1c"/>
+<string value="\udbb9\udd1d"/>
+<string value="\udbb9\udd1e"/>
+<string value="\udbb9\udd1f"/>
+<string value="\udbb9\udd20"/>
+<string value="\udbb9\udd21"/>
+<!-- Communication -->
+<string value="\udbb9\udd22"/>
+<string value="\udbb9\udd23"/>
+<string value="\udbb9\udd24"/>
+<string value="\udbb9\udd25"/>
+<string value="\udbb9\udd26"/>
+<string value="\udbb9\udd27"/>
+<string value="\udbb9\udd28"/>
+<string value="\udbb9\udd29"/>
+<string value="\udbb9\udd2a"/>
+<string value="\udbb9\udd2b"/>
+<string value="\udbb9\udd2c"/>
+<string value="\udbb9\udd2d"/>
+<string value="\udbb9\udd2e"/>
+<string value="\udbb9\udd2f"/>
+<string value="\udbb9\udd30"/>
+<string value="\udbb9\udd31"/>
+<string value="\udbb9\udd32"/>
+<string value="\udbb9\udd33"/>
+<string value="\udbb9\udd34"/>
+<string value="\udbb9\udd35"/>
+<!-- Office -->
+<string value="\udbb9\udd36"/>
+<string value="\udbb9\udd37"/>
+<string value="\udbb9\udd38"/>
+<string value="\udbb9\udd39"/>
+<string value="\udbb9\udd3a"/>
+<string value="\udbb9\udd3b"/>
+<string value="\udbb9\udd3c"/>
+<string value="\udbb9\udd3d"/>
+<string value="\udbb9\udd3e"/>
+<string value="\udbb9\udd3f"/>
+<string value="\udbb9\udd40"/>
+<string value="\udbb9\udd41"/>
+<string value="\udbb9\udd42"/>
+<string value="\udbb9\udd43"/>
+<string value="\udbb9\udd44"/>
+<string value="\udbb9\udd45"/>
+<string value="\udbb9\udd46"/>
+<string value="\udbb9\udd47"/>
+<string value="\udbb9\udd48"/>
+<string value="\udbb9\udd49"/>
+<string value="\udbb9\udd4a"/>
+<string value="\udbb9\udd4b"/>
+<string value="\udbb9\udd4c"/>
+<string value="\udbb9\udd4d"/>
+<string value="\udbb9\udd4e"/>
+<string value="\udbb9\udd4f"/>
+<string value="\udbb9\udd50"/>
+<string value="\udbb9\udd51"/>
+<string value="\udbb9\udd52"/>
+<!-- Relic -->
+<string value="\udbb9\udd53"/>
+<!-- 5. Activities / Work / Entertainment -->
+<!-- Sports -->
+<string value="\udbb9\udfd0"/>
+<string value="\udbb9\udfd1"/>
+<string value="\udbb9\udfd2"/>
+<string value="\udbb9\udfd3"/>
+<string value="\udbb9\udfd4"/>
+<string value="\udbb9\udfd5"/>
+<string value="\udbb9\udfd6"/>
+<string value="\udbb9\udfd7"/>
+<string value="\udbb9\udfd8"/>
+<string value="\udbb9\udfd9"/>
+<string value="\udbb9\udfda"/>
+<string value="\udbb9\udfdb"/>
+<string value="\udbb9\udfdc"/>
+<string value="\udbb9\udfdd"/>
+<string value="\udbb9\udfde"/>
+<!-- Transportation -->
+<string value="\udbb9\udfdf"/>
+<string value="\udbb9\udfe0"/>
+<string value="\udbb9\udfe1"/>
+<string value="\udbb9\udfe2"/>
+<string value="\udbb9\udfe3"/>
+<string value="\udbb9\udfe4"/>
+<string value="\udbb9\udfe5"/>
+<string value="\udbb9\udfe6"/>
+<string value="\udbb9\udfe7"/>
+<string value="\udbb9\udfe8"/>
+<string value="\udbb9\udfe9"/>
+<string value="\udbb9\udfea"/>
+<string value="\udbb9\udfeb"/>
+<string value="\udbb9\udfec"/>
+<string value="\udbb9\udfed"/>
+<string value="\udbb9\udfee"/>
+<string value="\udbb9\udfef"/>
+<string value="\udbb9\udff0"/>
+<string value="\udbb9\udff1"/>
+<string value="\udbb9\udff2"/>
+<string value="\udbb9\udff3"/>
+<string value="\udbb9\udff4"/>
+<!-- Driving -->
+<string value="\udbb9\udff5"/>
+<string value="\udbb9\udff6"/>
+<string value="\udbb9\udff7"/>
+<string value="\udbb9\udff8"/>
+<string value="\udbb9\udff9"/>
+<!-- Recreation -->
+<string value="\udbb9\udffa"/>
+<string value="\udbb9\udffb"/>
+<string value="\udbb9\udffc"/>
+<string value="\udbb9\udffd"/>
+<string value="\udbb9\udffe"/>
+<string value="\udbb9\udfff"/>
+<!-- Entertainment -->
+<string value="\udbba\udc00"/>
+<string value="\udbba\udc01"/>
+<string value="\udbba\udc02"/>
+<string value="\udbba\udc03"/>
+<string value="\udbba\udc04"/>
+<string value="\udbba\udc05"/>
+<string value="\udbba\udc06"/>
+<string value="\udbba\udc07"/>
+<string value="\udbba\udc08"/>
+<string value="\udbba\udc09"/>
+<!-- Games -->
+<string value="\udbba\udc0a"/>
+<string value="\udbba\udc0b"/>
+<string value="\udbba\udc0c"/>
+<string value="\udbba\udc0d"/>
+<string value="\udbba\udc0e"/>
+<string value="\udbba\udc0f"/>
+<string value="\udbba\udc10"/>
+<string value="\udbba\udc11"/>
+<string value="\udbba\udc12"/>
+<!-- Music -->
+<string value="\udbba\udc13"/>
+<string value="\udbba\udc14"/>
+<string value="\udbba\udc15"/>
+<string value="\udbba\udc16"/>
+<string value="\udbba\udc17"/>
+<string value="\udbba\udc18"/>
+<string value="\udbba\udc19"/>
+<string value="\udbba\udc1a"/>
+<string value="\udbba\udc1b"/>
+<!-- Media -->
+<string value="\udbba\udc1c"/>
+<string value="\udbba\udc1d"/>
+<string value="\udbba\udc1e"/>
+<string value="\udbba\udc1f"/>
+<string value="\udbba\udc20"/>
+<string value="\udbba\udc21"/>
+<string value="\udbba\udc22"/>
+<!-- Romance -->
+<string value="\udbba\udc23"/>
+<string value="\udbba\udc24"/>
+<string value="\udbba\udc25"/>
+<string value="\udbba\udc26"/>
+<string value="\udbba\udc27"/>
+<string value="\udbba\udc28"/>
+<string value="\udbba\udc29"/>
+<string value="\udbba\udc2a"/>
+<!-- Phone Specific -->
+<string value="\udbba\udc2b"/>
+<string value="\udbba\udc2c"/>
+<string value="\udbba\udc2d"/>
+<string value="\udbba\udc2e"/>
+<string value="\udbba\udc2f"/>
+<string value="\udbba\udc30"/>
+<string value="\udbba\udc31"/>
+<string value="\udbba\udc32"/>
+<string value="\udbba\udc33"/>
+<string value="\udbba\udc34"/>
+<string value="\udbba\udc35"/>
+<string value="\udbba\udc36"/>
+<string value="\udbba\udc37"/>
+<string value="\udbba\udc38"/>
+<string value="\udbba\udc39"/>
+<string value="\udbba\udc3a"/>
+<string value="\udbba\udc3b"/>
+<string value="\udbba\udc3c"/>
+</keystring>
diff --git a/res/xml/symbols_japan_face_list.xml b/res/xml/symbols_japan_face_list.xml
index 371e022..3d5eec4 100644
--- a/res/xml/symbols_japan_face_list.xml
+++ b/res/xml/symbols_japan_face_list.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/xml/symbols_japan_list.xml b/res/xml/symbols_japan_list.xml
index d25f546..8b3c571 100644
--- a/res/xml/symbols_japan_list.xml
+++ b/res/xml/symbols_japan_list.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -16,6 +16,40 @@
 -->
 <!--symbols -->
 <keystring>
+  <string value="@string/half_symbol_categories_txt"/>
+  <string value="!"/>
+  <string value="“"/>
+  <string value="\#"/>
+  <string value="$"/>
+  <string value="%"/>
+  <string value="&amp;"/>
+  <string value="'"/>
+  <string value="("/>
+  <string value=")"/>
+  <string value="*"/>
+  <string value="+"/>
+  <string value=","/>
+  <string value="-"/>
+  <string value="."/>
+  <string value="/"/>
+  <string value=":"/>
+  <string value=";"/>
+  <string value="&lt;"/>
+  <string value="="/>
+  <string value=">"/>
+  <string value="\?"/>
+  <string value="\@"/>
+  <string value="["/>
+  <string value="\\"/>
+  <string value="]"/>
+  <string value="^"/>
+  <string value="_"/>
+  <string value="`"/>
+  <string value="{"/>
+  <string value="|"/>
+  <string value="}"/>
+  <string value="~"/>
+  <string value="@string/full_symbol_categories_txt"/>
   <string value="、"/>
   <string value="。"/>
   <string value="，"/>
@@ -244,7 +278,4 @@
   <string value="∠"/>
   <string value="∟"/>
   <string value="⊿"/>
-  <string value="∵"/>
-  <string value="∩"/>
-  <string value="∪"/>
 </keystring>
diff --git a/res/xml/symbols_latin12_list.xml b/res/xml/symbols_latin12_list.xml
index e3f6022..62e3bf1 100644
--- a/res/xml/symbols_latin12_list.xml
+++ b/res/xml/symbols_latin12_list.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/res/xml/symbols_latin1_list.xml b/res/xml/symbols_latin1_list.xml
index 6198124..f5b5edb 100644
--- a/res/xml/symbols_latin1_list.xml
+++ b/res/xml/symbols_latin1_list.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
@@ -16,6 +16,7 @@
 -->
 <!--symbols -->
 <keystring>
+  <string value="@string/half_symbol_categories_txt"/>
   <string value="!"/>
   <string value="“"/>
   <string value="\#"/>
diff --git a/res/xml/symbols_latin2_list.xml b/res/xml/symbols_latin2_list.xml
index c8d1045..508df9d 100644
--- a/res/xml/symbols_latin2_list.xml
+++ b/res/xml/symbols_latin2_list.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
 
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/BaseInputView.java b/src/jp/co/omronsoft/openwnn/BaseInputView.java
new file mode 100644
index 0000000..36da017
--- /dev/null
+++ b/src/jp/co/omronsoft/openwnn/BaseInputView.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package jp.co.omronsoft.openwnn;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.util.AttributeSet;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+
+/**
+ * The view of the base input.
+ */
+public class BaseInputView extends LinearLayout {
+    /** The dialog that opens with long tap */
+    public AlertDialog mOptionsDialog = null;
+
+    /**
+     * Constructor
+     */
+    public BaseInputView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    /**
+     * Constructor
+     */
+    BaseInputView(Context context) {
+        super(context);
+    }
+
+    /**
+     * Called when the window containing has change its visibility.
+     *
+     * @see android.view.View#onWindowVisibilityChanged(int)
+     */
+    @Override protected void onWindowVisibilityChanged(int visibility) {
+       super.onWindowVisibilityChanged(visibility);
+       if ((visibility != VISIBLE) && (mOptionsDialog != null)) {
+           mOptionsDialog.dismiss();
+       }
+    }
+
+    /**
+     * Show dialog.
+     *
+     * @param builder   the builder of dialog
+     */
+    public void showDialog(AlertDialog.Builder builder) {
+        if (mOptionsDialog != null) {
+            mOptionsDialog.dismiss();
+        }
+
+        mOptionsDialog = builder.create();
+        Window window = mOptionsDialog.getWindow();
+        WindowManager.LayoutParams dialogLayoutParams = window.getAttributes();
+        dialogLayoutParams.token = getWindowToken();
+        dialogLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;
+        window.setAttributes(dialogLayoutParams);
+        window.addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
+ 
+        mOptionsDialog.show();
+    }
+
+    /**
+     * Close dialog.
+     */
+    public void closeDialog() {
+       if (mOptionsDialog != null) {
+           mOptionsDialog.dismiss();
+           mOptionsDialog = null;
+       }
+    }
+}
diff --git a/src/jp/co/omronsoft/openwnn/CandidateFilter.java b/src/jp/co/omronsoft/openwnn/CandidateFilter.java
index 993aef1..32181d2 100644
--- a/src/jp/co/omronsoft/openwnn/CandidateFilter.java
+++ b/src/jp/co/omronsoft/openwnn/CandidateFilter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/CandidateTextView.java b/src/jp/co/omronsoft/openwnn/CandidateTextView.java
new file mode 100644
index 0000000..f177441
--- /dev/null
+++ b/src/jp/co/omronsoft/openwnn/CandidateTextView.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package jp.co.omronsoft.openwnn;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+import android.text.TextPaint;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+/**
+ * The default candidates view manager using {@link TextView}.
+ *
+ * @author Copyright (C) 2011 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
+ */
+public class CandidateTextView extends TextView {
+
+    /** Width of fontsize change */
+    private static final int WIDTH_SIZE[] = {0, 50, 100};
+    /** Fontsize corresponding to width */
+    private static final float CUSTOM_FONTSIZE[] = {20.0f, 17.0f, 15.0f};
+    /** Width of fontsize change beginning */
+    private static final int CHANGE_FONTSIZE_WIDTH = 120;
+
+    /** Maximum width of candidate view */
+    private int mMaxWidth;
+    /** Width of fontsize change beginning */
+    private int mChangeFontSize;
+    /** Minimum width of candidate view */
+    private int mCandidateMinimumWidth;
+
+    /** Alert dialog */
+    private Dialog mCandidateDialog = null;
+
+   /**
+    * Constructor
+    * @param context    context
+    */
+    public CandidateTextView(Context context) {
+        super(context);
+        setSoundEffectsEnabled(false);
+    }
+
+   /**
+    * Constructor
+    * @param context    context
+    * @param candidateMinimumHeight Minimum height of candidate view
+    * @param candidateMinimumWidth  Minimum width of candidate view
+    * @param maxWidth  Maximum width of candidate view
+    */
+    public CandidateTextView(Context context, int candidateMinimumHeight, int candidateMinimumWidth, int maxWidth) {
+        super(context);
+        setSoundEffectsEnabled(false);
+        setTextColor(getResources().getColor(R.color.candidate_text_1line));
+        setBackgroundResource(R.drawable.cand_back_1line);
+        setGravity(Gravity.CENTER);
+        setSingleLine();
+        setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
+                                                           ViewGroup.LayoutParams.MATCH_PARENT,
+                                                           1.0f));
+        setMinHeight(candidateMinimumHeight);
+        setMinimumWidth(candidateMinimumWidth);
+        mCandidateMinimumWidth = candidateMinimumWidth;
+        mMaxWidth = maxWidth;
+        mChangeFontSize = maxWidth - CHANGE_FONTSIZE_WIDTH;
+    }
+
+   /**
+    * Textview is set to the best content for the display of candidate.
+    * @param WnnWord    candidate
+    * @param wordCount  candidate id
+    * @param OnClickListener Operation when clicking
+    * @param OnClickListener Operation when longclicking
+    * @return Set completion textview
+    */
+    public CandidateTextView setCandidateTextView(WnnWord word, int wordCount,
+                                                        OnClickListener candidateOnClick,
+                                                        OnLongClickListener candidateOnLongClick) {
+        setTextSize(CUSTOM_FONTSIZE[0]);
+        setText(word.candidate);
+        setId(wordCount);
+        setVisibility(View.VISIBLE);
+        setPressed(false);
+        setWidth(0);
+        setEllipsize(null);
+        setOnClickListener(candidateOnClick);
+        setOnLongClickListener(candidateOnLongClick);
+        setCustomCandidate(word);
+        return this;
+    }
+
+   /**
+    * If the text view is set to the best width for the display,
+    * and it is necessary, the character is shortened.
+    * @param WnnWord candidate word
+    * @return int    textview width
+    */
+    public int setCustomCandidate(WnnWord word) {
+        TextPaint paint = getPaint();
+        int width = (int)paint.measureText(word.candidate, 0, word.candidate.length());
+        width += getPaddingLeft() + getPaddingRight();
+
+        if (width > mCandidateMinimumWidth) {
+            int i;
+            for (i = 0; i < WIDTH_SIZE.length; i++) {
+                if (width > mChangeFontSize + WIDTH_SIZE[i]) {
+                    setTextSize(CUSTOM_FONTSIZE[i]);
+                }
+            }
+
+            width = (int)paint.measureText(word.candidate, 0, word.candidate.length());
+            width += getPaddingLeft() + getPaddingRight();
+
+            if (width >= mMaxWidth) {
+                setWidth(mMaxWidth);
+                width = mMaxWidth;
+                setEllipsize(TextUtils.TruncateAt.START);
+            } else {
+                setWidth(width);
+            }
+        } else {
+            setWidth(mCandidateMinimumWidth);
+            width = mCandidateMinimumWidth;
+        }
+        return width;
+    }
+
+    /** @see View#setBackgroundDrawable */
+    @Override public void setBackgroundDrawable(Drawable d) {
+        super.setBackgroundDrawable(d);
+        setPadding(20, 0, 20, 0);
+    }
+
+    /**
+     * Display Dialog.
+     *
+     * @param builder  The Dialog builder,
+     */
+    public void displayCandidateDialog(Dialog builder) {
+        if (mCandidateDialog != null) {
+            mCandidateDialog.dismiss();
+            mCandidateDialog = null;
+        }
+        mCandidateDialog = builder;
+        Window window = mCandidateDialog.getWindow();
+        WindowManager.LayoutParams lp = window.getAttributes();
+        lp.token = getWindowToken();
+        lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;
+        window.setAttributes(lp);
+        window.addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
+        mCandidateDialog.show();
+    }
+
+    /** @see android.view.View#onWindowVisibilityChanged */
+    @Override protected void onWindowVisibilityChanged(int visibility) {
+       super.onWindowVisibilityChanged(visibility);
+       if ((visibility != VISIBLE) && (mCandidateDialog != null)) {
+           mCandidateDialog.dismiss();
+       }
+    }
+}
diff --git a/src/jp/co/omronsoft/openwnn/CandidatesViewManager.java b/src/jp/co/omronsoft/openwnn/CandidatesViewManager.java
index 01dee1e..be2b9e6 100644
--- a/src/jp/co/omronsoft/openwnn/CandidatesViewManager.java
+++ b/src/jp/co/omronsoft/openwnn/CandidatesViewManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,15 +16,26 @@
 
 package jp.co.omronsoft.openwnn;
 
-import android.view.View;
+import android.app.Dialog;
+import android.content.res.Resources;
 import android.content.SharedPreferences;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.HorizontalScrollView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.util.TypedValue;
+
+import java.util.ArrayList;
 
 /**
  * The interface of candidates view manager used by {@link OpenWnn}.
  *
- * @author Copyright (C) 2008, 2009 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
+ * @author Copyright (C) 2008-2011 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
  */
-public interface CandidatesViewManager {
+public abstract class CandidatesViewManager {
     /** Size of candidates view (normal) */
     public static final int VIEW_TYPE_NORMAL = 0;
     /** Size of candidates view (full) */
@@ -53,6 +64,15 @@
      */
     public static final int ATTRIBUTE_AUTO_GENERATED  = 4;
 
+    /** The view of the LongPressDialog */
+    protected View mViewLongPressDialog = null;
+
+    /** Whether candidates long click enable */
+    protected Dialog mDialog = null;
+
+    /** The word pressed */
+    protected WnnWord mWord;
+
     /**
      * Initialize the candidates view.
      *
@@ -62,28 +82,32 @@
      *
      * @return The candidates view created in the initialize process; {@code null} if cannot create a candidates view.
      */
-    public View initView(OpenWnn parent, int width, int height);
+    public abstract View initView(OpenWnn parent, int width, int height);
 
     /**
      * Get the candidates view being used currently.
      *
      * @return The candidates view; {@code null} if no candidates view is used currently.
      */
-    public View getCurrentView();
+    public abstract View getCurrentView();
 
     /**
      * Set the candidates view type.
      *
-     * @param type  The candidate view type
+     * @param type  The candidate view type,
+     * from {@link CandidatesViewManager#VIEW_TYPE_NORMAL} to
+     * {@link CandidatesViewManager#VIEW_TYPE_CLOSE}
      */
-    public void setViewType(int type);
+    public abstract void setViewType(int type);
 
     /**
      * Get the candidates view type.
      *
-     * @return      The view type
+     * @return      The view type,
+     * from {@link CandidatesViewManager#VIEW_TYPE_NORMAL} to
+     * {@link CandidatesViewManager#VIEW_TYPE_CLOSE}
      */
-    public int getViewType();
+    public abstract int getViewType();
 
     /**
      * Display candidates.
@@ -92,17 +116,77 @@
      *
      * @see jp.co.omronsoft.openwnn.WnnEngine#getNextCandidate
      */
-    public void displayCandidates(WnnEngine converter);
+    public abstract void displayCandidates(WnnEngine converter);
 
     /**
      * Clear and hide the candidates view.
      */
-    public void clearCandidates();
+    public abstract void clearCandidates();
 
     /**
-     * Reflect the preferences in the candidates view.
+     * Replace the preferences in the candidates view.
      *
      * @param pref    The preferences
      */
-    public void setPreferences(SharedPreferences pref);
+    public abstract void setPreferences(SharedPreferences pref);
+
+    /**
+     * KeyEvent action for soft key board.
+     *
+     * @param key    Key event
+     */
+    public abstract void processMoveKeyEvent(int key);
+
+    /**
+     * Get candidate is focused now.
+     *
+     * @return the Candidate is focused of a flag.
+     */
+    public abstract boolean isFocusCandidate();
+
+    /**
+     * Select candidate that has focus.
+     */
+    public abstract void selectFocusCandidate();
+
+    /**
+     * MSG_SET_CANDIDATES removeMessages.
+     */
+    public abstract void setCandidateMsgRemove();
+
+    /**
+     * Display Dialog.
+     *
+     * @param view  View,
+     * @param word  Display word,
+     */
+    protected void displayDialog(View view, final WnnWord word) {
+        if ((view instanceof CandidateTextView) && (null != mViewLongPressDialog)) {
+            closeDialog();
+            mDialog = new Dialog(view.getContext(), R.style.Dialog);
+
+            TextView text = (TextView)mViewLongPressDialog.findViewById(R.id.candidate_longpress_dialog_text);
+            text.setText(word.candidate);
+
+            mDialog.setContentView(mViewLongPressDialog);
+            ((CandidateTextView) view).displayCandidateDialog(mDialog);
+        }
+    }
+
+    /**
+     * Close Dialog.
+     *
+     */
+    public void closeDialog() {
+        if (null != mDialog) {
+            mDialog.dismiss();
+            mDialog = null;
+            if (null != mViewLongPressDialog) {
+                ViewGroup parent = (ViewGroup)mViewLongPressDialog.getParent();
+                if (null != parent) {
+                    parent.removeView(mViewLongPressDialog);
+                }
+            }
+        }
+    }
 }
diff --git a/src/jp/co/omronsoft/openwnn/ComposingText.java b/src/jp/co/omronsoft/openwnn/ComposingText.java
index 328efb5..dddab2c 100644
--- a/src/jp/co/omronsoft/openwnn/ComposingText.java
+++ b/src/jp/co/omronsoft/openwnn/ComposingText.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/DefaultSoftKeyboard.java b/src/jp/co/omronsoft/openwnn/DefaultSoftKeyboard.java
index edb308c..096460b 100644
--- a/src/jp/co/omronsoft/openwnn/DefaultSoftKeyboard.java
+++ b/src/jp/co/omronsoft/openwnn/DefaultSoftKeyboard.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,12 +16,12 @@
 
 package jp.co.omronsoft.openwnn;
 
+import android.view.KeyEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputConnection;
 import android.widget.TextView;
-import android.inputmethodservice.Keyboard;
-import android.inputmethodservice.KeyboardView;
 import android.content.SharedPreferences;
 import android.preference.PreferenceManager;
 import android.content.res.*;
@@ -31,10 +31,14 @@
 
 import android.util.Log;
 
+import jp.co.omronsoft.openwnn.Keyboard;
+import jp.co.omronsoft.openwnn.KeyboardView;
+import jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener;
+
 /**
  * The default software keyboard class.
  *
- * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
+ * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
  */
 public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKeyboardActionListener {
     /*
@@ -104,7 +108,16 @@
     public static final int KEYCODE_JP12_HAN_ALPHA  = -229;
     /** Japanese 12-key keyboard [MODE TOOGLE CHANGE] */
     public static final int KEYCODE_JP12_TOGGLE_MODE = -230;
-    
+
+    /** Key code for symbol keyboard alt key */
+    public static final int KEYCODE_4KEY_MODE        = -300;
+    /** Key code for symbol keyboard up key */
+    public static final int KEYCODE_4KEY_UP          = -301;
+    /** Key code for symbol keyboard down key */
+    public static final int KEYCODE_4KEY_DOWN        = -302;
+    /** Key code for symbol keyboard del key */
+    public static final int KEYCODE_4KEY_CLEAR       = -303;
+
     /* for Qwerty keyboard */
     /** Qwerty keyboard [DEL] */
     public static final int KEYCODE_QWERTY_BACKSPACE = -100;
@@ -146,7 +159,7 @@
     protected KeyboardView mKeyboardView;
     
     /** View objects (main side) */
-    protected ViewGroup mMainView;
+    protected BaseInputView mMainView;
     /** View objects (sub side) */
     protected ViewGroup mSubView;
     
@@ -262,6 +275,15 @@
     /** Whether the H/W keyboard is hidden. */
     protected boolean mHardKeyboardHidden = true;
 
+    /** Whether the H/W 12key keyboard. */
+    protected boolean mEnableHardware12Keyboard = false;
+
+    /** Symbol keyboard */
+    protected Keyboard mSymbolKeyboard;
+
+    /** Symbol keyboard state */
+    protected boolean mIsSymbolKeyboard = false;
+
     /**
      * Status of the composing text
      * <br>
@@ -278,6 +300,60 @@
     /** Key toggle cycle table currently using */
     protected String[] mCurrentCycleTable;
 
+    /** Event listener for symbol keyboard */
+    private OnKeyboardActionListener mSymbolOnKeyboardAction = new OnKeyboardActionListener() {
+        public void onKey(int primaryCode, int[] keyCodes) {
+            switch (primaryCode) {
+            case KEYCODE_4KEY_MODE:
+                mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_KEY,
+                                              new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)));
+                break;
+
+            case KEYCODE_4KEY_UP:
+                mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_UP));
+                break;
+
+            case KEYCODE_4KEY_DOWN:
+                mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_DOWN));
+                break;
+
+            case KEYCODE_4KEY_CLEAR:
+                InputConnection connection = mWnn.getCurrentInputConnection();
+                if (connection != null) {
+                    connection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));
+                }
+                return;
+
+            default:
+                break;
+            }
+        }
+        public void onPress(int primaryCode) {
+            playSoundAndVibration();
+        }
+        public void onText(CharSequence text) { }
+        public void swipeLeft() { }
+        public void swipeRight() { }
+        public void swipeUp() { }
+        public void swipeDown() { }
+        public void onRelease(int primaryCode) { }
+        public boolean onLongPress(Keyboard.Key key) {
+            switch (key.codes[0]) {
+            case KEYCODE_4KEY_UP:
+                mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_FULL_UP));
+                return true;
+
+            case KEYCODE_4KEY_DOWN:
+                mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_FULL_DOWN));
+                return true;
+
+            default:
+                break;
+            }
+            return false;
+        }
+    };
+
     /**
      * Constructor
      */
@@ -527,6 +603,9 @@
          */
         createKeyboards(parent);
 
+        /* create symbol keyboard */
+        mSymbolKeyboard = new Keyboard(parent, R.xml.keyboard_4key);
+
         SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(parent);
         String skin = pref.getString("keyboard_skin",
                                      mWnn.getResources().getString(R.string.keyboard_skin_id_default));
@@ -536,14 +615,17 @@
         mKeyboardView.setOnKeyboardActionListener(this);
         mCurrentKeyboard = null;
 
-        mMainView = (ViewGroup) parent.getLayoutInflater().inflate(R.layout.keyboard_default_main, null);
+        mMainView = (BaseInputView) parent.getLayoutInflater().inflate(R.layout.keyboard_default_main, null);
         mSubView = (ViewGroup) parent.getLayoutInflater().inflate(R.layout.keyboard_default_sub, null);
-        if (mDisplayMode == LANDSCAPE || !mHardKeyboardHidden) { 
-            mMainView.addView(mSubView);
+
+        if (!mHardKeyboardHidden) {
+            if (!mEnableHardware12Keyboard) {
+                mMainView.addView(mSubView);
+            }
         } else if (mKeyboardView != null) {
             mMainView.addView(mKeyboardView);
         }
-        
+
         return mMainView;
     }
     
@@ -624,9 +706,6 @@
     
     /** @see jp.co.omronsoft.openwnn.InputViewManager#getCurrentView */
     public View getCurrentView() {
-        if (mCurrentKeyboard == null) {
-            return null;
-        }
         return mMainView;
     }
 
@@ -682,7 +761,12 @@
         }
 
         /* pop-up preview */
-        mKeyboardView.setPreviewEnabled(pref.getBoolean("popup_preview", true));
+        if (OpenWnn.isXLarge()) {
+            mKeyboardView.setPreviewEnabled(false);
+        } else {
+            mKeyboardView.setPreviewEnabled(pref.getBoolean("popup_preview", true));
+            mKeyboardView.clearWindowInfo();
+        }
 
     }
 
@@ -694,39 +778,63 @@
         mDisableKeyInput = true;
     }
 
+    /** @see jp.co.omronsoft.openwnn.InputViewManager#showInputView */
+    public void showInputView() {
+        if (mKeyboardView != null) {
+            mKeyboardView.setVisibility(View.VISIBLE);
+        }
+    }
+
+    /** @see jp.co.omronsoft.openwnn.InputViewManager#hideInputView */
+    public void hideInputView() {
+        mKeyboardView.setVisibility(View.GONE);
+    }
+
     /***********************************************************************
      * onKeyboardActionListener
      ***********************************************************************/
-    /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#onKey */
+    /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onKey */
     public void onKey(int primaryCode, int[] keyCodes) { }
 
-    /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#swipeRight */
+    /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeRight */
     public void swipeRight() { }
 
-    /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#swipeLeft */
+    /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeLeft */
     public void swipeLeft() { }
 
-    /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#swipeDown */
+    /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeDown */
     public void swipeDown() { }
 
-    /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#swipeUp */
+    /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeUp */
     public void swipeUp() { }
 
-    /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#onRelease */
+    /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onRelease */
     public void onRelease(int x) { }
 
-    /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#onPress */
+    /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onPress */
     public void onPress(int x) {
+        playSoundAndVibration();
+    }
+
+    /** @see android.jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onLongPress */
+    public boolean onLongPress(Keyboard.Key key) {
+        return false;
+    }
+
+    /**
+     * Play sound & vibration.
+     */
+    private void playSoundAndVibration() {
         /* key click sound & vibration */
         if (mVibrator != null) {
-            try { mVibrator.vibrate(30); } catch (Exception ex) { }
+            try { mVibrator.vibrate(5); } catch (Exception ex) { }
         }
         if (mSound != null) {
             try { mSound.seekTo(0); mSound.start(); } catch (Exception ex) { }
         }
     }
-    
-    /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#onText */
+
+    /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onText */
     public void onText(CharSequence text) {}
 
     /**
@@ -757,6 +865,15 @@
     }
 
     /**
+     * Set the H/W keyboard's type.
+     *
+     * @param type12Key {@code true} if 12Key.
+     */
+    public void setHardware12Keyboard(boolean type12Key) {
+        mEnableHardware12Keyboard = type12Key;
+    }
+
+    /**
      * Get current keyboard view.
      */
     public View getKeyboardView() {
@@ -772,4 +889,25 @@
         mCurrentKeyboard = null;
         changeKeyboard(keyboard);
     }
+
+    /**
+     * Set the normal keyboard.
+     */
+    public void setNormalKeyboard() {
+        if (mCurrentKeyboard == null) {
+            return;
+        }
+        mKeyboardView.setKeyboard(mCurrentKeyboard);
+        mKeyboardView.setOnKeyboardActionListener(this);
+        mIsSymbolKeyboard = false;
+    }
+
+    /**
+     * Set the symbol keyboard.
+     */
+    public void setSymbolKeyboard() {
+        mKeyboardView.setKeyboard(mSymbolKeyboard);
+        mKeyboardView.setOnKeyboardActionListener(mSymbolOnKeyboardAction);
+        mIsSymbolKeyboard = true;
+    }
 }
diff --git a/src/jp/co/omronsoft/openwnn/EN/ClearUserDictionaryDialogPreferenceEN.java b/src/jp/co/omronsoft/openwnn/EN/ClearUserDictionaryDialogPreferenceEN.java
index 10fb86c..aef2c1c 100644
--- a/src/jp/co/omronsoft/openwnn/EN/ClearUserDictionaryDialogPreferenceEN.java
+++ b/src/jp/co/omronsoft/openwnn/EN/ClearUserDictionaryDialogPreferenceEN.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/EN/DefaultSoftKeyboardEN.java b/src/jp/co/omronsoft/openwnn/EN/DefaultSoftKeyboardEN.java
index 4cdcc9a..33df09f 100644
--- a/src/jp/co/omronsoft/openwnn/EN/DefaultSoftKeyboardEN.java
+++ b/src/jp/co/omronsoft/openwnn/EN/DefaultSoftKeyboardEN.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,12 +18,13 @@
 
 import jp.co.omronsoft.openwnn.*;
 import android.content.SharedPreferences;
-import android.inputmethodservice.Keyboard;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputConnection;
 
+import jp.co.omronsoft.openwnn.Keyboard;
+
 import android.util.Log;
 
 /**
diff --git a/src/jp/co/omronsoft/openwnn/EN/OpenWnnEngineEN.java b/src/jp/co/omronsoft/openwnn/EN/OpenWnnEngineEN.java
index 4a71690..7efeb7d 100644
--- a/src/jp/co/omronsoft/openwnn/EN/OpenWnnEngineEN.java
+++ b/src/jp/co/omronsoft/openwnn/EN/OpenWnnEngineEN.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/EN/TutorialEN.java b/src/jp/co/omronsoft/openwnn/EN/TutorialEN.java
index cb2f1d8..61dc1b0 100644
--- a/src/jp/co/omronsoft/openwnn/EN/TutorialEN.java
+++ b/src/jp/co/omronsoft/openwnn/EN/TutorialEN.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsEditEN.java b/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsEditEN.java
index d052f7f..8e3a6d3 100644
--- a/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsEditEN.java
+++ b/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsEditEN.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsListEN.java b/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsListEN.java
index 483b25a..f032d64 100644
--- a/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsListEN.java
+++ b/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsListEN.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
 package jp.co.omronsoft.openwnn.EN;
 
 import jp.co.omronsoft.openwnn.*;
+import android.os.Bundle;
 import android.view.View;
 import android.view.Window;
 import java.util.Comparator;
@@ -31,18 +32,18 @@
      * Constructor
      */
     public UserDictionaryToolsListEN() {
-		if (OpenWnnEN.getInstance() == null) {
-			new OpenWnnEN(this);
-		}
+        if (OpenWnnEN.getInstance() == null) {
+            new OpenWnnEN(this);
+        }
         mListViewName = "jp.co.omronsoft.openwnn.EN.UserDictionaryToolsListEN";
         mEditViewName = "jp.co.omronsoft.openwnn.EN.UserDictionaryToolsEditEN";
         mPackageName  = "jp.co.omronsoft.openwnn";
     }
 
-    /** @see jp.co.omronsoft.openwnn.UserDictionaryToolsList#headerCreate */
-    @Override protected void headerCreate() {
-      getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
-      R.layout.user_dictionary_tools_list_header);
+    /** @see jp.co.omronsoft.iwnnime.ml.UserDictionaryToolsList#onCreate */
+    @Override protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setTitle(R.string.user_dictionary_list_words_en);
     }
 
     /** @see jp.co.omronsoft.openwnn.UserDictionaryToolsList#createUserDictionaryToolsEdit */
diff --git a/src/jp/co/omronsoft/openwnn/InputViewManager.java b/src/jp/co/omronsoft/openwnn/InputViewManager.java
index f6e15ec..235721a 100644
--- a/src/jp/co/omronsoft/openwnn/InputViewManager.java
+++ b/src/jp/co/omronsoft/openwnn/InputViewManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,7 +23,7 @@
 /**
  * The interface of input view manager used by OpenWnn.
  *
- * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
+ * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
  */
 public interface InputViewManager {
     /**
@@ -63,4 +63,15 @@
      * Close the input view.
      */
     public void closing();
+ 
+    /**
+     * Show the input view.
+     */
+    public void showInputView();
+
+    /**
+     * Hide the input view.
+     */
+    public void hideInputView();
+
 }
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/ClearLearnDictionaryDialogPreferenceJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/ClearLearnDictionaryDialogPreferenceJAJP.java
index ff6c27e..7df0a4d 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/ClearLearnDictionaryDialogPreferenceJAJP.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/ClearLearnDictionaryDialogPreferenceJAJP.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/ClearUserDictionaryDialogPreferenceJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/ClearUserDictionaryDialogPreferenceJAJP.java
index 6e132d2..70aa469 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/ClearUserDictionaryDialogPreferenceJAJP.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/ClearUserDictionaryDialogPreferenceJAJP.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/DefaultSoftKeyboardJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/DefaultSoftKeyboardJAJP.java
index 8079d2f..e3e6cc4 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/DefaultSoftKeyboardJAJP.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/DefaultSoftKeyboardJAJP.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,14 +16,21 @@
 
 package jp.co.omronsoft.openwnn.JAJP;
 
+import android.app.AlertDialog;
 import jp.co.omronsoft.openwnn.*;
+import android.content.DialogInterface;
+import android.content.res.Resources;
 import android.view.KeyEvent;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputConnection;
-import android.inputmethodservice.Keyboard;
 import android.util.Log;
 import android.view.View;
 import android.content.SharedPreferences;
+
+import jp.co.omronsoft.openwnn.Keyboard;
+import jp.co.omronsoft.openwnn.BaseInputView;
+import jp.co.omronsoft.openwnn.R;
+
 import java.util.HashMap;
 import java.util.Locale;
 import java.util.List;
@@ -308,7 +315,11 @@
     /** Default constructor */
     public DefaultSoftKeyboardJAJP() {
         mCurrentLanguage     = LANG_JA;
-        mCurrentKeyboardType = KEYBOARD_12KEY;
+        if (OpenWnn.isXLarge()) {
+            mCurrentKeyboardType = KEYBOARD_QWERTY;
+        } else {
+            mCurrentKeyboardType = KEYBOARD_12KEY;
+        }
         mShiftOn             = KEYBOARD_SHIFT_OFF;
         mCurrentKeyMode      = KEYMODE_JA_FULL_HIRAGANA;
     }
@@ -334,6 +345,9 @@
                 mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE,
                                               OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY));
             }
+        } else if (mEnableHardware12Keyboard) {
+            mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE,
+                                          OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_12KEY));
         } else {
             mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE,
                                           OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY));
@@ -511,7 +525,7 @@
             break;
 
         case KEYCODE_JP12_REVERSE:
-            if (!mNoInput) {
+            if (!mNoInput && !mEnableHardware12Keyboard) {
                 mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.TOGGLE_REVERSE_CHAR, mCurrentCycleTable));
             }
             break;
@@ -684,7 +698,13 @@
     /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#setPreferences */
     @Override public void setPreferences(SharedPreferences pref, EditorInfo editor) {
         mPrefEditor = pref.edit();
-        boolean isQwerty = pref.getBoolean("opt_enable_qwerty", false);
+        boolean isQwerty;
+        if (OpenWnn.isXLarge()) {
+            isQwerty = pref.getBoolean("opt_enable_qwerty", true);
+        } else {
+            isQwerty = pref.getBoolean("opt_enable_qwerty", false);
+        }
+
         if (isQwerty && (mCurrentKeyboardType == KEYBOARD_12KEY)) {
             changeKeyboardType(KEYBOARD_QWERTY);
         }
@@ -729,6 +749,8 @@
         case EditorInfo.TYPE_CLASS_PHONE:
             if (mHardKeyboardHidden) {
                 mLimitedKeyMode = new int[] {KEYMODE_JA_HALF_PHONE};
+            } else if (mEnableHardware12Keyboard) {
+                mLimitedKeyMode = new int[] {KEYMODE_JA_HALF_NUMBER};
             } else {
                 mLimitedKeyMode = new int[] {KEYMODE_JA_HALF_ALPHABET};
             }
@@ -836,65 +858,83 @@
      */
     private void createKeyboardsPortrait(OpenWnn parent) {
         Keyboard[][] keyList;
-        /* qwerty shift_off (portrait) */
-        keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF];
-        keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp);
-        keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet);
-        keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols);
-        keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana);
-        keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet);
-        keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols);
-        keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana);
-        keyList[KEYMODE_JA_HALF_PHONE][0]    = new Keyboard(parent, R.xml.keyboard_12key_phone);
+        if (OpenWnn.isXLarge()) {
+            /* qwerty shift_off (portrait) */
+            keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF];
+            keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp);
+            keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols);
+            keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet);
+            keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols);
+            keyList[KEYMODE_JA_HALF_PHONE][0]    = new Keyboard(parent, R.xml.keyboard_12key_phone);
 
-        /* qwerty shift_on (portrait) */
-        keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON];
-        keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift);
-        keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_shift);
-        keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift);
-        keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_shift);
-        keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift);
-        keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift);
-        keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_shift);
-        keyList[KEYMODE_JA_HALF_PHONE][0] =
-            mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0];
+            /* qwerty shift_on (portrait) */
+            keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON];
+            keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift);
+            keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift);
+            keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift);
+            keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift);
+            keyList[KEYMODE_JA_HALF_PHONE][0] =
+                mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0];
+        } else {
+            /* qwerty shift_off (portrait) */
+            keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF];
+            keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp);
+            keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet);
+            keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols);
+            keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana);
+            keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet);
+            keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols);
+            keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana);
+            keyList[KEYMODE_JA_HALF_PHONE][0]    = new Keyboard(parent, R.xml.keyboard_12key_phone);
+
+            /* qwerty shift_on (portrait) */
+            keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON];
+            keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift);
+            keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_shift);
+            keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift);
+            keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_shift);
+            keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift);
+            keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift);
+            keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_shift);
+            keyList[KEYMODE_JA_HALF_PHONE][0] =
+                mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0];
 
 
-        /* 12-keys shift_off (portrait) */
-        keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF];
-        keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_12keyjp);
-        keyList[KEYMODE_JA_FULL_HIRAGANA][1] = new Keyboard(parent, R.xml.keyboard_12keyjp_input);
-        keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet);
-        keyList[KEYMODE_JA_FULL_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_input);
-        keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_12key_full_num);
-        keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana);
-        keyList[KEYMODE_JA_FULL_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_input);
-        keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet);
-        keyList[KEYMODE_JA_HALF_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_input);
-        keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_12key_half_num);
-        keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana);
-        keyList[KEYMODE_JA_HALF_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_input);
-        keyList[KEYMODE_JA_HALF_PHONE][0]    = new Keyboard(parent, R.xml.keyboard_12key_phone);
+            /* 12-keys shift_off (portrait) */
+            keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF];
+            keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_12keyjp);
+            keyList[KEYMODE_JA_FULL_HIRAGANA][1] = new Keyboard(parent, R.xml.keyboard_12keyjp_input);
+            keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet);
+            keyList[KEYMODE_JA_FULL_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_input);
+            keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_12key_full_num);
+            keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana);
+            keyList[KEYMODE_JA_FULL_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_input);
+            keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet);
+            keyList[KEYMODE_JA_HALF_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_input);
+            keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_12key_half_num);
+            keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana);
+            keyList[KEYMODE_JA_HALF_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_input);
+            keyList[KEYMODE_JA_HALF_PHONE][0]    = new Keyboard(parent, R.xml.keyboard_12key_phone);
 
-        /* 12-keys shift_on (portrait) */
-        keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_ON];
-        keyList[KEYMODE_JA_FULL_HIRAGANA]
-            = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_HIRAGANA];
-        keyList[KEYMODE_JA_FULL_ALPHABET]
-            = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_ALPHABET];
-        keyList[KEYMODE_JA_FULL_NUMBER]
-            = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_NUMBER];
-        keyList[KEYMODE_JA_FULL_KATAKANA]
-            = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_KATAKANA];
-        keyList[KEYMODE_JA_HALF_ALPHABET]
-            = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_ALPHABET];;
-        keyList[KEYMODE_JA_HALF_NUMBER]
-            = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_NUMBER];
-        keyList[KEYMODE_JA_HALF_KATAKANA]
-            = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_KATAKANA];
-        keyList[KEYMODE_JA_HALF_PHONE]
-            = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE];
-
+            /* 12-keys shift_on (portrait) */
+            keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_ON];
+            keyList[KEYMODE_JA_FULL_HIRAGANA]
+                = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_HIRAGANA];
+            keyList[KEYMODE_JA_FULL_ALPHABET]
+                = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_ALPHABET];
+            keyList[KEYMODE_JA_FULL_NUMBER]
+                = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_NUMBER];
+            keyList[KEYMODE_JA_FULL_KATAKANA]
+                = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_KATAKANA];
+            keyList[KEYMODE_JA_HALF_ALPHABET]
+                = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_ALPHABET];;
+            keyList[KEYMODE_JA_HALF_NUMBER]
+                = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_NUMBER];
+            keyList[KEYMODE_JA_HALF_KATAKANA]
+                = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_KATAKANA];
+            keyList[KEYMODE_JA_HALF_PHONE]
+                = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE];
+        }
     }
 
     /**
@@ -903,71 +943,84 @@
      * @param parent  The context
      */
     private void createKeyboardsLandscape(OpenWnn parent) {
-    	/*
         Keyboard[][] keyList;
-        */
-        /* qwerty shift_off (landscape) */
-        /*
-        keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF];
-        keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_landscape);
-        keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_landscape);
-        keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_landscape);
-        keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_landscape);
-        keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_landscape);
-        keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_landscape);
-        keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_landscape);
-        keyList[KEYMODE_JA_HALF_PHONE][0]    = new Keyboard(parent, R.xml.keyboard_12key_phone_landscape);
-        */
-        /* qwerty shift_on (landscape) */
-        /*
-        keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON];
-        keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift_landscape);
-        keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_shift_landscape);
-        keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift_landscape);
-        keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_shift_landscape);
-        keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift_landscape);
-        keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift_landscape);
-        keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_shift_landscape);
-        keyList[KEYMODE_JA_HALF_PHONE][0] =
-            mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0];
-        */
-        /* 12-keys shift_off (landscape) */
-        /*
-        keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF];
-        keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_12keyjp_landscape);
-        keyList[KEYMODE_JA_FULL_HIRAGANA][1] = new Keyboard(parent, R.xml.keyboard_12keyjp_input_landscape);
-        keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_landscape);
-        keyList[KEYMODE_JA_FULL_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_input_landscape);
-        keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_12key_full_num_landscape);
-        keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_landscape);
-        keyList[KEYMODE_JA_FULL_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_input_landscape);
-        keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_landscape);
-        keyList[KEYMODE_JA_HALF_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_input_landscape);
-        keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_12key_half_num_landscape);
-        keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_landscape);
-        keyList[KEYMODE_JA_HALF_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_input_landscape);
-        keyList[KEYMODE_JA_HALF_PHONE][0]    = new Keyboard(parent, R.xml.keyboard_12key_phone_landscape);
-        */
-        /* 12-keys shift_on (landscape) */
-        /*
-        keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_ON];
-        keyList[KEYMODE_JA_FULL_HIRAGANA]
-            = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_HIRAGANA];
-        keyList[KEYMODE_JA_FULL_ALPHABET]
-            = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_ALPHABET];
-        keyList[KEYMODE_JA_FULL_NUMBER]
-            = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_NUMBER];
-        keyList[KEYMODE_JA_FULL_KATAKANA]
-            = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_KATAKANA];
-        keyList[KEYMODE_JA_HALF_ALPHABET]
-            = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_ALPHABET];;
-        keyList[KEYMODE_JA_HALF_NUMBER]
-            = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_NUMBER];
-        keyList[KEYMODE_JA_HALF_KATAKANA]
-            = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_KATAKANA];
-        keyList[KEYMODE_JA_HALF_PHONE]
-            = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE];
-        */
+        if (OpenWnn.isXLarge()) {
+            /* qwerty shift_off (landscape) */
+            keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF];
+            keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp);
+            keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols);
+            keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet);
+            keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols);
+            keyList[KEYMODE_JA_HALF_PHONE][0]    = new Keyboard(parent, R.xml.keyboard_12key_phone);
+
+            /* qwerty shift_on (landscape) */
+            keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON];
+            keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift);
+            keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift);
+            keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift);
+            keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift);
+            keyList[KEYMODE_JA_HALF_PHONE][0] =
+                mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0];
+        } else {
+            /* qwerty shift_off (landscape) */
+            keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF];
+            keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp);
+            keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet);
+            keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols);
+            keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana);
+            keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet);
+            keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols);
+            keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana);
+            keyList[KEYMODE_JA_HALF_PHONE][0]    = new Keyboard(parent, R.xml.keyboard_12key_phone);
+
+            /* qwerty shift_on (landscape) */
+            keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON];
+            keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift);
+            keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_shift);
+            keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift);
+            keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_shift);
+            keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift);
+            keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift);
+            keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_shift);
+            keyList[KEYMODE_JA_HALF_PHONE][0] =
+                mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0];
+
+
+            /* 12-keys shift_off (landscape) */
+            keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF];
+            keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_12keyjp);
+            keyList[KEYMODE_JA_FULL_HIRAGANA][1] = new Keyboard(parent, R.xml.keyboard_12keyjp_input);
+            keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet);
+            keyList[KEYMODE_JA_FULL_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_input);
+            keyList[KEYMODE_JA_FULL_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_12key_full_num);
+            keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana);
+            keyList[KEYMODE_JA_FULL_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_input);
+            keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet);
+            keyList[KEYMODE_JA_HALF_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_input);
+            keyList[KEYMODE_JA_HALF_NUMBER][0]   = new Keyboard(parent, R.xml.keyboard_12key_half_num);
+            keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana);
+            keyList[KEYMODE_JA_HALF_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_input);
+            keyList[KEYMODE_JA_HALF_PHONE][0]    = new Keyboard(parent, R.xml.keyboard_12key_phone);
+
+            /* 12-keys shift_on (landscape) */
+            keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_ON];
+            keyList[KEYMODE_JA_FULL_HIRAGANA]
+                = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_HIRAGANA];
+            keyList[KEYMODE_JA_FULL_ALPHABET]
+                = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_ALPHABET];
+            keyList[KEYMODE_JA_FULL_NUMBER]
+                = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_NUMBER];
+            keyList[KEYMODE_JA_FULL_KATAKANA]
+                = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_KATAKANA];
+            keyList[KEYMODE_JA_HALF_ALPHABET]
+                = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_ALPHABET];;
+            keyList[KEYMODE_JA_HALF_NUMBER]
+                = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_NUMBER];
+            keyList[KEYMODE_JA_HALF_KATAKANA]
+                = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_KATAKANA];
+            keyList[KEYMODE_JA_HALF_PHONE]
+                = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE];
+         }
     }
 
     /**
@@ -1140,13 +1193,19 @@
     @Override public void setHardKeyboardHidden(boolean hidden) {
         if (mWnn != null) {
             if (!hidden) {
-                mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE,
-                                              OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY));
+                if (mEnableHardware12Keyboard) {
+                    mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE,
+                                                  OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_12KEY));
+                } else {
+                    mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE,
+                                                  OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY));
+                }
             }
 
             if (mHardKeyboardHidden != hidden) {
                 if ((mLimitedKeyMode != null)
-                    || ((mCurrentKeyMode != KEYMODE_JA_FULL_HIRAGANA)
+                    || (!mEnableHardware12Keyboard
+                        && (mCurrentKeyMode != KEYMODE_JA_FULL_HIRAGANA)
                         && (mCurrentKeyMode != KEYMODE_JA_HALF_ALPHABET))) {
 
                     mLastInputType = EditorInfo.TYPE_NULL;
@@ -1159,6 +1218,22 @@
         super.setHardKeyboardHidden(hidden);
     }
 
+    /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#setHardware12Keyboard */
+    @Override public void setHardware12Keyboard(boolean type12Key) {
+        if (mWnn != null) {
+            if (mEnableHardware12Keyboard != type12Key) {
+                if (type12Key) {
+                    mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE,
+                                                  OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_12KEY));
+                } else {
+                    mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE,
+                                                  OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY));
+                }
+            }
+        }
+        super.setHardware12Keyboard(type12Key);
+    }
+
     /**
      * Change the key-mode to the allowed one which is restricted
      *  by the text input field or the type of the keyboard.
@@ -1170,7 +1245,7 @@
         int[] limits = mLimitedKeyMode;
 
         if (!mHardKeyboardHidden) { /* for hardware keyboard */
-            if ((targetMode != KEYMODE_JA_FULL_HIRAGANA)
+            if (!mEnableHardware12Keyboard && (targetMode != KEYMODE_JA_FULL_HIRAGANA)
                 && (targetMode != KEYMODE_JA_HALF_ALPHABET)) {
 
                 Locale locale = Locale.getDefault();
@@ -1219,4 +1294,98 @@
 
         return targetMode;
     }
+
+    /**
+     * Shows input mode choosing dialog.
+     *
+     * @return boolean
+     */
+    public boolean showInputModeSwitchDialog() {
+        BaseInputView baseInputView = (BaseInputView)getCurrentView();
+        AlertDialog.Builder builder = new AlertDialog.Builder(baseInputView.getContext());
+        builder.setCancelable(true);
+        builder.setNegativeButton(R.string.dialog_button_cancel, null);
+ 
+        Resources r = baseInputView.getResources();
+        CharSequence itemFullHirakana = r.getString(R.string.ti_input_mode_full_hirakana_title_txt);
+        CharSequence itemFullKatakana = r.getString(R.string.ti_input_mode_full_katakana_title_txt);
+        CharSequence itemHalfKatakana = r.getString(R.string.ti_input_mode_half_katakana_title_txt);
+        CharSequence itemFullAlphabet = r.getString(R.string.ti_input_mode_full_alphabet_title_txt);
+        CharSequence itemHalfAlphabet = r.getString(R.string.ti_input_mode_half_alphabet_title_txt);
+        CharSequence itemFullNumber = r.getString(R.string.ti_input_mode_full_number_title_txt);
+        CharSequence itemHalfNumber = r.getString(R.string.ti_input_mode_half_number_title_txt);
+        final CharSequence[] itemTitles;
+        final int[] itemValues;
+        if (OpenWnn.isXLarge()) {
+            itemTitles = new CharSequence[] {itemFullHirakana, itemHalfAlphabet,
+                                                itemFullNumber, itemHalfNumber};
+            itemValues = new int[] {KEYMODE_JA_FULL_HIRAGANA, KEYMODE_JA_HALF_ALPHABET,
+                                        KEYMODE_JA_FULL_NUMBER, KEYMODE_JA_HALF_NUMBER};
+        } else {
+            itemTitles = new CharSequence[] {itemFullHirakana, itemFullKatakana, itemHalfKatakana,
+                                               itemFullAlphabet, itemHalfAlphabet, itemFullNumber,
+                                               itemHalfNumber};
+            itemValues = new int[] {KEYMODE_JA_FULL_HIRAGANA, KEYMODE_JA_FULL_KATAKANA, KEYMODE_JA_HALF_KATAKANA,
+                    KEYMODE_JA_FULL_ALPHABET, KEYMODE_JA_HALF_ALPHABET, KEYMODE_JA_FULL_NUMBER, KEYMODE_JA_HALF_NUMBER};
+        }
+
+        builder.setSingleChoiceItems(itemTitles, findIndexOfValue(itemValues,
+                mCurrentKeyMode), new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface inputModeSwitchDialog, int position) {
+                switch(position){
+                    case 0:
+                        changeKeyMode(itemValues[0]);
+                        break;
+ 
+                    case 1:
+                        changeKeyMode(itemValues[1]);
+                        break;
+ 
+                    case 2:
+                        changeKeyMode(itemValues[2]);
+                        break;
+ 
+                    case 3:
+                        changeKeyMode(itemValues[3]);
+                        break;
+ 
+                    case 4:
+                        changeKeyMode(itemValues[4]);
+                        break;
+ 
+                    case 5:
+                        changeKeyMode(itemValues[5]);
+                        break;
+ 
+                    case 6:
+                        changeKeyMode(itemValues[6]);
+                        break;
+ 
+                    default:
+                        break;
+                }
+                inputModeSwitchDialog.dismiss();
+            }
+        });
+ 
+        builder.setTitle(r.getString(R.string.ti_long_press_dialog_input_mode_txt));
+        baseInputView.showDialog(builder);
+        return true;
+    }
+
+    /**
+     * Finds the index of a value in a int[].
+     *
+     * @param value   the int[] to search in,
+     * @param mode    the value need to find index,
+     * @return the index of the value.
+     */
+    private int findIndexOfValue(int[] value, int mode) {
+        for (int i = 0; i < value.length; i++) {
+            if (value[i] == mode) {
+                return i;
+            }
+        }
+        return -1;
+    }
 }
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/KanaConverter.java b/src/jp/co/omronsoft/openwnn/JAJP/KanaConverter.java
index 05d1199..a6378bb 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/KanaConverter.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/KanaConverter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/KeyboardListPreferenceJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/KeyboardListPreferenceJAJP.java
index 2c60599..3c93e0a 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/KeyboardListPreferenceJAJP.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/KeyboardListPreferenceJAJP.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnClauseConverterJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnClauseConverterJAJP.java
index 7114e52..fb0145f 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnClauseConverterJAJP.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnClauseConverterJAJP.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -539,4 +539,4 @@
     private WnnClause defaultClause(String input) {
         return (new WnnClause(input, input, mPosDefault, (CLAUSE_COST - 1) * input.length()));
     }
-}
+}
\ No newline at end of file
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnEngineJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnEngineJAJP.java
index 1181202..900a4ea 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnEngineJAJP.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnEngineJAJP.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -38,7 +38,7 @@
 /**
  * The OpenWnn engine class for Japanese IME.
  * 
- * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
+ * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
  */
 public class OpenWnnEngineJAJP implements WnnEngine {
     /** Current dictionary type */
@@ -78,7 +78,10 @@
     public static final int MAX_OUTPUT_LENGTH = 50;
     /** Limitation of predicted candidates */
     public static final int PREDICT_LIMIT = 100;
-   
+
+    /** Limitation of candidates one-line */
+    public static final int LIMIT_OF_CANDIDATES_1LINE = 500;
+
     /** OpenWnn dictionary */
     private WnnDictionary mDictionaryJP;
 
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/Romkan.java b/src/jp/co/omronsoft/openwnn/JAJP/Romkan.java
index 797b81e..398b589 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/Romkan.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/Romkan.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/RomkanFullKatakana.java b/src/jp/co/omronsoft/openwnn/JAJP/RomkanFullKatakana.java
index 37fd6ed..d070686 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/RomkanFullKatakana.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/RomkanFullKatakana.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/RomkanHalfKatakana.java b/src/jp/co/omronsoft/openwnn/JAJP/RomkanHalfKatakana.java
index b119fe8..867caf2 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/RomkanHalfKatakana.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/RomkanHalfKatakana.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/TutorialJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/TutorialJAJP.java
index edf5ddd..d94f019 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/TutorialJAJP.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/TutorialJAJP.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsEditJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsEditJAJP.java
index 8966038..45d81cd 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsEditJAJP.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsEditJAJP.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsListJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsListJAJP.java
index 87d1e4d..a5c1c63 100644
--- a/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsListJAJP.java
+++ b/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsListJAJP.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
 package jp.co.omronsoft.openwnn.JAJP;
 
 import jp.co.omronsoft.openwnn.*;
+import android.os.Bundle;
 import android.view.View;
 import android.view.Window;
 import java.util.Comparator;
@@ -36,10 +37,10 @@
         mPackageName  = "jp.co.omronsoft.openwnn";
     }
 
-    /** @see jp.co.omronsoft.openwnn.UserDictionaryToolsList#headerCreate */
-    @Override protected void headerCreate() {
-      getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
-    		  R.layout.user_dictionary_tools_list_header_ja);
+    /** @see jp.co.omronsoft.iwnnime.ml.UserDictionaryToolsList#onCreate */
+    @Override protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setTitle(R.string.user_dictionary_list_words_ja);
     }
 
     /** @see jp.co.omronsoft.openwnn.UserDictionaryToolsList#createUserDictionaryToolsEdit */
diff --git a/src/jp/co/omronsoft/openwnn/KeyAction.java b/src/jp/co/omronsoft/openwnn/KeyAction.java
new file mode 100644
index 0000000..b956670
--- /dev/null
+++ b/src/jp/co/omronsoft/openwnn/KeyAction.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package jp.co.omronsoft.openwnn;
+
+public class KeyAction {
+    /** KeyDownAction*/
+    boolean mConsumeDownEvent;
+    /** KeyCode*/
+    int  mKeyCode;
+}
diff --git a/src/jp/co/omronsoft/openwnn/Keyboard.java b/src/jp/co/omronsoft/openwnn/Keyboard.java
new file mode 100644
index 0000000..1f5f648
--- /dev/null
+++ b/src/jp/co/omronsoft/openwnn/Keyboard.java
@@ -0,0 +1,861 @@
+/*
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+ * This file is porting from Android framework.
+ *   frameworks/base/core/java/android/inputmethodservice/Keyboard.java
+ *
+ * package android.inputmethodservice;
+ */
+package jp.co.omronsoft.openwnn;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.content.res.XmlResourceParser;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.TypedValue;
+import android.util.Xml;
+import android.util.DisplayMetrics;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+/**
+ * Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard
+ * consists of rows of keys.
+ * <p>The layout file for a keyboard contains XML that looks like the following snippet:</p>
+ * <pre>
+ * &lt;Keyboard
+ *         android:keyWidth="%10p"
+ *         android:keyHeight="50px"
+ *         android:horizontalGap="2px"
+ *         android:verticalGap="2px" &gt;
+ *     &lt;Row android:keyWidth="32px" &gt;
+ *         &lt;Key android:keyLabel="A" /&gt;
+ *         ...
+ *     &lt;/Row&gt;
+ *     ...
+ * &lt;/Keyboard&gt;
+ * </pre>
+ */
+public class Keyboard {
+
+    static final String TAG = "Keyboard";
+
+    private static final String TAG_KEYBOARD = "Keyboard";
+    private static final String TAG_ROW = "Row";
+    private static final String TAG_KEY = "Key";
+
+    /** Edge of left */
+    public static final int EDGE_LEFT = 0x01;
+
+    /** Edge of right */
+    public static final int EDGE_RIGHT = 0x02;
+
+    /** Edge of top */
+    public static final int EDGE_TOP = 0x04;
+
+    /** Edge of bottom */
+    public static final int EDGE_BOTTOM = 0x08;
+
+    /** Keycode of SHIFT */
+    public static final int KEYCODE_SHIFT = -1;
+
+    /** Keycode of MODE_CHANGE */
+    public static final int KEYCODE_MODE_CHANGE = -2;
+
+    /** Keycode of CANCEL */
+    public static final int KEYCODE_CANCEL = -3;
+
+    /** Keycode of DONE */
+    public static final int KEYCODE_DONE = -4;
+
+    /** Keycode of DELETE */
+    public static final int KEYCODE_DELETE = -5;
+
+    /** Keycode of ALT */
+    public static final int KEYCODE_ALT = -6;
+ 
+    /** Keyboard label **/
+    private CharSequence mLabel;
+
+    /** Horizontal gap default for all rows */
+    private int mDefaultHorizontalGap;
+ 
+    /** Default key width */
+    private int mDefaultWidth;
+
+    /** Default key height */
+    private int mDefaultHeight;
+
+    /** Default gap between rows */
+    private int mDefaultVerticalGap;
+
+    /** Is the keyboard in the shifted state */
+    private boolean mShifted;
+ 
+    /** Key instance for the shift key, if present */
+    private Key mShiftKey;
+
+    /** Key index for the shift key, if present */
+    private int mShiftKeyIndex = -1;
+ 
+    /** Current key width, while loading the keyboard */
+    private int mKeyWidth;
+ 
+    /** Current key height, while loading the keyboard */
+    private int mKeyHeight;
+ 
+    /** Total height of the keyboard, including the padding and keys */
+    private int mTotalHeight;
+ 
+    /** 
+     * Total width of the keyboard, including left side gaps and keys, but not any gaps on the
+     * right side.
+     */
+    private int mTotalWidth;
+
+    /** List of keys in this keyboard */
+    private List<Key> mKeys;
+
+    /** List of modifier keys such as Shift & Alt, if any */
+    private List<Key> mModifierKeys;
+
+    /** Width of the screen available to fit the keyboard */
+    private int mDisplayWidth;
+
+    /** Height of the screen */
+    private int mDisplayHeight;
+
+    /** Keyboard mode, or zero, if none.  */
+    private int mKeyboardMode;
+
+ 
+    private static final int GRID_WIDTH = 10;
+    private static final int GRID_HEIGHT = 5;
+    private static final int GRID_SIZE = GRID_WIDTH * GRID_HEIGHT;
+    private int mCellWidth;
+    private int mCellHeight;
+    private int[][] mGridNeighbors;
+    private int mProximityThreshold;
+    /** Number of key widths from current touch point to search for nearest keys. */
+    private static float SEARCH_DISTANCE = 1.8f;
+
+    /**
+     * Container for keys in the keyboard. All keys in a row are at the same Y-coordinate.
+     * Some of the key size defaults can be overridden per row from what the {@link Keyboard}
+     * defines.
+     */
+    public static class Row {
+        /** Default width of a key in this row. */
+        public int defaultWidth;
+        /** Default height of a key in this row. */
+        public int defaultHeight;
+        /** Default horizontal gap between keys in this row. */
+        public int defaultHorizontalGap;
+        /** Vertical gap following this row. */
+        public int verticalGap;
+        /**
+         * Edge flags for this row of keys. Possible values that can be assigned are
+         * {@link Keyboard#EDGE_TOP EDGE_TOP} and {@link Keyboard#EDGE_BOTTOM EDGE_BOTTOM}
+         */
+        public int rowEdgeFlags;
+ 
+        /** The keyboard mode for this row */
+        public int mode;
+ 
+        private Keyboard parent;
+
+        /** Constructor */
+        public Row(Keyboard parent) {
+            this.parent = parent;
+        }
+ 
+        /** Constructor */
+        public Row(Resources res, Keyboard parent, XmlResourceParser parser) {
+            this.parent = parent;
+            TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser),
+                    android.R.styleable.Keyboard);
+            defaultWidth = getDimensionOrFraction(a,
+                    android.R.styleable.Keyboard_keyWidth,
+                    parent.mDisplayWidth, parent.mDefaultWidth);
+            defaultHeight = getDimensionOrFraction(a,
+                    android.R.styleable.Keyboard_keyHeight,
+                    parent.mDisplayHeight, parent.mDefaultHeight);
+            defaultHorizontalGap = getDimensionOrFraction(a,
+                    android.R.styleable.Keyboard_horizontalGap,
+                    parent.mDisplayWidth, parent.mDefaultHorizontalGap);
+            verticalGap = getDimensionOrFraction(a,
+                    android.R.styleable.Keyboard_verticalGap,
+                    parent.mDisplayHeight, parent.mDefaultVerticalGap);
+            a.recycle();
+            a = res.obtainAttributes(Xml.asAttributeSet(parser),
+                    android.R.styleable.Keyboard_Row);
+            rowEdgeFlags = a.getInt(android.R.styleable.Keyboard_Row_rowEdgeFlags, 0);
+            mode = a.getResourceId(android.R.styleable.Keyboard_Row_keyboardMode,
+                    0);
+        }
+    }
+
+    /**
+     * Class for describing the position and characteristics of a single key in the keyboard.
+     */
+    public static class Key {
+        /**
+         * All the key codes (unicode or custom code) that this key could generate, zero'th
+         * being the most important.
+         */
+        public int[] codes;
+ 
+        /** Label to display */
+        public CharSequence label;
+ 
+        /** Icon to display instead of a label. Icon takes precedence over a label */
+        public Drawable icon;
+        /** Preview version of the icon, for the preview popup */
+        public Drawable iconPreview;
+        /** Width of the key, not including the gap */
+        public int width;
+        /** Height of the key, not including the gap */
+        public int height;
+        /** The horizontal gap before this key */
+        public int gap;
+        /** Whether this key is sticky, i.e., a toggle key */
+        public boolean sticky;
+        /** X coordinate of the key in the keyboard layout */
+        public int x;
+        /** Y coordinate of the key in the keyboard layout */
+        public int y;
+        /** The current pressed state of this key */
+        public boolean pressed;
+        /** If this is a sticky key, is it on? */
+        public boolean on;
+        /** Text to output when pressed. This can be multiple characters, like ".com" */
+        public CharSequence text;
+        /** Popup characters */
+        public CharSequence popupCharacters;
+ 
+        /**
+         * Flags that specify the anchoring to edges of the keyboard for detecting touch events
+         * that are just out of the boundary of the key. This is a bit mask of
+         * {@link Keyboard#EDGE_LEFT}, {@link Keyboard#EDGE_RIGHT}, {@link Keyboard#EDGE_TOP} and
+         * {@link Keyboard#EDGE_BOTTOM}.
+         */
+        public int edgeFlags;
+        /** Whether this is a modifier key, such as Shift or Alt */
+        public boolean modifier;
+        /** The keyboard that this key belongs to */
+        private Keyboard keyboard;
+        /**
+         * If this key pops up a mini keyboard, this is the resource id for the XML layout for that
+         * keyboard.
+         */
+        public int popupResId;
+        /** Whether this key repeats itself when held down */
+        public boolean repeatable;
+        /** Whether this key is 2nd key */
+        public boolean isSecondKey;
+
+        private final static int[] KEY_STATE_NORMAL_ON = {
+            android.R.attr.state_checkable,
+            android.R.attr.state_checked
+        };
+        
+        private final static int[] KEY_STATE_PRESSED_ON = {
+            android.R.attr.state_pressed,
+            android.R.attr.state_checkable,
+            android.R.attr.state_checked
+        };
+ 
+        private final static int[] KEY_STATE_NORMAL_OFF = { 
+            android.R.attr.state_checkable 
+        };
+
+        private final static int[] KEY_STATE_PRESSED_OFF = { 
+            android.R.attr.state_pressed, 
+            android.R.attr.state_checkable 
+        };
+ 
+        private final static int[] KEY_STATE_NORMAL = {
+        };
+ 
+        private final static int[] KEY_STATE_PRESSED = {
+            android.R.attr.state_pressed
+        };
+
+        /** Create an empty key with no attributes. */
+        public Key(Row parent) {
+            keyboard = parent.parent;
+            height = parent.defaultHeight;
+            width = parent.defaultWidth;
+            gap = parent.defaultHorizontalGap;
+            edgeFlags = parent.rowEdgeFlags;
+        }
+ 
+        /** Create a key with the given top-left coordinate and extract its attributes from
+         * the XML parser.
+         * @param res resources associated with the caller's context
+         * @param parent the row that this key belongs to. The row must already be attached to
+         * a {@link Keyboard}.
+         * @param x the x coordinate of the top-left
+         * @param y the y coordinate of the top-left
+         * @param parser the XML parser containing the attributes for this key
+         */
+        public Key(Resources res, Row parent, int x, int y, XmlResourceParser parser) {
+            this(parent);
+
+            this.x = x;
+            this.y = y;
+ 
+            TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), 
+                    android.R.styleable.Keyboard);
+
+            width = getDimensionOrFraction(a,
+                    android.R.styleable.Keyboard_keyWidth,
+                    keyboard.mDisplayWidth, parent.defaultWidth);
+            height = getDimensionOrFraction(a,
+                    android.R.styleable.Keyboard_keyHeight,
+                    keyboard.mDisplayHeight, parent.defaultHeight);
+            gap = getDimensionOrFraction(a,
+                    android.R.styleable.Keyboard_horizontalGap,
+                    keyboard.mDisplayWidth, parent.defaultHorizontalGap);
+            a.recycle();
+            a = res.obtainAttributes(Xml.asAttributeSet(parser),
+                    android.R.styleable.Keyboard_Key);
+            this.x += gap;
+            TypedValue codesValue = new TypedValue();
+            a.getValue(android.R.styleable.Keyboard_Key_codes,
+                    codesValue);
+            if (codesValue.type == TypedValue.TYPE_INT_DEC
+                    || codesValue.type == TypedValue.TYPE_INT_HEX) {
+                codes = new int[] { codesValue.data };
+            } else if (codesValue.type == TypedValue.TYPE_STRING) {
+                codes = parseCSV(codesValue.string.toString());
+            }
+ 
+            iconPreview = a.getDrawable(android.R.styleable.Keyboard_Key_iconPreview);
+            if (iconPreview != null) {
+                iconPreview.setBounds(0, 0, iconPreview.getIntrinsicWidth(),
+                        iconPreview.getIntrinsicHeight());
+            }
+            popupCharacters = a.getText(
+                    android.R.styleable.Keyboard_Key_popupCharacters);
+            popupResId = a.getResourceId(
+                    android.R.styleable.Keyboard_Key_popupKeyboard, 0);
+            repeatable = a.getBoolean(
+                    android.R.styleable.Keyboard_Key_isRepeatable, false);
+            modifier = a.getBoolean(
+                    android.R.styleable.Keyboard_Key_isModifier, false);
+            sticky = a.getBoolean(
+                    android.R.styleable.Keyboard_Key_isSticky, false);
+            edgeFlags = a.getInt(android.R.styleable.Keyboard_Key_keyEdgeFlags, 0);
+            edgeFlags |= parent.rowEdgeFlags;
+
+            icon = a.getDrawable(
+                    android.R.styleable.Keyboard_Key_keyIcon);
+            if (icon != null) {
+                icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight());
+            }
+            label = a.getText(android.R.styleable.Keyboard_Key_keyLabel);
+            text = a.getText(android.R.styleable.Keyboard_Key_keyOutputText);
+ 
+            if (codes == null && !TextUtils.isEmpty(label)) {
+                codes = new int[] { label.charAt(0) };
+            }
+            a.recycle();
+            a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.WnnKeyboard_Key);
+            isSecondKey = a.getBoolean(R.styleable.WnnKeyboard_Key_isSecondKey, false);
+            a.recycle();
+        }
+ 
+        /**
+         * Informs the key that it has been pressed, in case it needs to change its appearance or
+         * state.
+         * @see #onReleased(boolean)
+         */
+        public void onPressed() {
+            pressed = !pressed;
+        }
+ 
+        /**
+         * Changes the pressed state of the key. If it is a sticky key, it will also change the
+         * toggled state of the key if the finger was release inside.
+         * @param inside whether the finger was released inside the key
+         * @see #onPressed()
+         */
+        public void onReleased(boolean inside) {
+            pressed = !pressed;
+            if (sticky) {
+                on = !on;
+            }
+        }
+
+        int[] parseCSV(String value) {
+            int count = 0;
+            int lastIndex = 0;
+            if (value.length() > 0) {
+                count++;
+                while ((lastIndex = value.indexOf(",", lastIndex + 1)) > 0) {
+                    count++;
+                }
+            }
+            int[] values = new int[count];
+            count = 0;
+            StringTokenizer st = new StringTokenizer(value, ",");
+            while (st.hasMoreTokens()) {
+                try {
+                    values[count++] = Integer.parseInt(st.nextToken());
+                } catch (NumberFormatException nfe) {
+                    Log.e(TAG, "Error parsing keycodes " + value);
+                }
+            }
+            return values;
+        }
+
+        /**
+         * Detects if a point falls inside this key.
+         * @param x the x-coordinate of the point
+         * @param y the y-coordinate of the point
+         * @return whether or not the point falls inside the key. If the key is attached to an edge,
+         * it will assume that all points between the key and the edge are considered to be inside
+         * the key.
+         */
+        public boolean isInside(int x, int y) {
+            boolean leftEdge = (edgeFlags & EDGE_LEFT) > 0;
+            boolean rightEdge = (edgeFlags & EDGE_RIGHT) > 0;
+            boolean topEdge = (edgeFlags & EDGE_TOP) > 0;
+            boolean bottomEdge = (edgeFlags & EDGE_BOTTOM) > 0;
+            if ((x >= this.x || (leftEdge && x <= this.x + this.width))
+                    && (x < this.x + this.width || (rightEdge && x >= this.x))
+                    && (y >= this.y || (topEdge && y <= this.y + this.height))
+                    && (y < this.y + this.height || (bottomEdge && y >= this.y))) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+
+        /**
+         * Detects if a area falls inside this key.
+         * @param x the x-coordinate of the area
+         * @param y the y-coordinate of the area
+         * @param w the width of the area
+         * @param h the height of the area
+         * @return whether or not the area falls inside the key.
+         */
+        public boolean isInside(int x, int y, int w, int h) {
+            if ((this.x <= (x + w)) && (x <= (this.x + this.width))
+                    && (this.y <= (y + h)) && (y <= (this.y + this.height))) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+
+        /**
+         * Returns the square of the distance between the center of the key and the given point.
+         * @param x the x-coordinate of the point
+         * @param y the y-coordinate of the point
+         * @return the square of the distance of the point from the center of the key
+         */
+        public int squaredDistanceFrom(int x, int y) {
+            int xDist = this.x + width / 2 - x;
+            int yDist = this.y + height / 2 - y;
+            return xDist * xDist + yDist * yDist;
+        }
+
+        /**
+         * Returns the drawable state for the key, based on the current state and type of the key.
+         * @return the drawable state of the key.
+         * @see android.graphics.drawable.StateListDrawable#setState(int[])
+         */
+        public int[] getCurrentDrawableState() {
+            int[] states = KEY_STATE_NORMAL;
+
+            if (on) {
+                if (pressed) {
+                    states = KEY_STATE_PRESSED_ON;
+                } else {
+                    states = KEY_STATE_NORMAL_ON;
+                }
+            } else {
+                if (sticky) {
+                    if (pressed) {
+                        states = KEY_STATE_PRESSED_OFF;
+                    } else {
+                        states = KEY_STATE_NORMAL_OFF;
+                    }
+                } else {
+                    if (pressed) {
+                        states = KEY_STATE_PRESSED;
+                    }
+                }
+            }
+            return states;
+        }
+    }
+
+    /**
+     * Creates a keyboard from the given xml key layout file.
+     * @param context the application or service context
+     * @param xmlLayoutResId the resource file that contains the keyboard layout and keys.
+     */
+    public Keyboard(Context context, int xmlLayoutResId) {
+        this(context, xmlLayoutResId, 0);
+    }
+
+    /**
+     * Creates a keyboard from the given xml key layout file. Weeds out rows
+     * that have a keyboard mode defined but don't match the specified mode.
+     * @param context the application or service context
+     * @param xmlLayoutResId the resource file that contains the keyboard layout and keys.
+     * @param modeId keyboard mode identifier
+     */
+    public Keyboard(Context context, int xmlLayoutResId, int modeId) {
+        DisplayMetrics dm = context.getResources().getDisplayMetrics();
+        mDisplayWidth = dm.widthPixels;
+        mDisplayHeight = dm.heightPixels;
+
+        mDefaultHorizontalGap = 0;
+        mDefaultWidth = mDisplayWidth / 10;
+        mDefaultVerticalGap = 0;
+        mDefaultHeight = mDefaultWidth;
+        mKeys = new ArrayList<Key>();
+        mModifierKeys = new ArrayList<Key>();
+        mKeyboardMode = modeId;
+        loadKeyboard(context, context.getResources().getXml(xmlLayoutResId));
+    }
+
+    /**
+     * <p>Creates a blank keyboard from the given resource file and populates it with the specified
+     * characters in left-to-right, top-to-bottom fashion, using the specified number of columns.
+     * </p>
+     * <p>If the specified number of columns is -1, then the keyboard will fit as many keys as
+     * possible in each row.</p>
+     * @param context the application or service context
+     * @param layoutTemplateResId the layout template file, containing no keys.
+     * @param characters the list of characters to display on the keyboard. One key will be created
+     * for each character.
+     * @param columns the number of columns of keys to display. If this number is greater than the
+     * number of keys that can fit in a row, it will be ignored. If this number is -1, the
+     * keyboard will fit as many keys as possible in each row.
+     */
+    public Keyboard(Context context, int layoutTemplateResId,
+            CharSequence characters, int columns, int horizontalPadding) {
+        this(context, layoutTemplateResId);
+        int x = 0;
+        int y = 0;
+        int column = 0;
+        mTotalWidth = 0;
+ 
+        Row row = new Row(this);
+        row.defaultHeight = mDefaultHeight;
+        row.defaultWidth = mDefaultWidth;
+        row.defaultHorizontalGap = mDefaultHorizontalGap;
+        row.verticalGap = mDefaultVerticalGap;
+        row.rowEdgeFlags = EDGE_TOP | EDGE_BOTTOM;
+        final int maxColumns = columns == -1 ? Integer.MAX_VALUE : columns;
+        for (int i = 0; i < characters.length(); i++) {
+            char c = characters.charAt(i);
+            if (column >= maxColumns
+                    || x + mDefaultWidth + horizontalPadding > mDisplayWidth) {
+                x = 0;
+                y += mDefaultVerticalGap + mDefaultHeight;
+                column = 0;
+            }
+            final Key key = new Key(row);
+            key.x = x;
+            key.y = y;
+            key.label = String.valueOf(c);
+            key.codes = new int[] { c };
+            column++;
+            x += key.width + key.gap;
+            mKeys.add(key);
+            if (x > mTotalWidth) {
+                mTotalWidth = x;
+            }
+        }
+        mTotalHeight = y + mDefaultHeight;
+    }
+    
+    /**
+     * Get the list of keys in this keyboard.
+     *
+     * @return The list of keys.
+     */
+    public List<Key> getKeys() {
+        return mKeys;
+    }
+ 
+    /**
+     * Get the list of modifier keys such as Shift & Alt, if any.
+     *
+     * @return The list of modifier keys.
+     */
+    public List<Key> getModifierKeys() {
+        return mModifierKeys;
+    }
+ 
+    protected int getHorizontalGap() {
+        return mDefaultHorizontalGap;
+    }
+
+    protected void setHorizontalGap(int gap) {
+        mDefaultHorizontalGap = gap;
+    }
+
+    protected int getVerticalGap() {
+        return mDefaultVerticalGap;
+    }
+
+    protected void setVerticalGap(int gap) {
+        mDefaultVerticalGap = gap;
+    }
+
+    protected int getKeyHeight() {
+        return mDefaultHeight;
+    }
+
+    protected void setKeyHeight(int height) {
+        mDefaultHeight = height;
+    }
+
+    protected int getKeyWidth() {
+        return mDefaultWidth;
+    }
+ 
+    protected void setKeyWidth(int width) {
+        mDefaultWidth = width;
+    }
+
+    /**
+     * Returns the total height of the keyboard
+     * @return the total height of the keyboard
+     */
+    public int getHeight() {
+        return mTotalHeight;
+    }
+    
+    /**
+     * Returns the total minimum width of the keyboard
+     * @return the total minimum width of the keyboard
+     */
+    public int getMinWidth() {
+        return mTotalWidth;
+    }
+
+    /**
+     * Sets the keyboard to be shifted.
+     *
+     * @param shiftState  the keyboard shift state.
+     * @return {@code true} if shift state changed.
+     */
+    public boolean setShifted(boolean shiftState) {
+        if (mShiftKey != null) {
+            mShiftKey.on = shiftState;
+        }
+        if (mShifted != shiftState) {
+            mShifted = shiftState;
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Returns whether keyboard is shift state or not.
+     *
+     * @return  {@code true} if keyboard is shift state; otherwise, {@code false}.
+     */
+    public boolean isShifted() {
+        return mShifted;
+    }
+
+    /**
+     * Returns the shift key index.
+     *
+     * @return  the shift key index.
+     */
+    public int getShiftKeyIndex() {
+        return mShiftKeyIndex;
+    }
+
+    private void computeNearestNeighbors() {
+        mCellWidth = (getMinWidth() + GRID_WIDTH - 1) / GRID_WIDTH;
+        mCellHeight = (getHeight() + GRID_HEIGHT - 1) / GRID_HEIGHT;
+        mGridNeighbors = new int[GRID_SIZE][];
+        int[] indices = new int[mKeys.size()];
+        final int gridWidth = GRID_WIDTH * mCellWidth;
+        final int gridHeight = GRID_HEIGHT * mCellHeight;
+        for (int x = 0; x < gridWidth; x += mCellWidth) {
+            for (int y = 0; y < gridHeight; y += mCellHeight) {
+                int count = 0;
+                for (int i = 0; i < mKeys.size(); i++) {
+                    final Key key = mKeys.get(i);
+                    if (key.squaredDistanceFrom(x, y) < mProximityThreshold ||
+                            key.squaredDistanceFrom(x + mCellWidth - 1, y) < mProximityThreshold ||
+                            key.squaredDistanceFrom(x + mCellWidth - 1, y + mCellHeight - 1) 
+                                < mProximityThreshold ||
+                            key.squaredDistanceFrom(x, y + mCellHeight - 1) < mProximityThreshold ||
+                            key.isInside(x, y, mCellWidth, mCellHeight)) {
+                        indices[count++] = i;
+                    }
+                }
+                int [] cell = new int[count];
+                System.arraycopy(indices, 0, cell, 0, count);
+                mGridNeighbors[(y / mCellHeight) * GRID_WIDTH + (x / mCellWidth)] = cell;
+            }
+        }
+    }
+ 
+    /**
+     * Returns the indices of the keys that are closest to the given point.
+     * @param x the x-coordinate of the point
+     * @param y the y-coordinate of the point
+     * @return the array of integer indices for the nearest keys to the given point. If the given
+     * point is out of range, then an array of size zero is returned.
+     */
+    public int[] getNearestKeys(int x, int y) {
+        if (mGridNeighbors == null) computeNearestNeighbors();
+        if (x >= 0 && x < getMinWidth() && y >= 0 && y < getHeight()) {
+            int index = (y / mCellHeight) * GRID_WIDTH + (x / mCellWidth);
+            if (index < GRID_SIZE) {
+                return mGridNeighbors[index];
+            }
+        }
+        return new int[0];
+    }
+
+    protected Row createRowFromXml(Resources res, XmlResourceParser parser) {
+        return new Row(res, this, parser);
+    }
+ 
+    protected Key createKeyFromXml(Resources res, Row parent, int x, int y,
+            XmlResourceParser parser) {
+        return new Key(res, parent, x, y, parser);
+    }
+
+    private void loadKeyboard(Context context, XmlResourceParser parser) {
+        boolean inKey = false;
+        boolean inRow = false;
+        boolean leftMostKey = false;
+        int row = 0;
+        int x = 0;
+        int y = 0;
+        Key key = null;
+        Row currentRow = null;
+        Resources res = context.getResources();
+        boolean skipRow = false;
+ 
+        try {
+            int event;
+            while ((event = parser.next()) != XmlResourceParser.END_DOCUMENT) {
+                if (event == XmlResourceParser.START_TAG) {
+                    String tag = parser.getName();
+                    if (TAG_ROW.equals(tag)) {
+                        inRow = true;
+                        x = 0;
+                        currentRow = createRowFromXml(res, parser);
+                        skipRow = currentRow.mode != 0 && currentRow.mode != mKeyboardMode;
+                        if (skipRow) {
+                            skipToEndOfRow(parser);
+                            inRow = false;
+                        }
+                   } else if (TAG_KEY.equals(tag)) {
+                        inKey = true;
+                        key = createKeyFromXml(res, currentRow, x, y, parser);
+                        mKeys.add(key);
+                        if (key.codes[0] == KEYCODE_SHIFT) {
+                            mShiftKey = key;
+                            mShiftKeyIndex = mKeys.size()-1;
+                            mModifierKeys.add(key);
+                        } else if (key.codes[0] == KEYCODE_ALT) {
+                            mModifierKeys.add(key);
+                        }
+                    } else if (TAG_KEYBOARD.equals(tag)) {
+                        parseKeyboardAttributes(res, parser);
+                    }
+                } else if (event == XmlResourceParser.END_TAG) {
+                    if (inKey) {
+                        inKey = false;
+                        x += key.gap + key.width;
+                        if (x > mTotalWidth) {
+                            mTotalWidth = x;
+                        }
+                    } else if (inRow) {
+                        inRow = false;
+                        y += currentRow.verticalGap;
+                        y += currentRow.defaultHeight;
+                        row++;
+                    } else {
+                    }
+                }
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "Parse error:" + e);
+            e.printStackTrace();
+        }
+        mTotalHeight = y - mDefaultVerticalGap;
+    }
+
+    private void skipToEndOfRow(XmlResourceParser parser)
+            throws XmlPullParserException, IOException {
+        int event;
+        while ((event = parser.next()) != XmlResourceParser.END_DOCUMENT) {
+            if (event == XmlResourceParser.END_TAG
+                    && parser.getName().equals(TAG_ROW)) {
+                break;
+            }
+        }
+    }
+ 
+    private void parseKeyboardAttributes(Resources res, XmlResourceParser parser) {
+        TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser),
+                android.R.styleable.Keyboard);
+
+        mDefaultWidth = getDimensionOrFraction(a,
+                android.R.styleable.Keyboard_keyWidth,
+                mDisplayWidth, mDisplayWidth / 10);
+        mDefaultHeight = getDimensionOrFraction(a,
+                android.R.styleable.Keyboard_keyHeight,
+                mDisplayHeight, 75);
+        mDefaultHorizontalGap = getDimensionOrFraction(a,
+                android.R.styleable.Keyboard_horizontalGap,
+                mDisplayWidth, 0);
+        mDefaultVerticalGap = getDimensionOrFraction(a,
+                android.R.styleable.Keyboard_verticalGap,
+                mDisplayHeight, 0);
+        mProximityThreshold = (int) (mDefaultWidth * SEARCH_DISTANCE);
+        mProximityThreshold = mProximityThreshold * mProximityThreshold;
+        a.recycle();
+    }
+
+    static int getDimensionOrFraction(TypedArray a, int index, int base, int defValue) {
+        TypedValue value = a.peekValue(index);
+        if (value == null) return defValue;
+        if (value.type == TypedValue.TYPE_DIMENSION) {
+            return a.getDimensionPixelOffset(index, defValue);
+        } else if (value.type == TypedValue.TYPE_FRACTION) {
+            return Math.round(a.getFraction(index, base, base, defValue));
+        }
+        return defValue;
+    }
+}
diff --git a/src/jp/co/omronsoft/openwnn/KeyboardView.java b/src/jp/co/omronsoft/openwnn/KeyboardView.java
new file mode 100644
index 0000000..ebacaea
--- /dev/null
+++ b/src/jp/co/omronsoft/openwnn/KeyboardView.java
@@ -0,0 +1,1517 @@
+/*
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/* This file is porting from Android framework.
+ *   frameworks/base/core/java/android/inputmethodservice/KeyboardView.java
+ *
+ *package android.inputmethodservice;
+ */
+
+package jp.co.omronsoft.openwnn;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.PorterDuff;
+import android.graphics.Rect;
+import android.graphics.Typeface;
+import android.graphics.Paint.Align;
+import android.graphics.Region.Op;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.Message;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.GestureDetector;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+
+import jp.co.omronsoft.openwnn.Keyboard;
+import jp.co.omronsoft.openwnn.Keyboard.Key;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A view that renders a virtual {@link Keyboard}. It handles rendering of keys and
+ * detecting key presses and touch movements.
+ */
+public class KeyboardView extends View implements View.OnClickListener {
+
+    /**
+     * Listener for virtual keyboard events.
+     */
+    public interface OnKeyboardActionListener {
+ 
+        /**
+         * Called when the user presses a key. This is sent before the {@link #onKey} is called.
+         * For keys that repeat, this is only called once.
+         * @param primaryCode the unicode of the key being pressed. If the touch is not on a valid
+         * key, the value will be zero.
+         */
+        void onPress(int primaryCode);
+ 
+        /**
+         * Called when the user releases a key. This is sent after the {@link #onKey} is called.
+         * For keys that repeat, this is only called once.
+         * @param primaryCode the code of the key that was released
+         */
+        void onRelease(int primaryCode);
+
+        /**
+         * Send a key press to the listener.
+         * @param primaryCode this is the key that was pressed
+         * @param keyCodes the codes for all the possible alternative keys
+         * with the primary code being the first. If the primary key code is
+         * a single character such as an alphabet or number or symbol, the alternatives
+         * will include other characters that may be on the same key or adjacent keys.
+         * These codes are useful to correct for accidental presses of a key adjacent to
+         * the intended key.
+         */
+        void onKey(int primaryCode, int[] keyCodes);
+
+        /**
+         * Sends a sequence of characters to the listener.
+         * @param text the sequence of characters to be displayed.
+         */
+        void onText(CharSequence text);
+
+        /**
+         * Called when the user quickly moves the finger from right to left.
+         */
+        void swipeLeft();
+
+        /**
+         * Called when the user quickly moves the finger from left to right.
+         */
+        void swipeRight();
+
+        /**
+         * Called when the user quickly moves the finger from up to down.
+         */
+        void swipeDown();
+
+        /**
+         * Called when the user quickly moves the finger from down to up.
+         */
+        void swipeUp();
+
+        /**
+         * Called when the user long presses a key.
+         * @param popupKey the key that was long pressed
+         * @return true if the long press is handled, false otherwise.
+         */
+        boolean onLongPress(Keyboard.Key key);
+    }
+
+    private static final int NOT_A_KEY = -1;
+    private static final int[] KEY_DELETE = { Keyboard.KEYCODE_DELETE };
+    private static final int[] LONG_PRESSABLE_STATE_SET = {
+        android.R.attr.state_long_pressable
+    };
+
+    private Keyboard mKeyboard;
+    private int mCurrentKeyIndex = NOT_A_KEY;
+    private int mLabelTextSize;
+    private int mKeyTextSize;
+    private int mKeyTextColor;
+    private int mKeyTextColor2nd;
+    private float mShadowRadius;
+    private int mShadowColor;
+    private float mBackgroundDimAmount;
+ 
+    private TextView mPreviewText;
+    private PopupWindow mPreviewPopup;
+    private int mPreviewTextSizeLarge;
+    private int mPreviewOffset;
+    private int mPreviewHeight;
+    private int[] mOffsetInWindow;
+
+    private PopupWindow mPopupKeyboard;
+    private View mMiniKeyboardContainer;
+    private KeyboardView mMiniKeyboard;
+    private boolean mMiniKeyboardOnScreen;
+    private View mPopupParent;
+    private int mMiniKeyboardOffsetX;
+    private int mMiniKeyboardOffsetY;
+    private Map<Key,View> mMiniKeyboardCache;
+    private int[] mWindowOffset;
+    private Key[] mKeys;
+
+    /** Listener for {@link OnKeyboardActionListener}. */
+    private OnKeyboardActionListener mKeyboardActionListener;
+
+    private static final int MSG_SHOW_PREVIEW = 1;
+    private static final int MSG_REMOVE_PREVIEW = 2;
+    private static final int MSG_REPEAT = 3;
+    private static final int MSG_LONGPRESS = 4;
+
+    private static final int DELAY_BEFORE_PREVIEW = 0;
+    private static final int DELAY_AFTER_PREVIEW = 70;
+    private static final int DEBOUNCE_TIME = 70;
+
+    private int mVerticalCorrection;
+    private int mProximityThreshold;
+
+    private boolean mPreviewCentered = false;
+    private boolean mShowPreview = true;
+    private boolean mShowTouchPoints = true;
+    private int mPopupPreviewX;
+    private int mPopupPreviewY;
+    private int mWindowY;
+
+    private int mLastX;
+    private int mLastY;
+    private int mStartX;
+    private int mStartY;
+
+    private boolean mProximityCorrectOn;
+
+    private Paint mPaint;
+    private Rect mPadding;
+ 
+    private long mDownTime;
+    private long mLastMoveTime;
+    private int mLastKey;
+    private int mLastCodeX;
+    private int mLastCodeY;
+    private int mCurrentKey = NOT_A_KEY;
+    private int mDownKey = NOT_A_KEY;
+    private long mLastKeyTime;
+    private long mCurrentKeyTime;
+    private int[] mKeyIndices = new int[12];
+    private GestureDetector mGestureDetector;
+    private int mPopupX;
+    private int mPopupY;
+    private int mRepeatKeyIndex = NOT_A_KEY;
+    private int mPopupLayout;
+    private boolean mAbortKey;
+    private Key mInvalidatedKey;
+    private Rect mClipRegion = new Rect(0, 0, 0, 0);
+    private boolean mPossiblePoly;
+    private SwipeTracker mSwipeTracker = new SwipeTracker();
+    private int mSwipeThreshold;
+    private boolean mDisambiguateSwipe;
+
+    private int mOldPointerCount = 1;
+    private float mOldPointerX;
+    private float mOldPointerY;
+
+    private Drawable mKeyBackground;
+    private Drawable mKeyBackground2nd;
+
+    private static final int REPEAT_INTERVAL = 50;
+    private static final int REPEAT_START_DELAY = 400;
+    private static final int LONGPRESS_TIMEOUT = ViewConfiguration.getLongPressTimeout();
+
+    private static int MAX_NEARBY_KEYS = 12;
+    private int[] mDistances = new int[MAX_NEARBY_KEYS];
+
+    private int mLastSentIndex;
+    private int mTapCount;
+    private long mLastTapTime;
+    private boolean mInMultiTap;
+    private static final int MULTITAP_INTERVAL = 800;
+    private StringBuilder mPreviewLabel = new StringBuilder(1);
+
+    /** Whether the keyboard bitmap needs to be redrawn before it's blitted. **/
+    private boolean mDrawPending;
+    /** The dirty region in the keyboard bitmap */
+    private Rect mDirtyRect = new Rect();
+    /** The keyboard bitmap for faster updates */
+    private Bitmap mBuffer;
+    /** Notes if the keyboard just changed, so that we could possibly reallocate the mBuffer. */
+    private boolean mKeyboardChanged;
+    /** The canvas for the above mutable keyboard bitmap */
+    private Canvas mCanvas;
+ 
+    Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_SHOW_PREVIEW:
+                    showKey(msg.arg1);
+                    break;
+                case MSG_REMOVE_PREVIEW:
+                    mPreviewText.setVisibility(INVISIBLE);
+                    break;
+                case MSG_REPEAT:
+                    if (repeatKey()) {
+                        Message repeat = Message.obtain(this, MSG_REPEAT);
+                        sendMessageDelayed(repeat, REPEAT_INTERVAL);
+                    }
+                    break;
+                case MSG_LONGPRESS:
+                    openPopupIfRequired((MotionEvent) msg.obj);
+                    break;
+            }
+        }
+    };
+
+    /** Constructor */
+    public KeyboardView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    /** Constructor */
+    public KeyboardView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+
+        TypedArray a =
+            context.obtainStyledAttributes(
+                attrs, android.R.styleable.KeyboardView, defStyle, R.style.WnnKeyboardView);
+
+        LayoutInflater inflate =
+                (LayoutInflater) context
+                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+        int previewLayout = 0;
+        int keyTextSize = 0;
+
+        int n = a.getIndexCount();
+ 
+        for (int i = 0; i < n; i++) {
+            int attr = a.getIndex(i);
+
+            switch (attr) {
+            case android.R.styleable.KeyboardView_keyBackground:
+                mKeyBackground = a.getDrawable(attr);
+                break;
+            case android.R.styleable.KeyboardView_verticalCorrection:
+                mVerticalCorrection = a.getDimensionPixelOffset(attr, 0);
+                break;
+            case android.R.styleable.KeyboardView_keyPreviewLayout:
+                previewLayout = a.getResourceId(attr, 0);
+                break;
+            case android.R.styleable.KeyboardView_keyPreviewOffset:
+                mPreviewOffset = a.getDimensionPixelOffset(attr, 0);
+                break;
+            case android.R.styleable.KeyboardView_keyPreviewHeight:
+                mPreviewHeight = a.getDimensionPixelSize(attr, 80);
+                break;
+            case android.R.styleable.KeyboardView_keyTextSize:
+                mKeyTextSize = a.getDimensionPixelSize(attr, 18);
+                break;
+            case android.R.styleable.KeyboardView_keyTextColor:
+                mKeyTextColor = a.getColor(attr, 0xFF000000);
+                break;
+            case android.R.styleable.KeyboardView_labelTextSize:
+                mLabelTextSize = a.getDimensionPixelSize(attr, 14);
+                break;
+            case android.R.styleable.KeyboardView_popupLayout:
+                mPopupLayout = a.getResourceId(attr, 0);
+                break;
+            case android.R.styleable.KeyboardView_shadowColor:
+                mShadowColor = a.getColor(attr, 0);
+                break;
+            case android.R.styleable.KeyboardView_shadowRadius:
+                mShadowRadius = a.getFloat(attr, 0f);
+                break;
+            }
+        }
+
+        a.recycle();
+        a = context.obtainStyledAttributes(attrs, R.styleable.WnnKeyboardView, 0, 0);
+        mKeyBackground2nd = a.getDrawable(R.styleable.WnnKeyboardView_keyBackground2nd);
+        mKeyTextColor2nd = a.getColor(R.styleable.WnnKeyboardView_keyTextColor2nd, 0xFF000000);
+ 
+        a.recycle();
+        a = mContext.obtainStyledAttributes(
+                android.R.styleable.Theme);
+        mBackgroundDimAmount = a.getFloat(android.R.styleable.Theme_backgroundDimAmount, 0.5f);
+
+        mPreviewPopup = new PopupWindow(context);
+        if (previewLayout != 0) {
+            mPreviewText = (TextView) inflate.inflate(previewLayout, null);
+            mPreviewTextSizeLarge = (int) mPreviewText.getTextSize();
+            mPreviewPopup.setContentView(mPreviewText);
+            mPreviewPopup.setBackgroundDrawable(null);
+        } else {
+            mShowPreview = false;
+        }
+ 
+        mPreviewPopup.setTouchable(false);
+ 
+        mPopupKeyboard = new PopupWindow(context);
+        mPopupKeyboard.setBackgroundDrawable(null);
+
+        mPopupParent = this;
+        
+        mPaint = new Paint();
+        mPaint.setAntiAlias(true);
+        mPaint.setTextSize(keyTextSize);
+        mPaint.setTextAlign(Align.CENTER);
+        mPaint.setAlpha(255);
+
+        mPadding = new Rect(0, 0, 0, 0);
+        mMiniKeyboardCache = new HashMap<Key,View>();
+        mKeyBackground.getPadding(mPadding);
+
+        mSwipeThreshold = (int) (500 * getResources().getDisplayMetrics().density);
+
+        mDisambiguateSwipe = true;
+
+        resetMultiTap();
+        initGestureDetector();
+    }
+
+    private void initGestureDetector() {
+        mGestureDetector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() {
+            @Override
+            public boolean onFling(MotionEvent me1, MotionEvent me2,
+                    float velocityX, float velocityY) {
+                if (mPossiblePoly) return false;
+                final float absX = Math.abs(velocityX);
+                final float absY = Math.abs(velocityY);
+                float deltaX = me2.getX() - me1.getX();
+                float deltaY = me2.getY() - me1.getY();
+                int travelX = getWidth() / 2;
+                int travelY = getHeight() / 2;
+                mSwipeTracker.computeCurrentVelocity(1000);
+                final float endingVelocityX = mSwipeTracker.getXVelocity();
+                final float endingVelocityY = mSwipeTracker.getYVelocity();
+                boolean sendDownKey = false;
+                if (velocityX > mSwipeThreshold && absY < absX && deltaX > travelX) {
+                    if (mDisambiguateSwipe && endingVelocityX < velocityX / 4) {
+                        sendDownKey = true;
+                    } else {
+                        swipeRight();
+                        return true;
+                    }
+                } else if (velocityX < -mSwipeThreshold && absY < absX && deltaX < -travelX) {
+                    if (mDisambiguateSwipe && endingVelocityX > velocityX / 4) {
+                        sendDownKey = true;
+                    } else {
+                        swipeLeft();
+                        return true;
+                    }
+                } else if (velocityY < -mSwipeThreshold && absX < absY && deltaY < -travelY) {
+                    if (mDisambiguateSwipe && endingVelocityY > velocityY / 4) {
+                        sendDownKey = true;
+                    } else {
+                        swipeUp();
+                        return true;
+                    }
+                } else if (velocityY > mSwipeThreshold && absX < absY / 2 && deltaY > travelY) {
+                    if (mDisambiguateSwipe && endingVelocityY < velocityY / 4) {
+                        sendDownKey = true;
+                    } else {
+                        swipeDown();
+                        return true;
+                    }
+                }
+
+                if (sendDownKey) {
+                    detectAndSendKey(mDownKey, mStartX, mStartY, me1.getEventTime());
+                }
+                return false;
+            }
+        });
+
+        mGestureDetector.setIsLongpressEnabled(false);
+    }
+
+    /**
+     * Set the {@link OnKeyboardActionListener} object.
+     * @param listener  The OnKeyboardActionListener to set.
+     */
+    public void setOnKeyboardActionListener(OnKeyboardActionListener listener) {
+        mKeyboardActionListener = listener;
+    }
+
+    /**
+     * Returns the {@link OnKeyboardActionListener} object.
+     * @return the listener attached to this keyboard
+     */
+    protected OnKeyboardActionListener getOnKeyboardActionListener() {
+        return mKeyboardActionListener;
+    }
+
+    /**
+     * Attaches a keyboard to this view. The keyboard can be switched at any time and the
+     * view will re-layout itself to accommodate the keyboard.
+     * @see Keyboard
+     * @see #getKeyboard()
+     * @param keyboard the keyboard to display in this view
+     */
+    public void setKeyboard(Keyboard keyboard) {
+        if (!keyboard.equals(mKeyboard)) {
+            clearWindowInfo();
+        }
+        int oldRepeatKeyCode = NOT_A_KEY;
+        if (mKeyboard != null) {
+            showPreview(NOT_A_KEY);
+            if ((mRepeatKeyIndex != NOT_A_KEY) && (mRepeatKeyIndex < mKeys.length)) {
+                oldRepeatKeyCode = mKeys[mRepeatKeyIndex].codes[0];
+            }
+        }
+        removeMessages();
+        mKeyboard = keyboard;
+        List<Key> keys = mKeyboard.getKeys();
+        mKeys = keys.toArray(new Key[keys.size()]);
+        requestLayout();
+        mKeyboardChanged = true;
+        invalidateAllKeys();
+        computeProximityThreshold(keyboard);
+        mMiniKeyboardCache.clear();
+        boolean abort = true;
+        if (oldRepeatKeyCode != NOT_A_KEY) {
+            int keyIndex = getKeyIndices(mStartX, mStartY, null);
+            if ((keyIndex != NOT_A_KEY)
+                && (keyIndex < mKeys.length)
+                && (oldRepeatKeyCode == mKeys[keyIndex].codes[0])) {
+                abort = false;
+                mRepeatKeyIndex = keyIndex;
+            }
+        }
+        if (abort) {
+            mHandler.removeMessages(MSG_REPEAT);
+        }
+        mAbortKey = abort;
+    }
+
+    /**
+     * Returns the current keyboard being displayed by this view.
+     * @return the currently attached keyboard
+     * @see #setKeyboard(Keyboard)
+     */
+    public Keyboard getKeyboard() {
+        return mKeyboard;
+    }
+ 
+    /**
+     * Sets the state of the shift key of the keyboard, if any.
+     * @param shifted whether or not to enable the state of the shift key
+     * @return true if the shift key state changed, false if there was no change
+     * @see KeyboardView#isShifted()
+     */
+    public boolean setShifted(boolean shifted) {
+        if (mKeyboard != null) {
+            if (mKeyboard.setShifted(shifted)) {
+                invalidateAllKeys();
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Returns the state of the shift key of the keyboard, if any.
+     * @return true if the shift is in a pressed state, false otherwise. If there is
+     * no shift key on the keyboard or there is no keyboard attached, it returns false.
+     * @see KeyboardView#setShifted(boolean)
+     */
+    public boolean isShifted() {
+        if (mKeyboard != null) {
+            return mKeyboard.isShifted();
+        }
+        return false;
+    }
+
+    /**
+     * Enables or disables the key feedback popup. This is a popup that shows a magnified
+     * version of the depressed key. By default the preview is enabled.
+     * @param previewEnabled whether or not to enable the key feedback popup
+     * @see #isPreviewEnabled()
+     */
+    public void setPreviewEnabled(boolean previewEnabled) {
+        mShowPreview = previewEnabled;
+    }
+
+    /**
+     * Returns the enabled state of the key feedback popup.
+     * @return whether or not the key feedback popup is enabled
+     * @see #setPreviewEnabled(boolean)
+     */
+    public boolean isPreviewEnabled() {
+        return mShowPreview;
+    }
+
+    /**
+     * Returns the root parent has the enabled state of the key feedback popup.
+     * @return whether or not the key feedback popup is enabled
+     * @see #setPreviewEnabled(boolean)
+     */
+    public boolean isParentPreviewEnabled() {
+        if ((mPopupParent != null) && (mPopupParent != this)
+                && (mPopupParent instanceof KeyboardView)) {
+            return ((KeyboardView)mPopupParent).isParentPreviewEnabled();
+        } else {
+            return mShowPreview;
+        }
+    }
+
+    public void setVerticalCorrection(int verticalOffset) {
+ 
+    }
+
+    /**
+     * Set View on the PopupParent.
+     * @param v  The View to set.
+     */
+    public void setPopupParent(View v) {
+        mPopupParent = v;
+    }
+
+    /**
+     * Set parameters on the KeyboardOffset.
+     * @param x  The value of KeyboardOffset.
+     * @param y  The value of KeyboardOffset.
+     */
+    public void setPopupOffset(int x, int y) {
+        mMiniKeyboardOffsetX = x;
+        mMiniKeyboardOffsetY = y;
+        if (mPreviewPopup.isShowing()) {
+            mPreviewPopup.dismiss();
+        }
+    }
+
+    /**
+     * When enabled, calls to {@link OnKeyboardActionListener#onKey} will include key
+     * codes for adjacent keys.  When disabled, only the primary key code will be
+     * reported.
+     * @param enabled whether or not the proximity correction is enabled
+     */
+    public void setProximityCorrectionEnabled(boolean enabled) {
+        mProximityCorrectOn = enabled;
+    }
+
+    /**
+     * Returns true if proximity correction is enabled.
+     */
+    public boolean isProximityCorrectionEnabled() {
+        return mProximityCorrectOn;
+    }
+
+    /**
+     * Popup keyboard close button clicked.
+     * @hide
+     */
+    public void onClick(View v) {
+        dismissPopupKeyboard();
+    }
+
+    private CharSequence adjustCase(CharSequence label) {
+        if (mKeyboard.isShifted() && label != null && label.length() < 3
+                && Character.isLowerCase(label.charAt(0))) {
+            label = label.toString().toUpperCase();
+        }
+        return label;
+    }
+
+    @Override
+    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        if (mKeyboard == null) {
+            setMeasuredDimension(mPaddingLeft + mPaddingRight, mPaddingTop + mPaddingBottom);
+        } else {
+            int width = mKeyboard.getMinWidth() + mPaddingLeft + mPaddingRight;
+            if (MeasureSpec.getSize(widthMeasureSpec) < width + 10) {
+                width = MeasureSpec.getSize(widthMeasureSpec);
+            }
+            setMeasuredDimension(width, mKeyboard.getHeight() + mPaddingTop + mPaddingBottom);
+        }
+    }
+
+    /**
+     * Compute the average distance between adjacent keys (horizontally and vertically)
+     * and square it to get the proximity threshold. We use a square here and in computing
+     * the touch distance from a key's center to avoid taking a square root.
+     * @param keyboard
+     */
+    private void computeProximityThreshold(Keyboard keyboard) {
+        if (keyboard == null) return;
+        final Key[] keys = mKeys;
+        if (keys == null) return;
+        int length = keys.length;
+        int dimensionSum = 0;
+        for (int i = 0; i < length; i++) {
+            Key key = keys[i];
+            dimensionSum += Math.min(key.width, key.height) + key.gap;
+        }
+        if (dimensionSum < 0 || length == 0) return;
+        mProximityThreshold = (int) (dimensionSum * 1.4f / length);
+        mProximityThreshold *= mProximityThreshold;
+    }
+
+    @Override
+    public void onSizeChanged(int w, int h, int oldw, int oldh) {
+        super.onSizeChanged(w, h, oldw, oldh);
+        mBuffer = null;
+    }
+
+    @Override
+    public void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        if (mDrawPending || mBuffer == null || mKeyboardChanged) {
+            onBufferDraw();
+        }
+        canvas.drawBitmap(mBuffer, 0, 0, null);
+    }
+
+    private void onBufferDraw() {
+        boolean isBufferNull = (mBuffer == null);
+        if (isBufferNull || mKeyboardChanged) {
+            if (isBufferNull || mKeyboardChanged &&
+                    (mBuffer.getWidth() != getWidth() || mBuffer.getHeight() != getHeight())) {
+                final int width = Math.max(1, getWidth());
+                final int height = Math.max(1, getHeight());
+                mBuffer = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
+                mCanvas = new Canvas(mBuffer);
+            }
+            invalidateAllKeys();
+            mKeyboardChanged = false;
+        }
+        final Canvas canvas = mCanvas;
+        canvas.clipRect(mDirtyRect, Op.REPLACE);
+
+        if (mKeyboard == null) return;
+ 
+        final Paint paint = mPaint;
+        final Rect clipRegion = mClipRegion;
+        final Rect padding = mPadding;
+        final int kbdPaddingLeft = mPaddingLeft;
+        final int kbdPaddingTop = mPaddingTop;
+        final Key[] keys = mKeys;
+        final Key invalidKey = mInvalidatedKey;
+
+        paint.setColor(mKeyTextColor);
+        boolean drawSingleKey = false;
+        if (invalidKey != null && canvas.getClipBounds(clipRegion)) {
+          if (invalidKey.x + kbdPaddingLeft - 1 <= clipRegion.left &&
+                  invalidKey.y + kbdPaddingTop - 1 <= clipRegion.top &&
+                  invalidKey.x + invalidKey.width + kbdPaddingLeft + 1 >= clipRegion.right &&
+                  invalidKey.y + invalidKey.height + kbdPaddingTop + 1 >= clipRegion.bottom) {
+              drawSingleKey = true;
+          }
+        }
+        canvas.drawColor(0x00000000, PorterDuff.Mode.CLEAR);
+        final int keyCount = keys.length;
+        for (int i = 0; i < keyCount; i++) {
+            final Key key = keys[i];
+            if (drawSingleKey && invalidKey != key) {
+                continue;
+            }
+
+            paint.setColor(key.isSecondKey ? mKeyTextColor2nd : mKeyTextColor);
+            Drawable keyBackground = key.isSecondKey ? mKeyBackground2nd : mKeyBackground;
+            int[] drawableState = key.getCurrentDrawableState();
+            keyBackground.setState(drawableState);
+
+            String label = key.label == null? null : adjustCase(key.label).toString();
+
+            final Rect bounds = keyBackground.getBounds();
+            if (key.width != bounds.right ||
+                    key.height != bounds.bottom) {
+                keyBackground.setBounds(0, 0, key.width, key.height);
+            }
+            canvas.translate(key.x + kbdPaddingLeft, key.y + kbdPaddingTop);
+            keyBackground.draw(canvas);
+ 
+            if (label != null) {
+                if (OpenWnn.isXLarge()) {
+                    if (label.length() > 1 && key.codes.length < 2) {
+                        paint.setTextSize(mLabelTextSize);
+                        paint.setTypeface(Typeface.DEFAULT);
+                    } else {
+                        paint.setTextSize(mKeyTextSize);
+                        paint.setTypeface(Typeface.DEFAULT_BOLD);
+                    }
+                } else {
+                    if (label.length() > 1 && key.codes.length < 2) {
+                        paint.setTextSize(mLabelTextSize);
+                        paint.setTypeface(Typeface.DEFAULT_BOLD);
+                    } else {
+                        paint.setTextSize(mKeyTextSize);
+                        paint.setTypeface(Typeface.DEFAULT_BOLD);
+                    }
+                }
+                paint.setShadowLayer(mShadowRadius, 0, 0, mShadowColor);
+                if (OpenWnn.isXLarge()) {
+                    canvas.drawText(label,
+                        (key.width - padding.left + 7 - padding.right) / 2
+                                + padding.left,
+                        (key.height - padding.top + 7 - padding.bottom) / 2
+                                + (paint.getTextSize() - paint.descent()) / 2 + padding.top,
+                        paint);
+                } else {
+                    canvas.drawText(label,
+                        (key.width - padding.left - padding.right) / 2
+                                + padding.left,
+                        (key.height - padding.top - padding.bottom) / 2
+                                + (paint.getTextSize() - paint.descent()) / 2 + padding.top,
+                        paint);
+                }
+                paint.setShadowLayer(0, 0, 0, 0);
+            } else if (key.icon != null) {
+                int drawableX;
+                int drawableY;
+                if (OpenWnn.isXLarge()) {
+                    drawableX = (key.width - padding.left + 12 - padding.right
+                                    - key.icon.getIntrinsicWidth()) / 2 + padding.left;
+                    drawableY = (key.height - padding.top + 9 - padding.bottom
+                            - key.icon.getIntrinsicHeight()) / 2 + padding.top;
+                } else {
+                    drawableX = (key.width - padding.left - padding.right 
+                                    - key.icon.getIntrinsicWidth()) / 2 + padding.left;
+                    drawableY = (key.height - padding.top - padding.bottom 
+                            - key.icon.getIntrinsicHeight()) / 2 + padding.top;
+                }
+                canvas.translate(drawableX, drawableY);
+                key.icon.setBounds(0, 0,
+                        key.icon.getIntrinsicWidth(), key.icon.getIntrinsicHeight());
+                key.icon.draw(canvas);
+                canvas.translate(-drawableX, -drawableY);
+            }
+            canvas.translate(-key.x - kbdPaddingLeft, -key.y - kbdPaddingTop);
+        }
+        mInvalidatedKey = null;
+        if (mMiniKeyboardOnScreen) {
+            paint.setColor((int) (mBackgroundDimAmount * 0xFF) << 24);
+            canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
+        }
+
+        mDrawPending = false;
+        mDirtyRect.setEmpty();
+    }
+
+    private int getKeyIndices(int x, int y, int[] allKeys) {
+        final Key[] keys = mKeys;
+        int primaryIndex = NOT_A_KEY;
+        int closestKey = NOT_A_KEY;
+        int closestKeyDist = mProximityThreshold + 1;
+        java.util.Arrays.fill(mDistances, Integer.MAX_VALUE);
+        int [] nearestKeyIndices = mKeyboard.getNearestKeys(x, y);
+        final int keyCount = nearestKeyIndices.length;
+        for (int i = 0; i < keyCount; i++) {
+            final Key key = keys[nearestKeyIndices[i]];
+            int dist = 0;
+            boolean isInside = key.isInside(x,y);
+            if (isInside) {
+                primaryIndex = nearestKeyIndices[i];
+            }
+
+            if (((mProximityCorrectOn
+                    && (dist = key.squaredDistanceFrom(x, y)) < mProximityThreshold)
+                    || isInside)
+                    && key.codes[0] > 32) {
+                final int nCodes = key.codes.length;
+                if (dist < closestKeyDist) {
+                    closestKeyDist = dist;
+                    closestKey = nearestKeyIndices[i];
+                }
+
+                if (allKeys == null) continue;
+ 
+                for (int j = 0; j < mDistances.length; j++) {
+                    if (mDistances[j] > dist) {
+                        System.arraycopy(mDistances, j, mDistances, j + nCodes,
+                                mDistances.length - j - nCodes);
+                        System.arraycopy(allKeys, j, allKeys, j + nCodes,
+                                allKeys.length - j - nCodes);
+                        for (int c = 0; c < nCodes; c++) {
+                            allKeys[j + c] = key.codes[c];
+                            mDistances[j + c] = dist;
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+        if (primaryIndex == NOT_A_KEY) {
+            primaryIndex = closestKey;
+        }
+        return primaryIndex;
+    }
+
+    private void detectAndSendKey(int index, int x, int y, long eventTime) {
+        if (index != NOT_A_KEY && index < mKeys.length) {
+            final Key key = mKeys[index];
+            if (key.text != null) {
+                mKeyboardActionListener.onText(key.text);
+                mKeyboardActionListener.onRelease(NOT_A_KEY);
+            } else {
+                int code = key.codes[0];
+                int[] codes = new int[MAX_NEARBY_KEYS];
+                Arrays.fill(codes, NOT_A_KEY);
+                getKeyIndices(x, y, codes);
+                if (mInMultiTap) {
+                    if (mTapCount != -1) {
+                        mKeyboardActionListener.onKey(Keyboard.KEYCODE_DELETE, KEY_DELETE);
+                    } else {
+                        mTapCount = 0;
+                    }
+                    code = key.codes[mTapCount];
+                }
+                mKeyboardActionListener.onKey(code, codes);
+                mKeyboardActionListener.onRelease(code);
+            }
+            mLastSentIndex = index;
+            mLastTapTime = eventTime;
+        }
+    }
+
+    /**
+     * Handle multi-tap keys by producing the key label for the current multi-tap state.
+     */
+    private CharSequence getPreviewText(Key key) {
+        if (mInMultiTap) {
+            mPreviewLabel.setLength(0);
+            mPreviewLabel.append((char) key.codes[mTapCount < 0 ? 0 : mTapCount]);
+            return adjustCase(mPreviewLabel);
+        } else {
+            return adjustCase(key.label);
+        }
+    }
+
+    private void showPreview(int keyIndex) {
+        int oldKeyIndex = mCurrentKeyIndex;
+        final PopupWindow previewPopup = mPreviewPopup;
+ 
+        mCurrentKeyIndex = keyIndex;
+        final Key[] keys = mKeys;
+        if (oldKeyIndex != mCurrentKeyIndex) {
+            if (oldKeyIndex != NOT_A_KEY && keys.length > oldKeyIndex) {
+                keys[oldKeyIndex].onReleased(mCurrentKeyIndex == NOT_A_KEY);
+                invalidateKey(oldKeyIndex);
+            }
+            if (mCurrentKeyIndex != NOT_A_KEY && keys.length > mCurrentKeyIndex) {
+                keys[mCurrentKeyIndex].onPressed();
+                invalidateKey(mCurrentKeyIndex);
+            }
+        }
+        if (oldKeyIndex != mCurrentKeyIndex && mShowPreview && isParentPreviewEnabled()) {
+            mHandler.removeMessages(MSG_SHOW_PREVIEW);
+            if (previewPopup.isShowing()) {
+                if (keyIndex == NOT_A_KEY) {
+                    mHandler.sendMessageDelayed(mHandler
+                            .obtainMessage(MSG_REMOVE_PREVIEW),
+                            DELAY_AFTER_PREVIEW);
+                }
+            }
+            if (keyIndex != NOT_A_KEY) {
+                if (previewPopup.isShowing() && mPreviewText.getVisibility() == VISIBLE) {
+                    showKey(keyIndex);
+                } else {
+                    mHandler.sendMessageDelayed(
+                            mHandler.obtainMessage(MSG_SHOW_PREVIEW, keyIndex, 0),
+                            DELAY_BEFORE_PREVIEW);
+                }
+            }
+        }
+    }
+ 
+    private void showKey(final int keyIndex) {
+        final PopupWindow previewPopup = mPreviewPopup;
+        final Key[] keys = mKeys;
+        if (keyIndex < 0 || keyIndex >= mKeys.length) return;
+        Key key = keys[keyIndex];
+
+        mPreviewText.setBackgroundDrawable(getContext().getResources().getDrawable(R.drawable.keyboard_key_feedback));
+
+        if (key.icon != null) {
+            mPreviewText.setCompoundDrawables(null, null, null,
+                    key.iconPreview != null ? key.iconPreview : key.icon);
+            mPreviewText.setText(null);
+            mPreviewText.setPadding(5, 0, 5, 20);
+        } else {
+            mPreviewText.setCompoundDrawables(null, null, null, null);
+            mPreviewText.setText(getPreviewText(key));
+            if (key.label.length() > 1 && key.codes.length < 2) {
+                mPreviewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mKeyTextSize);
+                mPreviewText.setTypeface(Typeface.DEFAULT_BOLD);
+            } else {
+                mPreviewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSizeLarge);
+                mPreviewText.setTypeface(Typeface.DEFAULT);
+            }
+            mPreviewText.setPadding(0, 0, 0, 10);
+        }
+        mPreviewText.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
+                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+        int popupWidth = Math.max(mPreviewText.getMeasuredWidth(), key.width
+                + mPreviewText.getPaddingLeft() + mPreviewText.getPaddingRight());
+        final int popupHeight = mPreviewHeight;
+        LayoutParams lp = mPreviewText.getLayoutParams();
+        if (lp != null) {
+            lp.width = popupWidth;
+            lp.height = popupHeight;
+        }
+        if (!mPreviewCentered) {
+            mPopupPreviewX = key.x - (Math.abs(popupWidth - key.width) / 2 );
+            mPopupPreviewY = key.y - popupHeight + mPreviewOffset;
+        } else {
+            mPopupPreviewX = 160 - mPreviewText.getMeasuredWidth() / 2;
+            mPopupPreviewY = - mPreviewText.getMeasuredHeight();
+        }
+        mPopupPreviewY = mPopupPreviewY + 20;
+        mHandler.removeMessages(MSG_REMOVE_PREVIEW);
+        if (mOffsetInWindow == null) {
+            mOffsetInWindow = new int[2];
+            getLocationInWindow(mOffsetInWindow);
+            mOffsetInWindow[0] += mMiniKeyboardOffsetX;
+            mOffsetInWindow[1] += mMiniKeyboardOffsetY;
+            int[] mWindowLocation = new int[2];
+            getLocationOnScreen(mWindowLocation);
+            mWindowY = mWindowLocation[1];
+        }
+        mPreviewText.getBackground().setState(
+                key.popupResId != 0 ? LONG_PRESSABLE_STATE_SET : EMPTY_STATE_SET);
+        mPopupPreviewX += mOffsetInWindow[0];
+        mPopupPreviewY += mOffsetInWindow[1];
+
+        if (mPopupPreviewY + mWindowY < 0) {
+            if (key.x + key.width <= getWidth() / 2) {
+                mPopupPreviewX += (int) (key.width * 2.5);
+            } else {
+                mPopupPreviewX -= (int) (key.width * 2.5);
+            }
+            mPopupPreviewY += popupHeight;
+        }
+
+        if (previewPopup.isShowing()) {
+            previewPopup.update(mPopupPreviewX, mPopupPreviewY,
+                    popupWidth, popupHeight);
+        } else {
+            previewPopup.setWidth(popupWidth);
+            previewPopup.setHeight(popupHeight);
+            previewPopup.showAtLocation(mPopupParent, Gravity.NO_GRAVITY,
+                    mPopupPreviewX, mPopupPreviewY);
+        }
+        mPreviewText.setVisibility(VISIBLE);
+    }
+
+    /**
+     * Requests a redraw of the entire keyboard. Calling {@link #invalidate} is not sufficient
+     * because the keyboard renders the keys to an off-screen buffer and an invalidate() only
+     * draws the cached buffer.
+     * @see #invalidateKey(int)
+     */
+    public void invalidateAllKeys() {
+        mDirtyRect.union(0, 0, getWidth(), getHeight());
+        mDrawPending = true;
+        invalidate();
+    }
+
+    /**
+     * Invalidates a key so that it will be redrawn on the next repaint. Use this method if only
+     * one key is changing it's content. Any changes that affect the position or size of the key
+     * may not be honored.
+     * @param keyIndex the index of the key in the attached {@link Keyboard}.
+     * @see #invalidateAllKeys
+     */
+    public void invalidateKey(int keyIndex) {
+        if (mKeys == null) return;
+        if (keyIndex < 0 || keyIndex >= mKeys.length) {
+            return;
+        }
+        final Key key = mKeys[keyIndex];
+        mInvalidatedKey = key;
+        mDirtyRect.union(key.x + mPaddingLeft, key.y + mPaddingTop,
+                key.x + key.width + mPaddingLeft, key.y + key.height + mPaddingTop);
+        onBufferDraw();
+        invalidate(key.x + mPaddingLeft, key.y + mPaddingTop,
+                key.x + key.width + mPaddingLeft, key.y + key.height + mPaddingTop);
+    }
+
+    private boolean openPopupIfRequired(MotionEvent me) {
+        if (mPopupLayout == 0) {
+            return false;
+        }
+        if (mCurrentKey < 0 || mCurrentKey >= mKeys.length) {
+            return false;
+        }
+
+        Key popupKey = mKeys[mCurrentKey];
+        boolean result = onLongPress(popupKey);
+        if (result) {
+            mAbortKey = true;
+            showPreview(NOT_A_KEY);
+        }
+        return result;
+    }
+
+    /**
+     * Called when a key is long pressed. By default this will open any popup keyboard associated
+     * with this key through the attributes popupLayout and popupCharacters.
+     * @param popupKey the key that was long pressed
+     * @return true if the long press is handled, false otherwise. Subclasses should call the
+     * method on the base class if the subclass doesn't wish to handle the call.
+     */
+    protected boolean onLongPress(Key popupKey) {
+        if (mKeyboardActionListener.onLongPress(popupKey)) {
+            return true;
+        }
+        int popupKeyboardId = popupKey.popupResId;
+        if (popupKeyboardId != 0) {
+            mMiniKeyboardContainer = mMiniKeyboardCache.get(popupKey);
+            if (mMiniKeyboardContainer == null) {
+                LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
+                        Context.LAYOUT_INFLATER_SERVICE);
+                mMiniKeyboardContainer = inflater.inflate(mPopupLayout, null);
+                mMiniKeyboard = (KeyboardView) mMiniKeyboardContainer.findViewById(R.id.keyboardView);
+                View closeButton = mMiniKeyboardContainer.findViewById(R.id.closeButton);
+                if (closeButton != null) closeButton.setOnClickListener(this);
+                mMiniKeyboard.setOnKeyboardActionListener(new OnKeyboardActionListener() {
+                    public void onKey(int primaryCode, int[] keyCodes) {
+                        mKeyboardActionListener.onKey(primaryCode, keyCodes);
+                        dismissPopupKeyboard();
+                    }
+ 
+                    public void onText(CharSequence text) {
+                        mKeyboardActionListener.onText(text);
+                        dismissPopupKeyboard();
+                    }
+ 
+                    public void swipeLeft() { }
+                    public void swipeRight() { }
+                    public void swipeUp() { }
+                    public void swipeDown() { }
+                    public void onPress(int primaryCode) {
+                        mKeyboardActionListener.onPress(primaryCode);
+                    }
+                    public void onRelease(int primaryCode) {
+                        mKeyboardActionListener.onRelease(primaryCode);
+                    }
+                    public boolean onLongPress(Keyboard.Key key) {
+                        return false;
+                    }
+                });
+                Keyboard keyboard;
+                if (popupKey.popupCharacters != null) {
+                    keyboard = new Keyboard(getContext(), popupKeyboardId, 
+                            popupKey.popupCharacters, -1, getPaddingLeft() + getPaddingRight());
+                } else {
+                    keyboard = new Keyboard(getContext(), popupKeyboardId);
+                }
+                mMiniKeyboard.setKeyboard(keyboard);
+                mMiniKeyboard.setPopupParent(this);
+                mMiniKeyboardContainer.measure(
+                        MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST),
+                        MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.AT_MOST));
+ 
+                mMiniKeyboardCache.put(popupKey, mMiniKeyboardContainer);
+            } else {
+                mMiniKeyboard = (KeyboardView) mMiniKeyboardContainer.findViewById(R.id.keyboardView);
+            }
+            if (mWindowOffset == null) {
+                mWindowOffset = new int[2];
+                getLocationInWindow(mWindowOffset);
+            }
+            mPopupX = popupKey.x + mPaddingLeft;
+            mPopupY = popupKey.y + mPaddingTop;
+            mPopupX = mPopupX + popupKey.width - mMiniKeyboardContainer.getMeasuredWidth();
+            mPopupY = mPopupY - mMiniKeyboardContainer.getMeasuredHeight();
+            final int x = mPopupX + mMiniKeyboardContainer.getPaddingRight() + mWindowOffset[0];
+            final int y = mPopupY + mMiniKeyboardContainer.getPaddingBottom() + mWindowOffset[1];
+            mMiniKeyboard.setPopupOffset(x < 0 ? 0 : x, y);
+            mMiniKeyboard.setShifted(isShifted());
+            mPopupKeyboard.setContentView(mMiniKeyboardContainer);
+            mPopupKeyboard.setWidth(mMiniKeyboardContainer.getMeasuredWidth());
+            mPopupKeyboard.setHeight(mMiniKeyboardContainer.getMeasuredHeight());
+            mPopupKeyboard.showAtLocation(this, Gravity.NO_GRAVITY, x, y);
+            mMiniKeyboardOnScreen = true;
+            invalidateAllKeys();
+            return true;
+        }
+        return false;
+    }
+
+    private long mOldEventTime;
+    private boolean mUsedVelocity;
+
+    @Override
+    public boolean onTouchEvent(MotionEvent me) {
+        final int pointerCount = me.getPointerCount();
+        final int action = me.getAction();
+        boolean result = false;
+        final long now = me.getEventTime();
+        final boolean isPointerCountOne = (pointerCount == 1);
+
+        if (pointerCount != mOldPointerCount) {
+            if (isPointerCountOne) {
+                MotionEvent down = MotionEvent.obtain(now, now, MotionEvent.ACTION_DOWN,
+                        me.getX(), me.getY(), me.getMetaState());
+                result = onModifiedTouchEvent(down, false);
+                down.recycle();
+                if (action == MotionEvent.ACTION_UP) {
+                    result = onModifiedTouchEvent(me, true);
+                }
+            } else {
+                MotionEvent up = MotionEvent.obtain(now, now, MotionEvent.ACTION_UP,
+                        mOldPointerX, mOldPointerY, me.getMetaState());
+                result = onModifiedTouchEvent(up, true);
+                up.recycle();
+            }
+        } else {
+            if (isPointerCountOne) {
+                result = onModifiedTouchEvent(me, false);
+                mOldPointerX = me.getX();
+                mOldPointerY = me.getY();
+            } else {
+                result = true;
+            }
+        }
+        mOldPointerCount = pointerCount;
+
+        return result;
+    }
+
+    private boolean onModifiedTouchEvent(MotionEvent me, boolean possiblePoly) {
+        int touchX = (int) me.getX() - mPaddingLeft;
+        int touchY = (int) me.getY() + mVerticalCorrection - mPaddingTop;
+        final int action = me.getAction();
+        final long eventTime = me.getEventTime();
+        mOldEventTime = eventTime;
+        int keyIndex = getKeyIndices(touchX, touchY, null);
+        mPossiblePoly = possiblePoly;
+
+        if (action == MotionEvent.ACTION_DOWN) mSwipeTracker.clear();
+        mSwipeTracker.addMovement(me);
+
+        if (mAbortKey
+                && action != MotionEvent.ACTION_DOWN && action != MotionEvent.ACTION_CANCEL) {
+            return true;
+        }
+
+        if (mGestureDetector.onTouchEvent(me)) {
+            showPreview(NOT_A_KEY);
+            mHandler.removeMessages(MSG_REPEAT);
+            mHandler.removeMessages(MSG_LONGPRESS);
+            return true;
+        }
+ 
+        if (mMiniKeyboardOnScreen && action != MotionEvent.ACTION_CANCEL) {
+            return true;
+        }
+
+        switch (action) {
+            case MotionEvent.ACTION_DOWN:
+                mAbortKey = false;
+                mStartX = touchX;
+                mStartY = touchY;
+                mLastCodeX = touchX;
+                mLastCodeY = touchY;
+                mLastKeyTime = 0;
+                mCurrentKeyTime = 0;
+                mLastKey = NOT_A_KEY;
+                mCurrentKey = keyIndex;
+                mDownKey = keyIndex;
+                mDownTime = me.getEventTime();
+                mLastMoveTime = mDownTime;
+                checkMultiTap(eventTime, keyIndex);
+                mKeyboardActionListener.onPress(keyIndex != NOT_A_KEY ? 
+                        mKeys[keyIndex].codes[0] : 0);
+                if (mCurrentKey >= 0 && mKeys[mCurrentKey].repeatable) {
+                    mRepeatKeyIndex = mCurrentKey;
+                    Message msg = mHandler.obtainMessage(MSG_REPEAT);
+                    mHandler.sendMessageDelayed(msg, REPEAT_START_DELAY);
+                    repeatKey();
+                    if (mAbortKey) {
+                        mRepeatKeyIndex = NOT_A_KEY;
+                        break;
+                    }
+                }
+                if (mCurrentKey != NOT_A_KEY) {
+                    Message msg = mHandler.obtainMessage(MSG_LONGPRESS, me);
+                    mHandler.sendMessageDelayed(msg, LONGPRESS_TIMEOUT);
+                }
+                showPreview(keyIndex);
+                break;
+
+            case MotionEvent.ACTION_MOVE:
+                boolean continueLongPress = false;
+                if (keyIndex != NOT_A_KEY) {
+                    if (mCurrentKey == NOT_A_KEY) {
+                        mCurrentKey = keyIndex;
+                        mCurrentKeyTime = eventTime - mDownTime;
+                    } else {
+                        if (keyIndex == mCurrentKey) {
+                            mCurrentKeyTime += eventTime - mLastMoveTime;
+                            continueLongPress = true;
+                        } else if (mRepeatKeyIndex == NOT_A_KEY) {
+                            resetMultiTap();
+                            mLastKey = mCurrentKey;
+                            mLastCodeX = mLastX;
+                            mLastCodeY = mLastY;
+                            mLastKeyTime =
+                                    mCurrentKeyTime + eventTime - mLastMoveTime;
+                            mCurrentKey = keyIndex;
+                            mCurrentKeyTime = 0;
+                        }
+                    }
+                }
+                if (!continueLongPress) {
+                    mHandler.removeMessages(MSG_LONGPRESS);
+                    if (keyIndex != NOT_A_KEY) {
+                        Message msg = mHandler.obtainMessage(MSG_LONGPRESS, me);
+                        mHandler.sendMessageDelayed(msg, LONGPRESS_TIMEOUT);
+                    }
+                }
+                showPreview(mCurrentKey);
+                mLastMoveTime = eventTime;
+                break;
+
+            case MotionEvent.ACTION_UP:
+                removeMessages();
+                if (keyIndex == mCurrentKey) {
+                    mCurrentKeyTime += eventTime - mLastMoveTime;
+                } else {
+                    resetMultiTap();
+                    mLastKey = mCurrentKey;
+                    mLastKeyTime = mCurrentKeyTime + eventTime - mLastMoveTime;
+                    mCurrentKey = keyIndex;
+                    mCurrentKeyTime = 0;
+                }
+                if (mCurrentKeyTime < mLastKeyTime && mCurrentKeyTime < DEBOUNCE_TIME
+                        && mLastKey != NOT_A_KEY) {
+                    mCurrentKey = mLastKey;
+                    touchX = mLastCodeX;
+                    touchY = mLastCodeY;
+                }
+                showPreview(NOT_A_KEY);
+                Arrays.fill(mKeyIndices, NOT_A_KEY);
+                if (mRepeatKeyIndex == NOT_A_KEY && !mMiniKeyboardOnScreen && !mAbortKey) {
+                    detectAndSendKey(mCurrentKey, touchX, touchY, eventTime);
+                }
+                invalidateKey(keyIndex);
+                mRepeatKeyIndex = NOT_A_KEY;
+                break;
+            case MotionEvent.ACTION_CANCEL:
+                removeMessages();
+                dismissPopupKeyboard();
+                mAbortKey = true;
+                showPreview(NOT_A_KEY);
+                invalidateKey(mCurrentKey);
+                break;
+        }
+        mLastX = touchX;
+        mLastY = touchY;
+        return true;
+    }
+
+    private boolean repeatKey() {
+        Key key = mKeys[mRepeatKeyIndex];
+        detectAndSendKey(mCurrentKey, key.x, key.y, mLastTapTime);
+        return true;
+    }
+
+    protected void swipeRight() {
+        mKeyboardActionListener.swipeRight();
+    }
+
+    protected void swipeLeft() {
+        mKeyboardActionListener.swipeLeft();
+    }
+
+    protected void swipeUp() {
+        mKeyboardActionListener.swipeUp();
+    }
+
+    protected void swipeDown() {
+        mKeyboardActionListener.swipeDown();
+    }
+
+    public void closing() {
+        if (mPreviewPopup.isShowing()) {
+            mPreviewPopup.dismiss();
+        }
+        removeMessages();
+ 
+        dismissPopupKeyboard();
+        mBuffer = null;
+        mCanvas = null;
+        mMiniKeyboardCache.clear();
+    }
+
+    private void removeMessages() {
+        mHandler.removeMessages(MSG_REPEAT);
+        mHandler.removeMessages(MSG_LONGPRESS);
+        mHandler.removeMessages(MSG_SHOW_PREVIEW);
+    }
+
+    @Override
+    public void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        closing();
+    }
+
+    private void dismissPopupKeyboard() {
+        if (mPopupKeyboard.isShowing()) {
+            mPopupKeyboard.dismiss();
+            mMiniKeyboardOnScreen = false;
+            invalidateAllKeys();
+        }
+    }
+
+    public boolean handleBack() {
+        if (mPopupKeyboard.isShowing()) {
+            dismissPopupKeyboard();
+            return true;
+        }
+        return false;
+    }
+
+    private void resetMultiTap() {
+        mLastSentIndex = NOT_A_KEY;
+        mTapCount = 0;
+        mLastTapTime = -1;
+        mInMultiTap = false;
+    }
+ 
+    private void checkMultiTap(long eventTime, int keyIndex) {
+        if (keyIndex == NOT_A_KEY) return;
+        Key key = mKeys[keyIndex];
+        if (key.codes.length > 1) {
+            mInMultiTap = true;
+            if (eventTime < mLastTapTime + MULTITAP_INTERVAL
+                    && keyIndex == mLastSentIndex) {
+                mTapCount = (mTapCount + 1) % key.codes.length;
+                return;
+            } else {
+                mTapCount = -1;
+                return;
+            }
+        }
+        if (eventTime > mLastTapTime + MULTITAP_INTERVAL || keyIndex != mLastSentIndex) {
+            resetMultiTap();
+        }
+    }
+
+    private static class SwipeTracker {
+
+        static final int NUM_PAST = 4;
+        static final int LONGEST_PAST_TIME = 200;
+
+        final float mPastX[] = new float[NUM_PAST];
+        final float mPastY[] = new float[NUM_PAST];
+        final long mPastTime[] = new long[NUM_PAST];
+
+        float mYVelocity;
+        float mXVelocity;
+
+        public void clear() {
+            mPastTime[0] = 0;
+        }
+
+        public void addMovement(MotionEvent ev) {
+            long time = ev.getEventTime();
+            final int N = ev.getHistorySize();
+            for (int i=0; i<N; i++) {
+                addPoint(ev.getHistoricalX(i), ev.getHistoricalY(i),
+                        ev.getHistoricalEventTime(i));
+            }
+            addPoint(ev.getX(), ev.getY(), time);
+        }
+
+        private void addPoint(float x, float y, long time) {
+            int drop = -1;
+            int i;
+            final long[] pastTime = mPastTime;
+            for (i=0; i<NUM_PAST; i++) {
+                if (pastTime[i] == 0) {
+                    break;
+                } else if (pastTime[i] < time-LONGEST_PAST_TIME) {
+                    drop = i;
+                }
+            }
+            if (i == NUM_PAST && drop < 0) {
+                drop = 0;
+            }
+            if (drop == i) drop--;
+            final float[] pastX = mPastX;
+            final float[] pastY = mPastY;
+            if (drop >= 0) {
+                final int start = drop+1;
+                final int count = NUM_PAST-drop-1;
+                System.arraycopy(pastX, start, pastX, 0, count);
+                System.arraycopy(pastY, start, pastY, 0, count);
+                System.arraycopy(pastTime, start, pastTime, 0, count);
+                i -= (drop+1);
+            }
+            pastX[i] = x;
+            pastY[i] = y;
+            pastTime[i] = time;
+            i++;
+            if (i < NUM_PAST) {
+                pastTime[i] = 0;
+            }
+        }
+
+        public void computeCurrentVelocity(int units) {
+            computeCurrentVelocity(units, Float.MAX_VALUE);
+        }
+
+        public void computeCurrentVelocity(int units, float maxVelocity) {
+            final float[] pastX = mPastX;
+            final float[] pastY = mPastY;
+            final long[] pastTime = mPastTime;
+
+            final float oldestX = pastX[0];
+            final float oldestY = pastY[0];
+            final long oldestTime = pastTime[0];
+            float accumX = 0;
+            float accumY = 0;
+            int N=0;
+            while (N < NUM_PAST) {
+                if (pastTime[N] == 0) {
+                    break;
+                }
+                N++;
+            }
+
+            for (int i=1; i < N; i++) {
+                final int dur = (int)(pastTime[i] - oldestTime);
+                if (dur == 0) continue;
+                float dist = pastX[i] - oldestX;
+                float vel = (dist/dur) * units;
+                if (accumX == 0) accumX = vel;
+                else accumX = (accumX + vel) * .5f;
+
+                dist = pastY[i] - oldestY;
+                vel = (dist/dur) * units;
+                if (accumY == 0) accumY = vel;
+                else accumY = (accumY + vel) * .5f;
+            }
+            mXVelocity = accumX < 0.0f ? Math.max(accumX, -maxVelocity)
+                    : Math.min(accumX, maxVelocity);
+            mYVelocity = accumY < 0.0f ? Math.max(accumY, -maxVelocity)
+                    : Math.min(accumY, maxVelocity);
+        }
+
+        public float getXVelocity() {
+            return mXVelocity;
+        }
+
+        public float getYVelocity() {
+            return mYVelocity;
+        }
+    }
+
+    /**
+     * Clear window info.
+     */
+    public void clearWindowInfo() {
+        mOffsetInWindow = null;
+    }
+}
diff --git a/src/jp/co/omronsoft/openwnn/LetterConverter.java b/src/jp/co/omronsoft/openwnn/LetterConverter.java
index adb6226..15f0bfb 100644
--- a/src/jp/co/omronsoft/openwnn/LetterConverter.java
+++ b/src/jp/co/omronsoft/openwnn/LetterConverter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/OpenWnn.java b/src/jp/co/omronsoft/openwnn/OpenWnn.java
index fdc643b..12ca226 100644
--- a/src/jp/co/omronsoft/openwnn/OpenWnn.java
+++ b/src/jp/co/omronsoft/openwnn/OpenWnn.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,6 +16,7 @@
 
 package jp.co.omronsoft.openwnn;
 
+import jp.co.omronsoft.openwnn.JAJP.*;
 import android.inputmethodservice.InputMethodService;
 import android.view.WindowManager;
 import android.content.Context;
@@ -32,10 +33,15 @@
 import android.graphics.*;
 import android.graphics.drawable.*;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import jp.co.omronsoft.openwnn.KeyAction;
+
 /**
  * The OpenWnn IME's base class.
  *
- * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
+ * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
  */
 public class OpenWnn extends InputMethodService {
 
@@ -59,6 +65,21 @@
     /** Flag for checking if the previous down key event is consumed by OpenWnn  */
     private boolean mConsumeDownEvent;
 
+    /** for isXLarge */
+    private static boolean mIsXLarge = false;
+
+    /** TextCandidatesViewManager */
+    protected TextCandidatesViewManager mTextCandidatesViewManager = null;
+
+    /** TextCandidates1LineViewManager */
+    protected TextCandidates1LineViewManager mTextCandidates1LineViewManager = null;
+
+    /** The instance of current IME */
+    private static OpenWnn mCurrentIme;
+
+    /** KeyAction list */
+    private List<KeyAction> KeyActionList = new ArrayList<KeyAction>();
+
     /**
      * Constructor
      */
@@ -71,10 +92,22 @@
      **********************************************************************/
     /** @see android.inputmethodservice.InputMethodService#onCreate */
     @Override public void onCreate() {
+        updateXLargeMode();
         super.onCreate();
 
         SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
 
+        mCurrentIme = this;
+
+
+        mTextCandidatesViewManager = new TextCandidatesViewManager(-1);
+        if (isXLarge()) {
+            mTextCandidates1LineViewManager =
+                new TextCandidates1LineViewManager(OpenWnnEngineJAJP.LIMIT_OF_CANDIDATES_1LINE);
+            mCandidatesViewManager = mTextCandidates1LineViewManager;
+        } else {
+            mCandidatesViewManager = mTextCandidatesViewManager;
+        }
 
         if (mConverter != null) { mConverter.init(); }
         if (mComposingText != null) { mComposingText.clear(); }
@@ -84,6 +117,14 @@
     @Override public View onCreateCandidatesView() {
         if (mCandidatesViewManager != null) {
             WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
+            if (isXLarge()) {
+                mCandidatesViewManager = mTextCandidates1LineViewManager;
+                mTextCandidatesViewManager.initView(this,
+                                                        wm.getDefaultDisplay().getWidth(),
+                                                        wm.getDefaultDisplay().getHeight());
+            } else {
+                mCandidatesViewManager = mTextCandidatesViewManager;
+            }
             View view = mCandidatesViewManager.initView(this,
                                                         wm.getDefaultDisplay().getWidth(),
                                                         wm.getDefaultDisplay().getHeight());
@@ -112,13 +153,28 @@
     /** @see android.inputmethodservice.InputMethodService#onDestroy */
     @Override public void onDestroy() {
         super.onDestroy();
-
+        mCurrentIme = null;
         close();
     }
 
     /** @see android.inputmethodservice.InputMethodService#onKeyDown */
     @Override public boolean onKeyDown(int keyCode, KeyEvent event) {
         mConsumeDownEvent = onEvent(new OpenWnnEvent(event));
+
+        KeyAction Keycodeinfo = new KeyAction();
+        Keycodeinfo.mConsumeDownEvent = mConsumeDownEvent;
+        Keycodeinfo.mKeyCode = keyCode;
+
+        int cnt = KeyActionList.size();
+        if (cnt != 0) {
+            for (int i = 0; i < cnt; i++) {
+                if (KeyActionList.get(i).mKeyCode == keyCode) {
+                    KeyActionList.remove(i);
+                    break;
+                }
+            }
+        }
+        KeyActionList.add(Keycodeinfo);
         if (!mConsumeDownEvent) {
             return super.onKeyDown(keyCode, event);
         }
@@ -128,13 +184,38 @@
     /** @see android.inputmethodservice.InputMethodService#onKeyUp */
     @Override public boolean onKeyUp(int keyCode, KeyEvent event) {
         boolean ret = mConsumeDownEvent;
+        int cnt = KeyActionList.size();
+        for (int i = 0; i < cnt; i++) {
+            KeyAction Keycodeinfo = KeyActionList.get(i);
+            if (Keycodeinfo.mKeyCode == keyCode) {
+                ret = Keycodeinfo.mConsumeDownEvent;
+                KeyActionList.remove(i);
+                break;
+            }
+        }
         if (!ret) {
             ret = super.onKeyUp(keyCode, event);
         }else{
-            onEvent(new OpenWnnEvent(event));
+            ret = onEvent(new OpenWnnEvent(event));
         }
         return ret;
     }
+
+    /**
+     * Called when the key long press event occurred.
+     *
+     * @see android.inputmethodservice.InputMethodService#onKeyLongPress
+     */
+    @Override public boolean onKeyLongPress(int keyCode, KeyEvent event) {
+        if (mCurrentIme == null) {
+            Log.e("iWnn", "OpenWnn::onKeyLongPress()  Unprocessing onCreate() ");
+            return super.onKeyLongPress(keyCode, event);
+        }
+
+        OpenWnnEvent wnnEvent = new OpenWnnEvent(event);
+        wnnEvent.code = OpenWnnEvent.KEYLONGPRESS;
+        return onEvent(wnnEvent);
+    }
         
     /** @see android.inputmethodservice.InputMethodService#onStartInput */
     @Override public void onStartInput(EditorInfo attribute, boolean restarting) {
@@ -247,4 +328,99 @@
     protected void close() {
         if (mConverter != null) { mConverter.close(); }
     }
+
+    /**
+     * Whether the x large mode.
+     *
+     * @return      {@code true} if x large; {@code false} if not x large.
+     */
+    public static boolean isXLarge() {
+        return mIsXLarge;
+    }
+
+    /**
+     * Update the x large mode.
+     */
+    public void updateXLargeMode() {
+        mIsXLarge = ((getResources().getConfiguration().screenLayout &
+                      Configuration.SCREENLAYOUT_SIZE_MASK)
+                      == Configuration.SCREENLAYOUT_SIZE_XLARGE);
+    }
+
+    /**
+     * Get the instance of current IME.
+     *
+     * @return the instance of current IME, See {@link jp.co.omronsoft.openwnn.OpenWnn}
+     */
+    public static OpenWnn getCurrentIme() {
+        return mCurrentIme;
+    }
+
+    /**
+     * Check through key code in IME.
+     *
+     * @param keyCode  check key code.
+     * @return {@code true} if through key code; {@code false} otherwise.
+     */
+    protected boolean isThroughKeyCode(int keyCode) {
+        boolean result;
+        switch (keyCode) {
+        case KeyEvent.KEYCODE_CALL:
+        case KeyEvent.KEYCODE_VOLUME_DOWN:
+        case KeyEvent.KEYCODE_VOLUME_UP:
+        case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
+        case KeyEvent.KEYCODE_MEDIA_NEXT:
+        case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
+        case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
+        case KeyEvent.KEYCODE_MEDIA_REWIND:
+        case KeyEvent.KEYCODE_MEDIA_STOP:
+        case KeyEvent.KEYCODE_MUTE:
+        case KeyEvent.KEYCODE_HEADSETHOOK:
+        case KeyEvent.KEYCODE_VOLUME_MUTE:
+        case KeyEvent.KEYCODE_MEDIA_CLOSE:
+        case KeyEvent.KEYCODE_MEDIA_EJECT:
+        case KeyEvent.KEYCODE_MEDIA_PAUSE:
+        case KeyEvent.KEYCODE_MEDIA_PLAY:
+        case KeyEvent.KEYCODE_MEDIA_RECORD:
+        case KeyEvent.KEYCODE_MANNER_MODE:
+            result = true;
+            break;
+
+        default:
+            result = false;
+            break;
+
+        }
+        return result;
+    }
+
+    /**
+     * Check ten-key code.
+     *
+     * @param keyCode  check key code.
+     * @return {@code true} if ten-key code; {@code false} not ten-key code.
+     */
+    protected boolean isTenKeyCode(int keyCode) {
+        boolean result = false;
+        switch (keyCode) {
+        case KeyEvent.KEYCODE_NUMPAD_0:
+        case KeyEvent.KEYCODE_NUMPAD_1:
+        case KeyEvent.KEYCODE_NUMPAD_2:
+        case KeyEvent.KEYCODE_NUMPAD_3:
+        case KeyEvent.KEYCODE_NUMPAD_4:
+        case KeyEvent.KEYCODE_NUMPAD_5:
+        case KeyEvent.KEYCODE_NUMPAD_6:
+        case KeyEvent.KEYCODE_NUMPAD_7:
+        case KeyEvent.KEYCODE_NUMPAD_8:
+        case KeyEvent.KEYCODE_NUMPAD_9:
+        case KeyEvent.KEYCODE_NUMPAD_DOT:
+            result = true;
+            break;
+
+        default:
+            break;
+
+        }
+        return result;
+    }
 }
diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnControlPanelJAJP.java b/src/jp/co/omronsoft/openwnn/OpenWnnControlPanelJAJP.java
index 9a4c205..9fe9263 100644
--- a/src/jp/co/omronsoft/openwnn/OpenWnnControlPanelJAJP.java
+++ b/src/jp/co/omronsoft/openwnn/OpenWnnControlPanelJAJP.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImpl.java b/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImpl.java
index e5b7fe0..4b8ac2c 100644
--- a/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImpl.java
+++ b/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -137,6 +137,8 @@
     protected SQLiteDatabase mDbDic = null;
     /** The search cursor of the writable dictionary */
     protected SQLiteCursor mDbCursor = null;
+    /** The writable dictionary object Access helper */
+    protected OpenWnnSQLiteOpenHelper mDbOpenHelper = null;
     /** The number of queried items */
     protected int mCountCursor = 0;
     /** The type of the search cursor object */
@@ -322,6 +324,7 @@
             /* The SQLiteDataBase object must close() before releasing. */
             mDbDic.close();
             mDbDic = null;
+            mDbOpenHelper = null;
         }
     }
     /**
@@ -351,7 +354,8 @@
     public void setInUseState( boolean flag ) {
         if( flag ) {
             if( mDbDic == null ) {
-                mDbDic = SQLiteDatabase.openOrCreateDatabase( mDicFilePath, null );
+                mDbOpenHelper = new OpenWnnSQLiteOpenHelper(OpenWnn.getCurrentIme(), mDicFilePath);
+                mDbDic = mDbOpenHelper.getWritableDatabase();
             }
         } else {
             freeDatabase();
diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImplJni.java b/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImplJni.java
index 34d533f..4d49a8b 100644
--- a/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImplJni.java
+++ b/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImplJni.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnEN.java b/src/jp/co/omronsoft/openwnn/OpenWnnEN.java
index 6bcce4f..0b9ae15 100644
--- a/src/jp/co/omronsoft/openwnn/OpenWnnEN.java
+++ b/src/jp/co/omronsoft/openwnn/OpenWnnEN.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -167,7 +167,13 @@
         mComposingText = new ComposingText();
         mCandidatesViewManager = new TextCandidatesViewManager(-1);
         mInputViewManager = new DefaultSoftKeyboardEN();
-        mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic");
+
+        if (OpenWnn.getCurrentIme() != null) {
+            if (mConverterEN == null) {
+                mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic");
+            }
+        }
+
         mConverter = mConverterEN;
         mSymbolList = null;
 
@@ -281,6 +287,10 @@
         super.onCreate();
         mWordSeparators = getResources().getString(R.string.en_word_separators);
 
+        if (mConverterEN == null) {
+            mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic");
+        }
+
         if (mSymbolList == null) {
             mSymbolList = new SymbolList(this, SymbolList.LANG_EN);
         }
@@ -327,10 +337,15 @@
         fitInputType(pref, attribute);
 
         ((DefaultSoftKeyboard) mInputViewManager).resetCurrentKeyboard();
+
+        if (OpenWnn.isXLarge()) {
+            mTextCandidatesViewManager.setPreferences(pref);
+        }
     }
 
     /** @see jp.co.omronsoft.openwnn.OpenWnn#hideWindow */
     @Override public void hideWindow() {
+        ((BaseInputView)((DefaultSoftKeyboard) mInputViewManager).getCurrentView()).closeDialog();
         mComposingText.clear();
         mInputViewManager.onUpdateState(this);
         mHandler.removeMessages(MSG_START_TUTORIAL);
@@ -521,7 +536,7 @@
             ret = processKeyEvent(ev.keyEvent);
             if (!ret) {
             	int code = keyEvent.getKeyCode();
-            	if (code == KeyEvent.KEYCODE_ENTER) {
+            	if (code == KeyEvent.KEYCODE_ENTER || keyCode == KeyEvent.KEYCODE_NUMPAD_ENTER) {
                     sendKeyChar('\n');
             	} else {
                     mInputConnection.sendKeyEvent(keyEvent);
@@ -705,6 +720,7 @@
                 return true;
 
             case KeyEvent.KEYCODE_ENTER:
+            case KeyEvent.KEYCODE_NUMPAD_ENTER:
             case KeyEvent.KEYCODE_DPAD_CENTER:
                 commitText(1);
                 mComposingText.clear();
@@ -715,7 +731,7 @@
                 return true;
 
             default:
-                break;
+                return !isThroughKeyCode(key);
             }
         } else {
             /* if there is no composing string. */
@@ -732,6 +748,7 @@
                 switch (key) {
                 case KeyEvent.KEYCODE_DPAD_CENTER:
                 case KeyEvent.KEYCODE_ENTER:
+                case KeyEvent.KEYCODE_NUMPAD_ENTER:
                     if (mEnableAutoHideKeyboard) {
                         mInputViewManager.closing();
                         requestHideSelf(0);
@@ -823,9 +840,9 @@
                     mDisplayText.setSpan(SPAN_REMAIN_BGCOLOR_HL, cursor, disp.length(),
                             Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                     mDisplayText.setSpan(SPAN_TEXTCOLOR, 0, disp.length(),
-                            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+                            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
                 }
-
+ 
                 disp.setSpan(SPAN_UNDERLINE, 0, disp.length(),
                         Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
             }
diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnEvent.java b/src/jp/co/omronsoft/openwnn/OpenWnnEvent.java
index 06260e1..030fa57 100644
--- a/src/jp/co/omronsoft/openwnn/OpenWnnEvent.java
+++ b/src/jp/co/omronsoft/openwnn/OpenWnnEvent.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@
 /**
  * The definition class of event message used by OpenWnn framework.
  *
- * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
+ * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
  */
 public class OpenWnnEvent {
     /** Offset value for private events */
@@ -127,6 +127,11 @@
     public static final int CHANGE_MODE  = 0xF000000F;
 
     /**
+     * Key long press event.
+     */
+    public static final int KEYLONGPRESS = 0xF0000024;
+
+    /**
      * The definition class of engine's mode.
      */
     public static final class Mode {
@@ -224,6 +229,36 @@
      */
     public static final int TOUCH_OTHER_KEY = 0xF0000020;
 
+    /**
+     * Start focus candidate.
+     */
+    public static final int FOCUS_CANDIDATE_START = 0xF0002000;
+
+    /**
+     * End focus candidate.
+     */
+    public static final int FOCUS_CANDIDATE_END = 0xF0002001;
+
+    /**
+     * Scroll up for symbol keyboard.
+     */
+    public static final int CANDIDATE_VIEW_SCROLL_UP = 0xF0001000;
+
+    /**
+     * Scroll down for symbol keyboard.
+     */
+    public static final int CANDIDATE_VIEW_SCROLL_DOWN = 0xF0001001;
+
+    /**
+     * Scroll full up for symbol keyboard.
+     */
+    public static final int CANDIDATE_VIEW_SCROLL_FULL_UP = 0xF0001002;
+
+    /**
+     * Scroll full down for symbol keyboard.
+     */
+    public static final int CANDIDATE_VIEW_SCROLL_FULL_DOWN = 0xF0001003;
+
     /** Event code */
     public int code = UNDEFINED;
     /** Detail mode of the event */
diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnJAJP.java b/src/jp/co/omronsoft/openwnn/OpenWnnJAJP.java
index 880fd11..cbcc074 100644
--- a/src/jp/co/omronsoft/openwnn/OpenWnnJAJP.java
+++ b/src/jp/co/omronsoft/openwnn/OpenWnnJAJP.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,6 +21,7 @@
 import jp.co.omronsoft.openwnn.JAJP.*;
 import android.content.SharedPreferences;
 import android.content.Context;
+import android.content.Intent;
 import android.content.res.Configuration;
 import android.os.Handler;
 import android.os.Message;
@@ -34,18 +35,23 @@
 import android.util.Log;
 import android.view.KeyEvent;
 import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputConnection;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.KeyCharacterMap;
 import android.text.method.MetaKeyKeyListener;
 
+import jp.co.omronsoft.openwnn.BaseInputView;
+import jp.co.omronsoft.openwnn.OpenWnnControlPanelJAJP;
+
+import java.util.HashMap;
 import java.util.regex.Pattern;
 import java.util.regex.Matcher;
 
 /**
  * The OpenWnn Japanese IME class
  *
- * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
+ * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
  */
 public class OpenWnnJAJP extends OpenWnn {
     /**
@@ -70,7 +76,9 @@
      * Mode of the convert engine (Symbol list).
      * Use with {@code OpenWnn.CHANGE_MODE} event.
      */
-    public static final int ENGINE_MODE_SYMBOL = 104;
+    public static final int ENGINE_MODE_SYMBOL_NONE     = 1040;
+    public static final int ENGINE_MODE_SYMBOL          = 1041;
+    public static final int ENGINE_MODE_SYMBOL_KAO_MOJI = 1042;
 
     /**
      * Mode of the convert engine (Keyboard type is QWERTY).
@@ -143,6 +151,24 @@
     /** Delay time(msec.) to start prediction after key input when the candidates view is shown. */
     private static final int PREDICTION_DELAY_MS_SHOWING_CANDIDATE = 200;
 
+    /** H/W 12Keyboard keycode replace table */
+    private static final HashMap<Integer, Integer> HW12KEYBOARD_KEYCODE_REPLACE_TABLE
+            = new HashMap<Integer, Integer>() {{
+          put(KeyEvent.KEYCODE_0, DefaultSoftKeyboard.KEYCODE_JP12_0);
+          put(KeyEvent.KEYCODE_1, DefaultSoftKeyboard.KEYCODE_JP12_1);
+          put(KeyEvent.KEYCODE_2, DefaultSoftKeyboard.KEYCODE_JP12_2);
+          put(KeyEvent.KEYCODE_3, DefaultSoftKeyboard.KEYCODE_JP12_3);
+          put(KeyEvent.KEYCODE_4, DefaultSoftKeyboard.KEYCODE_JP12_4);
+          put(KeyEvent.KEYCODE_5, DefaultSoftKeyboard.KEYCODE_JP12_5);
+          put(KeyEvent.KEYCODE_6, DefaultSoftKeyboard.KEYCODE_JP12_6);
+          put(KeyEvent.KEYCODE_7, DefaultSoftKeyboard.KEYCODE_JP12_7);
+          put(KeyEvent.KEYCODE_8, DefaultSoftKeyboard.KEYCODE_JP12_8);
+          put(KeyEvent.KEYCODE_9, DefaultSoftKeyboard.KEYCODE_JP12_9);
+          put(KeyEvent.KEYCODE_POUND, DefaultSoftKeyboard.KEYCODE_JP12_SHARP);
+          put(KeyEvent.KEYCODE_STAR, DefaultSoftKeyboard.KEYCODE_JP12_ASTER);
+          put(KeyEvent.KEYCODE_CALL, DefaultSoftKeyboard.KEYCODE_JP12_REVERSE);
+    }};
+
 
     /** Convert engine's state */
     private class EngineState {
@@ -284,11 +310,11 @@
 
     /** Symbol lists to display when the symbol key is pressed */
     private static final String[] SYMBOL_LISTS = {
-        SymbolList.SYMBOL_JAPANESE_FACE, SymbolList.SYMBOL_JAPANESE, SymbolList.SYMBOL_ENGLISH
+        SymbolList.SYMBOL_JAPANESE, SymbolList.SYMBOL_JAPANESE_FACE
     };
 
     /** Current symbol list */
-    private int mCurrentSymbol = 0;
+    private int mCurrentSymbol = -1;
 
     /** Romaji-to-Kana converter (HIRAGANA) */
     private Romkan mPreConverterHiragana;
@@ -395,6 +421,9 @@
     /** Whether text selection has started */
     private boolean mHasStartedTextSelection = true;
 
+    /** Whether the H/W 12keyboard is active or not. */
+    private boolean mEnableHardware12Keyboard = false;
+
     /** {@code Handler} for drawing candidates/displaying tutorial */
     Handler mHandler = new Handler() {
             @Override
@@ -438,8 +467,16 @@
         mComposingText = new ComposingText();
         mCandidatesViewManager = new TextCandidatesViewManager(-1);
         mInputViewManager  = new DefaultSoftKeyboardJAJP();
-        mConverter = mConverterJAJP = new OpenWnnEngineJAJP("/data/data/jp.co.omronsoft.openwnn/writableJAJP.dic");
-        mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic");
+
+        if (OpenWnn.getCurrentIme() != null) {
+            if (mConverter == null || mConverterJAJP == null) {
+                mConverter = mConverterJAJP = new OpenWnnEngineJAJP("/data/data/jp.co.omronsoft.openwnn/writableJAJP.dic");
+            }
+            if (mConverterEN == null) {
+                mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic");
+            }
+        }
+
         mPreConverter = mPreConverterHiragana = new Romkan();
         mPreConverterFullKatakana = new RomkanFullKatakana();
         mPreConverterHalfKatakana = new RomkanHalfKatakana();
@@ -463,8 +500,16 @@
 
     /** @see jp.co.omronsoft.openwnn.OpenWnn#onCreate */
     @Override public void onCreate() {
+        updateXLargeMode();
         super.onCreate();
 
+        if (mConverter == null || mConverterJAJP == null) {
+            mConverter = mConverterJAJP = new OpenWnnEngineJAJP("/data/data/jp.co.omronsoft.openwnn/writableJAJP.dic");
+        }
+        if (mConverterEN == null) {
+            mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic");
+        }
+
         String delimiter = Pattern.quote(getResources().getString(R.string.en_word_separators));
         mEnglishAutoCommitDelimiter = Pattern.compile(".*[" + delimiter + "]$");
         if (mConverterSymbolEngineBack == null) {
@@ -476,14 +521,20 @@
     @Override public View onCreateInputView() {
         int hiddenState = getResources().getConfiguration().hardKeyboardHidden;
         boolean hidden = (hiddenState == Configuration.HARDKEYBOARDHIDDEN_YES);
+        boolean type12Key
+                = (getResources().getConfiguration().keyboard == Configuration.KEYBOARD_12KEY);
         ((DefaultSoftKeyboardJAJP) mInputViewManager).setHardKeyboardHidden(hidden);
+        ((DefaultSoftKeyboard) mInputViewManager).setHardware12Keyboard(type12Key);
+        mTextCandidatesViewManager.setHardKeyboardHidden(hidden);
         mEnableTutorial = hidden;
+        mEnableHardware12Keyboard = type12Key;
         return super.onCreateInputView();
     }
 
     /** @see jp.co.omronsoft.openwnn.OpenWnn#onStartInputView */
     @Override public void onStartInputView(EditorInfo attribute, boolean restarting) {
 
+        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
         if (restarting) {
             super.onStartInputView(attribute, restarting);
         } else {
@@ -498,6 +549,10 @@
 
             super.onStartInputView(attribute, restarting);
 
+            if (OpenWnn.isXLarge()) {
+                mTextCandidatesViewManager.setPreferences(pref);
+            }
+ 
             mCandidatesViewManager.clearCandidates();
             mStatus = STATUS_INIT;
             mExactMatchMode = false;
@@ -507,13 +562,15 @@
             mHardAlt   = 0;
             updateMetaKeyStateDisplay();
         }
-        /* load preferences */
-        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
 
         /* initialize the engine's state */
         fitInputType(pref, attribute);
 
-        ((TextCandidatesViewManager)mCandidatesViewManager).setAutoHide(true);
+        if (OpenWnn.isXLarge()) {
+            mTextCandidates1LineViewManager.setAutoHide(true);
+        } else {
+            ((TextCandidatesViewManager)mCandidatesViewManager).setAutoHide(true);
+        }
 
         if (isEnableL2Converter()) {
             breakSequence();
@@ -522,6 +579,12 @@
 
     /** @see jp.co.omronsoft.openwnn.OpenWnn#hideWindow */
     @Override public void hideWindow() {
+        mCandidatesViewManager.setCandidateMsgRemove();
+
+        BaseInputView baseInputView = ((BaseInputView)((DefaultSoftKeyboard) mInputViewManager).getCurrentView());
+        if (baseInputView != null) {
+            baseInputView.closeDialog();
+        }
         mComposingText.clear();
         mInputViewManager.onUpdateState(this);
         clearCommitInfo();
@@ -532,6 +595,12 @@
             mTutorial = null;
         }
 
+        if (OpenWnn.isXLarge()) {
+            mTextCandidates1LineViewManager.closeDialog();
+        } else {
+            mTextCandidatesViewManager.closeDialog();
+        }
+
         super.hideWindow();
     }
 
@@ -556,6 +625,10 @@
             return;
         }
 
+        if (mEngineState.isSymbolList()) {
+            return;
+        }
+
         boolean isNotComposing = ((candidatesStart < 0) && (candidatesEnd < 0));
         if ((mComposingText.size(ComposingText.LAYER1) != 0)
             && !isNotComposing) {
@@ -604,8 +677,12 @@
                 /* Hardware keyboard */
                 int hiddenState = newConfig.hardKeyboardHidden;
                 boolean hidden = (hiddenState == Configuration.HARDKEYBOARDHIDDEN_YES);
+                boolean type12Key = (newConfig.keyboard == Configuration.KEYBOARD_12KEY);
                 ((DefaultSoftKeyboardJAJP) mInputViewManager).setHardKeyboardHidden(hidden);
+                ((DefaultSoftKeyboard) mInputViewManager).setHardware12Keyboard(type12Key);
+                mTextCandidatesViewManager.setHardKeyboardHidden(hidden);
                 mEnableTutorial = hidden;
+                mEnableHardware12Keyboard = type12Key;
             }
         } catch (Exception ex) {
             /* do nothing if an error occurs. */
@@ -624,6 +701,9 @@
             onKeyUpEvent(ev.keyEvent);
             return true;
 
+        case OpenWnnEvent.KEYLONGPRESS:
+            return onKeyLongPressEvent(ev.keyEvent);
+
         case OpenWnnEvent.INITIALIZE_LEARNING_DICTIONARY:
             mConverterEN.initializeDictionary(WnnEngine.DICTIONARY_TYPE_LEARN);
             mConverterJAJP.initializeDictionary(WnnEngine.DICTIONARY_TYPE_LEARN);
@@ -689,6 +769,37 @@
             mStatus |= STATUS_INPUT_EDIT;
             return true;
 
+        case OpenWnnEvent.CANDIDATE_VIEW_SCROLL_UP:
+            if (mCandidatesViewManager instanceof TextCandidatesViewManager) {
+                ((TextCandidatesViewManager) mCandidatesViewManager).setScrollUp();
+            }
+            return true;
+
+        case OpenWnnEvent.CANDIDATE_VIEW_SCROLL_DOWN:
+            if (mCandidatesViewManager instanceof TextCandidatesViewManager) {
+                ((TextCandidatesViewManager) mCandidatesViewManager).setScrollDown();
+            }
+            return true;
+
+        case OpenWnnEvent.CANDIDATE_VIEW_SCROLL_FULL_UP:
+            if (mCandidatesViewManager instanceof TextCandidatesViewManager) {
+                ((TextCandidatesViewManager) mCandidatesViewManager).setScrollFullUp();
+            }
+            return true;
+
+        case OpenWnnEvent.CANDIDATE_VIEW_SCROLL_FULL_DOWN:
+            if (mCandidatesViewManager instanceof TextCandidatesViewManager) {
+                ((TextCandidatesViewManager) mCandidatesViewManager).setScrollFullDown();
+            }
+            return true;
+
+        case OpenWnnEvent.FOCUS_CANDIDATE_START:
+            return true;
+
+        case OpenWnnEvent.FOCUS_CANDIDATE_END:
+            mInputViewManager.onUpdateState(this);
+            return true;
+
         default:
             break;
         }
@@ -723,6 +834,101 @@
             return false;
         }
 
+        if (mEngineState.isSymbolList()) {
+            if (keyEvent != null && keyEvent.isPrintingKey() && isTenKeyCode(keyCode) && !keyEvent.isNumLockOn()) {
+                return false;
+            }
+            switch (keyCode) {
+            case KeyEvent.KEYCODE_DEL:
+                return false;
+
+            case KeyEvent.KEYCODE_BACK:
+                initializeScreen();
+                return true;
+
+            case KeyEvent.KEYCODE_DPAD_CENTER:
+            case KeyEvent.KEYCODE_ENTER:
+            case KeyEvent.KEYCODE_NUMPAD_ENTER:
+                if (mCandidatesViewManager.isFocusCandidate()) {
+                    mCandidatesViewManager.selectFocusCandidate();
+                    return true;
+                }
+                return false;
+
+            case KeyEvent.KEYCODE_DPAD_LEFT:
+                if (mCandidatesViewManager.isFocusCandidate()) {
+                    processLeftKeyEvent();
+                    return true;
+                }
+                return false;
+
+            case KeyEvent.KEYCODE_DPAD_RIGHT:
+                if (mCandidatesViewManager.isFocusCandidate()) {
+                    processRightKeyEvent();
+                    return true;
+                }
+                return false;
+
+            case KeyEvent.KEYCODE_DPAD_DOWN:
+                processDownKeyEvent();
+                return true;
+
+            case KeyEvent.KEYCODE_DPAD_UP:
+                if (mCandidatesViewManager.isFocusCandidate()) {
+                    processUpKeyEvent();
+                    return true;
+                }
+                return false;
+
+            case KeyEvent.KEYCODE_SPACE:
+                if (keyEvent != null) {
+                    if (keyEvent.isShiftPressed()) {
+                        onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_UP));
+                    } else if (keyEvent.isAltPressed()) {
+                        if (keyEvent.getRepeatCount() == 0) {
+                            switchSymbolList();
+                        }
+                    } else {
+                        onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_DOWN));
+                    }
+                }
+                return true;
+
+            case KeyEvent.KEYCODE_SYM:
+                switchSymbolList();
+                return true;
+
+            case KeyEvent.KEYCODE_PAGE_UP:
+                onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_UP));
+                return true;
+
+            case KeyEvent.KEYCODE_PAGE_DOWN:
+                onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_DOWN));
+                return true;
+
+            case KeyEvent.KEYCODE_PICTSYMBOLS:
+                if (keyEvent != null) {
+                    if (keyEvent.getRepeatCount() == 0) {
+                        switchSymbolList();
+                    }
+                }
+                return true;
+
+            default:
+            }
+
+            if ((ev.code == OpenWnnEvent.INPUT_KEY) &&
+                (keyCode != KeyEvent.KEYCODE_SEARCH) &&
+                (keyCode != KeyEvent.KEYCODE_ALT_LEFT) &&
+                (keyCode != KeyEvent.KEYCODE_ALT_RIGHT) &&
+                (keyCode != KeyEvent.KEYCODE_SHIFT_LEFT) &&
+                (keyCode != KeyEvent.KEYCODE_SHIFT_RIGHT)) {
+                state = new EngineState();
+                state.temporaryMode = EngineState.TEMPORARY_DICTIONARY_MODE_NONE;
+                updateEngineState(state);
+            }
+        }
+ 
         if (!((ev.code == OpenWnnEvent.COMMIT_COMPOSING_TEXT)
               || ((keyEvent != null)
                   && ((keyCode == KeyEvent.KEYCODE_SHIFT_LEFT)
@@ -751,13 +957,21 @@
             updateEngineState(state);
         }
 
+        if ((ev.code == OpenWnnEvent.INPUT_KEY) && processHardware12Keyboard(keyEvent)) {
+            return true;
+        }
+
         if (ev.code == OpenWnnEvent.LIST_CANDIDATES_FULL) {
             mStatus |= STATUS_CANDIDATE_FULL;
             mCandidatesViewManager.setViewType(CandidatesViewManager.VIEW_TYPE_FULL);
+            if (!mEngineState.isSymbolList()) {
+                mInputViewManager.hideInputView();
+            }
             return true;
         } else if (ev.code == OpenWnnEvent.LIST_CANDIDATES_NORMAL) {
             mStatus &= ~STATUS_CANDIDATE_FULL;
             mCandidatesViewManager.setViewType(CandidatesViewManager.VIEW_TYPE_NORMAL);
+            mInputViewManager.showInputView();
             return true;
         }
 
@@ -838,7 +1052,7 @@
                 }
                 mAltPressing   = true;
                 updateMetaKeyStateDisplay();
-                return true;
+                return false;
 
             case KeyEvent.KEYCODE_SHIFT_LEFT:
             case KeyEvent.KEYCODE_SHIFT_RIGHT:
@@ -847,7 +1061,7 @@
                 }
                 mShiftPressing = true;
                 updateMetaKeyStateDisplay();
-                return true;
+                return false;
             }
 
             /* handle other key event */
@@ -885,6 +1099,17 @@
             break;
 
         case OpenWnnEvent.CONVERT:
+            if (mEngineState.isRenbun()) {
+                if (mCandidatesViewManager instanceof TextCandidatesViewManager) {
+                    if (!mCandidatesViewManager.isFocusCandidate()) {
+                        processDownKeyEvent();
+                    }
+                    processRightKeyEvent();
+                } else {
+                    mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_RIGHT);
+                }
+                break;
+            }
             startConvert(EngineState.CONVERT_TYPE_RENBUN);
             break;
 
@@ -942,6 +1167,20 @@
 
         /* keys which produce a glyph */
         if (ev.isPrintingKey()) {
+            if (isTenKeyCode(key) && !ev.isNumLockOn()) {
+                return false;
+            }
+            if (ev.isCtrlPressed()){
+                if (key == KeyEvent.KEYCODE_A || key == KeyEvent.KEYCODE_F || key == KeyEvent.KEYCODE_C ||
+                    key == KeyEvent.KEYCODE_V || key == KeyEvent.KEYCODE_X || key == KeyEvent.KEYCODE_Z) {
+                    if (mComposingText.size(ComposingText.LAYER1) < 1) {
+                        return false;
+                    } else {
+                        return true;
+                    }
+                }
+            }
+
             /* do nothing if the character is not able to display or the character is dead key */
             if ((mHardShift > 0 && mHardAlt > 0) ||
                 (ev.isAltPressed() && ev.isShiftPressed())) {
@@ -1009,7 +1248,7 @@
                     updateMetaKeyStateDisplay();
                 }
             }
-
+ 
             if (str == null) {
                 return true;
             }
@@ -1066,6 +1305,7 @@
                 if (mCandidatesViewManager.getViewType() == CandidatesViewManager.VIEW_TYPE_FULL) {
                     mStatus &= ~STATUS_CANDIDATE_FULL;
                     mCandidatesViewManager.setViewType(CandidatesViewManager.VIEW_TYPE_NORMAL);
+                    mInputViewManager.showInputView();
                 } else {
                     if (!mEngineState.isConvertState()) {
                         initializeScreen();
@@ -1102,8 +1342,27 @@
                 }
                 return true;
 
+            case KeyEvent.KEYCODE_DPAD_DOWN:
+                processDownKeyEvent();
+                return true;
+
+            case KeyEvent.KEYCODE_DPAD_UP:
+                if (OpenWnn.isXLarge()) {
+                    updateViewStatusForPrediction(true, true);
+                } else {
+                    if (mCandidatesViewManager.isFocusCandidate()) {
+                        processUpKeyEvent();
+                    }
+                }
+                return true;
+
             case KeyEvent.KEYCODE_DPAD_CENTER:
             case KeyEvent.KEYCODE_ENTER:
+            case KeyEvent.KEYCODE_NUMPAD_ENTER:
+                if (mCandidatesViewManager.isFocusCandidate()) {
+                    mCandidatesViewManager.selectFocusCandidate();
+                    return true;
+                }
                 if (!isEnglishPrediction()) {
                     int cursor = mComposingText.getCursor(ComposingText.LAYER1);
                     if (cursor < 1) {
@@ -1130,7 +1389,7 @@
                 return false;
 
             default:
-                return true;
+                return !isThroughKeyCode(key);
             }
         } else {
             /* if there is no composing string. */
@@ -1138,6 +1397,10 @@
                 /* displaying relational prediction candidates */
                 switch (key) {
                 case KeyEvent.KEYCODE_DPAD_LEFT:
+                    if (mCandidatesViewManager.isFocusCandidate()) {
+                        mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_LEFT);
+                        return true;
+                    }
                     if (isEnableL2Converter()) {
                         /* initialize the converter */
                         mConverter.init();
@@ -1147,6 +1410,10 @@
                     return false;
 
                 case KeyEvent.KEYCODE_DPAD_RIGHT:
+                    if (mCandidatesViewManager.isFocusCandidate()) {
+                        mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_RIGHT);
+                        return true;
+                    }
                     if (isEnableL2Converter()) {
                         /* initialize the converter */
                         mConverter.init();
@@ -1155,6 +1422,26 @@
                     updateViewStatusForPrediction(true, true);
                     return false;
 
+                case KeyEvent.KEYCODE_DPAD_DOWN:
+                    processDownKeyEvent();
+                    return true;
+
+                case KeyEvent.KEYCODE_DPAD_UP:
+                    if (mCandidatesViewManager.isFocusCandidate()) {
+                        processUpKeyEvent();
+                        return true;
+                    }
+                    break;
+
+                case KeyEvent.KEYCODE_DPAD_CENTER:
+                case KeyEvent.KEYCODE_ENTER:
+                case KeyEvent.KEYCODE_NUMPAD_ENTER:
+                    if (mCandidatesViewManager.isFocusCandidate()) {
+                        mCandidatesViewManager.selectFocusCandidate();
+                        return true;
+                    }
+                    break;
+
                 default:
                     return processKeyEventNoInputCandidateShown(ev);
                 }
@@ -1192,14 +1479,27 @@
             mHardAlt = 0;
             mHardShift = 0;
             updateMetaKeyStateDisplay();
+
+            SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
             if (mEngineState.isEnglish()) {
                 /* English mode to Japanese mode */
                 ((DefaultSoftKeyboardJAJP) mInputViewManager).changeKeyMode(DefaultSoftKeyboard.KEYMODE_JA_FULL_HIRAGANA);
                 mConverter = mConverterJAJP;
+
+                mEnableLearning   = pref.getBoolean("opt_enable_learning_ja", true);
+                mEnablePrediction = pref.getBoolean("opt_prediction_ja", true);
             } else {
                 /* Japanese mode to English mode */
                 ((DefaultSoftKeyboardJAJP) mInputViewManager).changeKeyMode(DefaultSoftKeyboard.KEYMODE_JA_HALF_ALPHABET);
                 mConverter = mConverterEN;
+
+                mEnableLearning   = pref.getBoolean("opt_enable_learning_en", true);
+                mEnablePrediction = pref.getBoolean("opt_prediction_en", false);
+                if (OpenWnn.isXLarge()) {
+                    mEnableSpellCorrection = pref.getBoolean("opt_spell_correction_en", false);
+                } else {
+                    mEnableSpellCorrection = pref.getBoolean("opt_spell_correction_en", true);
+                }
             }
             mCandidatesViewManager.clearCandidates();
 
@@ -1225,7 +1525,15 @@
                 checkCommitInfo();
             }
             mEnableAutoDeleteSpace = false;
-
+        } else if (mEngineState.isRenbun()) {
+            if (mCandidatesViewManager instanceof TextCandidatesViewManager) {
+                if (!mCandidatesViewManager.isFocusCandidate()) {
+                    processDownKeyEvent();
+                }
+                processRightKeyEvent();
+            } else {
+                mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_RIGHT);
+            }
         } else {
             /* start consecutive clause conversion if Japanese mode */
             if (mComposingText.size(0) == 0) {
@@ -1312,6 +1620,11 @@
      * Handle a left key event.
      */
     private void processLeftKeyEvent() {
+        if (mCandidatesViewManager.isFocusCandidate()) {
+            mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_LEFT);
+            return;
+        }
+
         if (mEngineState.isConvertState()) {
             if (mEngineState.isEisuKana()) {
                 mExactMatchMode = true;
@@ -1339,6 +1652,11 @@
      * Handle a right key event.
      */
     private void processRightKeyEvent() {
+        if (mCandidatesViewManager.isFocusCandidate()) {
+            mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_RIGHT);
+            return;
+        }
+
         int layer = mTargetLayer;
         ComposingText composingText = mComposingText;
         if (mExactMatchMode || (mEngineState.isConvertState())) {
@@ -1369,6 +1687,20 @@
     }
 
     /**
+     * Handle a down key event.
+     */
+    private void processDownKeyEvent() {
+        mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_DOWN);
+    }
+
+    /**
+     * Handle a up key event.
+     */
+    private void processUpKeyEvent() {
+        mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_UP);
+    }
+
+    /**
      * Handle a key event which is not right or left key when the
      * composing text is empty and some candidates are shown.
      *
@@ -1377,12 +1709,14 @@
      */
     boolean processKeyEventNoInputCandidateShown(KeyEvent ev) {
         boolean ret = true;
+        int key = ev.getKeyCode();
 
-        switch (ev.getKeyCode()) {
+        switch (key) {
         case KeyEvent.KEYCODE_DEL:
             ret = true;
             break;
         case KeyEvent.KEYCODE_ENTER:
+        case KeyEvent.KEYCODE_NUMPAD_ENTER:
         case KeyEvent.KEYCODE_DPAD_UP:
         case KeyEvent.KEYCODE_DPAD_DOWN:
         case KeyEvent.KEYCODE_MENU:
@@ -1402,6 +1736,7 @@
             if (mCandidatesViewManager.getViewType() == CandidatesViewManager.VIEW_TYPE_FULL) {
                 mStatus &= ~STATUS_CANDIDATE_FULL;
                 mCandidatesViewManager.setViewType(CandidatesViewManager.VIEW_TYPE_NORMAL);
+                mInputViewManager.showInputView();
                 return true;
             } else {
                 ret = true;
@@ -1409,7 +1744,7 @@
             break;
 
         default:
-            return true;
+            return !isThroughKeyCode(key);
         }
 
         if (mConverter != null) {
@@ -1749,6 +2084,10 @@
             }
             return;
 
+        case ENGINE_MODE_SYMBOL_KAO_MOJI:
+            changeSymbolEngineState(state, ENGINE_MODE_SYMBOL_KAO_MOJI);
+            return;
+
         default:
             break;
         }
@@ -1757,6 +2096,7 @@
         state.temporaryMode = EngineState.TEMPORARY_DICTIONARY_MODE_NONE;
         updateEngineState(state);
 
+        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
         state = new EngineState();
         switch (mode) {
         case OpenWnnEvent.Mode.DIRECT:
@@ -1771,6 +2111,14 @@
             updateEngineState(state);
             mConverter = mConverterEN;
             mPreConverter = null;
+
+            mEnableLearning   = pref.getBoolean("opt_enable_learning_en", true);
+            mEnablePrediction = pref.getBoolean("opt_prediction_en", false);
+            if (OpenWnn.isXLarge()) {
+                mEnableSpellCorrection = pref.getBoolean("opt_spell_correction_en", false);
+            } else {
+                mEnableSpellCorrection = pref.getBoolean("opt_spell_correction_en", true);
+            }
             break;
 
         case OpenWnnEvent.Mode.NO_LV2_CONV:
@@ -1794,6 +2142,9 @@
             updateEngineState(state);
             mConverter = mConverterJAJP;
             mPreConverter = mPreConverterHiragana;
+
+            mEnableLearning   = pref.getBoolean("opt_enable_learning_ja", true);
+            mEnablePrediction = pref.getBoolean("opt_prediction_ja", true);
             break;
         }
 
@@ -1860,10 +2211,19 @@
             case EngineState.TEMPORARY_DICTIONARY_MODE_NONE:
                 if (myState.temporaryMode != EngineState.TEMPORARY_DICTIONARY_MODE_NONE) {
                     setDictionary(mPrevDictionarySet);
-                    mCurrentSymbol = 0;
+                    mCurrentSymbol = -1;
                     mPreConverter = mPreConverterBack;
                     mConverter = mConverterBack;
                     mDisableAutoCommitEnglishMask &= ~AUTO_COMMIT_ENGLISH_SYMBOL;
+                    ((DefaultSoftKeyboard)mInputViewManager).setNormalKeyboard();
+                    mTextCandidatesViewManager.setSymbolMode(false, ENGINE_MODE_SYMBOL_NONE);
+                    if (OpenWnn.isXLarge()) {
+                        mCandidatesViewManager = mTextCandidates1LineViewManager;
+                        View view = mTextCandidates1LineViewManager.getCurrentView();
+                        if (view != null) {
+                            setCandidatesView(view);
+                        }
+                    }
                 }
                 break;
 
@@ -1878,7 +2238,25 @@
                 }
                 mConverter = mConverterSymbolEngineBack;
                 mDisableAutoCommitEnglishMask |= AUTO_COMMIT_ENGLISH_SYMBOL;
+                int engineModeSymbol = 0;
+ 
+                if (SYMBOL_LISTS[mCurrentSymbol] == SymbolList.SYMBOL_JAPANESE) {
+                    engineModeSymbol = ENGINE_MODE_SYMBOL;
+                } else if (SYMBOL_LISTS[mCurrentSymbol] == SymbolList.SYMBOL_JAPANESE_FACE) {
+                    engineModeSymbol = ENGINE_MODE_SYMBOL_KAO_MOJI;
+                } else {
+                }
+ 
+                mTextCandidatesViewManager.setSymbolMode(true, engineModeSymbol);
+                if (OpenWnn.isXLarge()) {
+                    mCandidatesViewManager = mTextCandidatesViewManager;
+                    View view = mTextCandidatesViewManager.getCurrentView();
+                    if (view != null) {
+                        setCandidatesView(view);
+                    }
+                }
                 breakSequence();
+                ((DefaultSoftKeyboard)mInputViewManager).setSymbolKeyboard();
                 break;
 
             default:
@@ -2066,7 +2444,18 @@
                     commitSpaceJustOne();
                     checkCommitInfo();
                 } else {
-                    startConvert(EngineState.CONVERT_TYPE_RENBUN);
+                    if (mEngineState.isRenbun()) {
+                        if (mCandidatesViewManager instanceof TextCandidatesViewManager) {
+                            if (!mCandidatesViewManager.isFocusCandidate()) {
+                                processDownKeyEvent();
+                            }
+                            processRightKeyEvent();
+                        } else {
+                            mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_RIGHT);
+                        }
+                    } else {
+                        startConvert(EngineState.CONVERT_TYPE_RENBUN);
+                    }
                 }
             }
             mEnableAutoDeleteSpace = false;
@@ -2267,14 +2656,24 @@
             return;
         }
 
-        mEnableLearning   = preference.getBoolean("opt_enable_learning", true);
-        mEnablePrediction = preference.getBoolean("opt_prediction", true);
-        mEnableSpellCorrection = preference.getBoolean("opt_spell_correction", true);
+        if (mConverter == mConverterEN) {
+            mEnableLearning   = preference.getBoolean("opt_enable_learning_en", true);
+            mEnablePrediction = preference.getBoolean("opt_prediction_en", false);
+            if (OpenWnn.isXLarge()) {
+                mEnableSpellCorrection = preference.getBoolean("opt_spell_correction_en", false);
+            } else {
+                mEnableSpellCorrection = preference.getBoolean("opt_spell_correction_en", true);
+            }
+        } else {
+            mEnableLearning   = preference.getBoolean("opt_enable_learning_ja", true);
+            mEnablePrediction = preference.getBoolean("opt_prediction_ja", true);
+        }
         mDisableAutoCommitEnglishMask &= ~AUTO_COMMIT_ENGLISH_OFF;
         int preferenceDictionary = EngineState.PREFERENCE_DICTIONARY_NONE;
         mEnableConverter = true;
         mEnableSymbolList = true;
         mEnableSymbolListNonHalf = true;
+        setEnabledTabs(true);
         mAutoCaps = preference.getBoolean("auto_caps", true);
         mFilter.filter = 0;
         mEnableAutoInsertSpace = true;
@@ -2305,6 +2704,7 @@
                 mEnableSymbolListNonHalf = false;
                 mFilter.filter = CandidateFilter.FILTER_NON_ASCII;
                 mDisableAutoCommitEnglishMask |= AUTO_COMMIT_ENGLISH_OFF;
+                mTextCandidatesViewManager.setEnableEmoticon(false);
                 break;
 
             case EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS:
@@ -2353,7 +2753,9 @@
         updateEngineState(state);
         updateMetaKeyStateDisplay();
 
-        checkTutorial(info.privateImeOptions);
+        if (!OpenWnn.isXLarge()) {
+            checkTutorial(info.privateImeOptions);
+        }
     }
 
     /**
@@ -2473,6 +2875,85 @@
                 updateMetaKeyStateDisplay();
             }
         }
+        if (mEnableHardware12Keyboard && !mDirectInputMode) {
+            if (isHardKeyboard12KeyLongPress(key)
+                    && ((ev.getFlags() & KeyEvent.FLAG_CANCELED_LONG_PRESS) == 0)) {
+                switch (key) {
+                case KeyEvent.KEYCODE_SOFT_LEFT:
+                    if (mEngineState.isSymbolList()) {
+                        switchSymbolList();
+                    } else if ((mComposingText.size(0) != 0) && !mEngineState.isRenbun()
+                            && (((DefaultSoftKeyboardJAJP)mInputViewManager).getKeyMode()
+                                     == DefaultSoftKeyboardJAJP.KEYMODE_JA_FULL_HIRAGANA)) {
+                        startConvert(EngineState.CONVERT_TYPE_RENBUN);
+                    } else {
+                        ((DefaultSoftKeyboard) mInputViewManager).onKey(
+                                DefaultSoftKeyboard.KEYCODE_JP12_EMOJI, null);
+                    }
+                    break;
+
+                case KeyEvent.KEYCODE_SOFT_RIGHT:
+                    ((DefaultSoftKeyboardJAJP) mInputViewManager).showInputModeSwitchDialog();
+                    break;
+
+                case KeyEvent.KEYCODE_DEL:
+                    int newKeyCode = KeyEvent.KEYCODE_FORWARD_DEL;
+                    int composingTextSize = mComposingText.size(ComposingText.LAYER1);
+                    if (composingTextSize > 0) {
+                        if (mComposingText.getCursor(ComposingText.LAYER1) > (composingTextSize - 1)) {
+                            newKeyCode = KeyEvent.KEYCODE_DEL;
+                        }
+                        KeyEvent keyEvent = new KeyEvent(ev.getAction(), newKeyCode);
+                        if (!processKeyEvent(keyEvent)) {
+                            sendDownUpKeyEvents(keyEvent.getKeyCode());
+                        }
+                    } else {
+                        if (mInputConnection != null) {
+                            CharSequence text = mInputConnection.getTextAfterCursor(1, 0);
+                            if ((text == null) || (text.length() == 0)) {
+                                newKeyCode = KeyEvent.KEYCODE_DEL;
+                            }
+                        }
+                        sendDownUpKeyEvents(newKeyCode);
+                    }
+                    break;
+
+                default:
+                    break;
+
+                }
+            }
+        }
+    }
+
+    /**
+     * Handling KeyEvent(KEYLONGPRESS)
+     * <br>
+     * This method is called from {@link #handleEvent}.
+     *
+     * @param ev   An long press key event
+     * @return    {@code true} if the event is processed in this method; {@code false} if not.
+     */
+    private boolean onKeyLongPressEvent(KeyEvent ev) {
+        if (mEnableHardware12Keyboard) {
+            int keyCode = 0;
+            if (ev != null) {
+                keyCode = ev.getKeyCode();
+            }
+            switch (keyCode) {
+            case KeyEvent.KEYCODE_DEL:
+                initializeScreen();
+                if (mInputConnection != null) {
+                    mInputConnection.deleteSurroundingText(Integer.MAX_VALUE, Integer.MAX_VALUE);
+                }
+                return true;
+
+            default:
+                break;
+
+            }
+        }
+        return false;
     }
 
     /**
@@ -2574,4 +3055,84 @@
         mConverterJAJP.breakSequence();
         mConverterEN.breakSequence();
     }
+
+    /**
+     * Switch symbol list.
+     */
+    private void switchSymbolList(){
+        changeSymbolEngineState(new EngineState(), ENGINE_MODE_SYMBOL);
+        mHardAlt = 0;
+        updateMetaKeyStateDisplay();
+    }
+
+    /**
+     * Change symbol engine state.
+     *
+     * @param  state  Engine state
+     * @param  mode   Engine mode
+     */
+    private void changeSymbolEngineState(EngineState state, int mode) {
+        state.temporaryMode = EngineState.TEMPORARY_DICTIONARY_MODE_SYMBOL;
+        updateEngineState(state);
+    }
+
+    /**
+     * Set enable tabs.
+     *
+     * @param enableEmoticon {@code true}  - Emoticon is enabled.
+     *                       {@code false} - Emoticon is disabled.
+     */
+    private void setEnabledTabs(boolean enableEmoticon) {
+        mTextCandidatesViewManager.setEnableEmoticon(enableEmoticon);
+    }
+
+    /**
+     * Is enable hard keyboard 12Key long press keycode.
+     *
+     * @param  keyCode  keycode.
+     * @return  {@code true} if enable long press keycode; {@code false} if not.
+     */
+    private boolean isHardKeyboard12KeyLongPress(int keyCode) {
+        boolean isLongPress = false;
+        switch (keyCode) {
+        case KeyEvent.KEYCODE_SOFT_LEFT:
+        case KeyEvent.KEYCODE_SOFT_RIGHT:
+        case KeyEvent.KEYCODE_DEL:
+            isLongPress = true;
+            break;
+
+        default:
+            break;
+        }
+        return isLongPress;
+    }
+
+    /**
+     * Key event handler for hardware 12Keyboard.
+     *
+     * @param keyEvent A key event
+     * @return  {@code true} if the event is handled in this method.
+     */
+    private boolean processHardware12Keyboard(KeyEvent keyEvent) {
+        boolean ret = false;
+        if (mEnableHardware12Keyboard && (keyEvent != null)) {
+            int keyCode = keyEvent.getKeyCode();
+
+            if (isHardKeyboard12KeyLongPress(keyCode)) {
+                if (keyEvent.getRepeatCount() == 0) {
+                    keyEvent.startTracking();
+                }
+                ret = true;
+            } else {
+                Integer code = HW12KEYBOARD_KEYCODE_REPLACE_TABLE.get(keyCode);
+                if (code != null) {
+                    if (keyEvent.getRepeatCount() == 0) {
+                        ((DefaultSoftKeyboard) mInputViewManager).onKey(code.intValue(), null);
+                    }
+                    ret = true;
+                }
+            }
+        }
+        return ret;
+    }
 }
diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnSQLiteOpenHelper.java b/src/jp/co/omronsoft/openwnn/OpenWnnSQLiteOpenHelper.java
new file mode 100644
index 0000000..382dc09
--- /dev/null
+++ b/src/jp/co/omronsoft/openwnn/OpenWnnSQLiteOpenHelper.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package jp.co.omronsoft.openwnn;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+import android.util.Log;
+
+/**
+ * The implementation class of SQLiteOpenHelper .
+ *
+ * @author Copyright (C) 2012 OMRON SOFTWARE CO.,LTD.  All Rights Reserved.
+ */
+public class OpenWnnSQLiteOpenHelper extends SQLiteOpenHelper {
+    private static final int DATABASE_VERSION = 1;
+
+    public OpenWnnSQLiteOpenHelper(Context context, String dbname) {
+        super(context, dbname, null, DATABASE_VERSION);
+    }
+
+    @Override
+    public void onCreate(SQLiteDatabase db) {
+    }
+
+    @Override
+    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+    }
+}
diff --git a/src/jp/co/omronsoft/openwnn/StrSegment.java b/src/jp/co/omronsoft/openwnn/StrSegment.java
index b0715bc..481bb13 100644
--- a/src/jp/co/omronsoft/openwnn/StrSegment.java
+++ b/src/jp/co/omronsoft/openwnn/StrSegment.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/StrSegmentClause.java b/src/jp/co/omronsoft/openwnn/StrSegmentClause.java
index 210b3d8..1922210 100644
--- a/src/jp/co/omronsoft/openwnn/StrSegmentClause.java
+++ b/src/jp/co/omronsoft/openwnn/StrSegmentClause.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/SymbolList.java b/src/jp/co/omronsoft/openwnn/SymbolList.java
index e41bc4d..8000525 100644
--- a/src/jp/co/omronsoft/openwnn/SymbolList.java
+++ b/src/jp/co/omronsoft/openwnn/SymbolList.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -98,10 +98,10 @@
 
         case LANG_JA:
             /* symbols for Japanese IME */
-            mSymbols.put(SYMBOL_ENGLISH, getXmlfile(R.xml.symbols_latin1_list));
             mSymbols.put(SYMBOL_JAPANESE, getXmlfile(R.xml.symbols_japan_list));
             mSymbols.put(SYMBOL_JAPANESE_FACE, getXmlfile(R.xml.symbols_japan_face_list));
-            mCurrentList = mSymbols.get(SYMBOL_ENGLISH);
+            mSymbols.put(SYMBOL_ENGLISH, getXmlfile(R.xml.symbols_latin1_list));
+            mCurrentList = mSymbols.get(SYMBOL_JAPANESE);
             break;
 
         case LANG_ZHCN: 
diff --git a/src/jp/co/omronsoft/openwnn/TextCandidates1LineViewManager.java b/src/jp/co/omronsoft/openwnn/TextCandidates1LineViewManager.java
new file mode 100644
index 0000000..4b1a65b
--- /dev/null
+++ b/src/jp/co/omronsoft/openwnn/TextCandidates1LineViewManager.java
@@ -0,0 +1,726 @@
+/*
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package jp.co.omronsoft.openwnn;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.SharedPreferences;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.media.AudioManager;
+import android.os.Handler;
+import android.os.Message;
+import android.os.Vibrator;
+import android.text.Layout;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.text.style.AbsoluteSizeSpan;
+import android.text.style.AlignmentSpan;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnClickListener;
+import android.view.View.OnLongClickListener;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.HorizontalScrollView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+
+/**
+ * The default candidates view manager using {@link android.widget.EditText}.
+ *
+ * @author Copyright (C) 2011 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
+ */
+public class TextCandidates1LineViewManager extends CandidatesViewManager {
+
+    /** displayCandidates() normal display */
+    private static final int IS_NEXTCANDIDATE_NORMAL = 1;
+    /** displayCandidates() delay display */
+    private static final int IS_NEXTCANDIDATE_DELAY = 2;
+    /** displayCandidates() display end */
+    private static final int IS_NEXTCANDIDATE_END = 3;
+
+    /** Delay of set candidate */
+    private static final int SET_CANDIDATE_DELAY = 50;
+    /** Delay Millis */
+    private static final int CANDIDATE_DELAY_MILLIS = 500;
+
+    /** Scroll distance */
+    private static final float SCROLL_DISTANCE = 0.9f;
+
+    /** Body view of the candidates list */
+    private ViewGroup  mViewBody;
+    /** Scroller */
+    private HorizontalScrollView mViewBodyScroll;
+    /** Left more button */
+    private ImageView mLeftMoreButton;
+    /** Right more button */
+    private ImageView mRightMoreButton;
+    /** Candidate view */
+    private LinearLayout mViewCandidateList;
+
+    /** {@link OpenWnn} instance using this manager */
+    private OpenWnn mWnn;
+    /** View type (VIEW_TYPE_NORMAL or VIEW_TYPE_FULL or VIEW_TYPE_CLOSE) */
+    private int mViewType;
+
+    /** view width */
+    private int mViewWidth;
+    /** Minimum width of candidate view */
+    private int mCandidateMinimumWidth;
+    /** Minimum height of candidate view */
+    private int mCandidateMinimumHeight;
+
+    /** Minimum width of candidate view */
+    private static final int CANDIDATE_MINIMUM_WIDTH = 48;
+
+    /** Whether hide the view if there is no candidate */
+    private boolean mAutoHideMode;
+    /** The converter to get candidates from and notice the selected candidate to. */
+    private WnnEngine mConverter;
+    /** Limitation of displaying candidates */
+    private int mDisplayLimit;
+
+    /** Vibrator for touch vibration */
+    private Vibrator mVibrator = null;
+    /** AudioManager for click sound */
+    private AudioManager mSound = null;
+
+    /** Number of candidates displaying */
+    private int mWordCount;
+    /** List of candidates */
+    private ArrayList<WnnWord> mWnnWordArray;
+
+    /** Character width of the candidate area */
+    private int mLineLength = 0;
+    /** Maximum width of candidate view */
+    private int mCandidateMaxWidth = 0;
+    /** general information about a display */
+    private final DisplayMetrics mMetrics = new DisplayMetrics();
+    /** Focus is none now */
+    private static final int FOCUS_NONE = -1;
+    /** Handler for set  Candidate */
+    private static final int MSG_SET_CANDIDATES = 1;
+    /** List of textView for CandiData List */
+    private ArrayList<TextView> mTextViewArray = new ArrayList<TextView>();
+    /** Now focus textView index */
+    private int mCurrentFocusIndex = FOCUS_NONE;
+    /** Focused View */
+    private View mFocusedView = null;
+    /** Focused View Background */
+    private Drawable mFocusedViewBackground = null;
+    /** Scale up text size */
+    private AbsoluteSizeSpan mSizeSpan;
+    /** Scale up text alignment */
+    private AlignmentSpan.Standard mCenterSpan;
+    /** Whether candidates long click enable */
+    private boolean mEnableCandidateLongClick = true;
+
+   /** {@code Handler} Handler for focus Candidate wait delay */
+    private Handler mHandler = new Handler() {
+            @Override public void handleMessage(Message msg) {
+
+            switch (msg.what) {
+                case MSG_SET_CANDIDATES:
+                    displayCandidatesDelay(mConverter);
+                    break;
+
+                default:
+                    break;
+                }
+            }
+        };
+
+    /** Event listener for touching a candidate */
+    private OnClickListener mCandidateOnClick = new OnClickListener() {
+        public void onClick(View v) {
+            if (!v.isShown()) {
+                return;
+            }
+            playSoundAndVibration();
+
+            if (v instanceof CandidateTextView) {
+                CandidateTextView text = (CandidateTextView)v;
+                int wordcount = text.getId();
+                WnnWord word = getWnnWord(wordcount);
+                clearFocusCandidate();
+                selectCandidate(word);
+            }
+        }
+    };
+
+    /** Event listener for long-clicking a candidate */
+    private OnLongClickListener mCandidateOnLongClick = new OnLongClickListener() {
+        public boolean onLongClick(View v) {
+            if (!v.isShown()) {
+                return true;
+            }
+
+            if (!mEnableCandidateLongClick) {
+                return false;
+            }
+
+            clearFocusCandidate();
+
+            int wordcount = ((TextView)v).getId();
+            mWord = mWnnWordArray.get(wordcount);
+
+            displayDialog(v, mWord);
+            return true;
+        }
+    };
+
+    /**
+     * Constructor
+     */
+    public TextCandidates1LineViewManager() {
+        this(300);
+    }
+
+    /**
+     * Constructor
+     *
+     * @param displayLimit      The limit of display
+     */
+    public TextCandidates1LineViewManager(int displayLimit) {
+        mDisplayLimit = displayLimit;
+        mWnnWordArray = new ArrayList<WnnWord>();
+        mAutoHideMode = true;
+        mMetrics.setToDefaults();
+    }
+
+    /**
+     * Set auto-hide mode.
+     * @param hide      {@code true} if the view will hidden when no candidate exists;
+     *                  {@code false} if the view is always shown.
+     */
+    public void setAutoHide(boolean hide) {
+        mAutoHideMode = hide;
+    }
+
+    /** @see CandidatesViewManager */
+    public View initView(OpenWnn parent, int width, int height) {
+        mWnn = parent;
+        mViewWidth = width;
+
+        Resources r = mWnn.getResources();
+
+        mCandidateMinimumWidth = (int)(CANDIDATE_MINIMUM_WIDTH * mMetrics.density);
+        mCandidateMinimumHeight = r.getDimensionPixelSize(R.dimen.candidate_layout_height);
+
+        LayoutInflater inflater = parent.getLayoutInflater();
+        mViewBody = (ViewGroup)inflater.inflate(R.layout.candidates_1line, null);
+        mViewBodyScroll = (HorizontalScrollView)mViewBody.findViewById(R.id.candview_scroll_1line);
+        mViewBodyScroll.setOverScrollMode(View.OVER_SCROLL_NEVER);
+        mViewBodyScroll.setOnTouchListener(new View.OnTouchListener() {
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (event.getAction()) {
+                case MotionEvent.ACTION_DOWN:
+                case MotionEvent.ACTION_MOVE:
+                    if (mHandler.hasMessages(MSG_SET_CANDIDATES)) {
+                        mHandler.removeMessages(MSG_SET_CANDIDATES);
+                        mHandler.sendEmptyMessageDelayed(MSG_SET_CANDIDATES, CANDIDATE_DELAY_MILLIS);
+                    }
+                    break;
+
+                default:
+                    break;
+
+                }
+                return false;
+            }
+        });
+
+        mLeftMoreButton = (ImageView)mViewBody.findViewById(R.id.left_more_imageview);
+        mLeftMoreButton.setOnClickListener(new View.OnClickListener() {
+            public void onClick(View v) {
+                if (!v.isShown()) {
+                    return;
+                }
+                playSoundAndVibration();
+                if (mViewBodyScroll.getScrollX() > 0) {
+                    mViewBodyScroll.smoothScrollBy(
+                                        (int)(mViewBodyScroll.getWidth() * -SCROLL_DISTANCE), 0);
+                }
+            }
+        });
+        mLeftMoreButton.setOnLongClickListener(new View.OnLongClickListener() {
+            public boolean onLongClick(View v) {
+                if (!v.isShown()) {
+                    return false;
+                }
+                if (!mViewBodyScroll.fullScroll(View.FOCUS_LEFT)) {
+                    mViewBodyScroll.scrollTo(mViewBodyScroll.getChildAt(0).getWidth(), 0);
+                }
+                return true;
+            }
+        });
+
+        mRightMoreButton = (ImageView)mViewBody.findViewById(R.id.right_more_imageview);
+        mRightMoreButton.setOnClickListener(new View.OnClickListener() {
+            public void onClick(View v) {
+                if (!v.isShown()) {
+                    return;
+                }
+                int width = mViewBodyScroll.getWidth();
+                int scrollMax = mViewBodyScroll.getChildAt(0).getRight();
+
+                if ((mViewBodyScroll.getScrollX() + width) < scrollMax) {
+                    mViewBodyScroll.smoothScrollBy((int)(width * SCROLL_DISTANCE), 0);
+                }
+            }
+        });
+        mRightMoreButton.setOnLongClickListener(new View.OnLongClickListener() {
+            public boolean onLongClick(View v) {
+                if (!v.isShown()) {
+                    return false;
+                }
+                if (!mViewBodyScroll.fullScroll(View.FOCUS_RIGHT)) {
+                    mViewBodyScroll.scrollTo(0, 0);
+                }
+                return true;
+            }
+        });
+
+        mViewLongPressDialog = (View)inflater.inflate(R.layout.candidate_longpress_dialog, null);
+
+        /* select button */
+        Button longPressDialogButton = (Button)mViewLongPressDialog.findViewById(R.id.candidate_longpress_dialog_select);
+        longPressDialogButton.setOnClickListener(new View.OnClickListener() {
+                public void onClick(View v) {
+                    playSoundAndVibration();
+                    clearFocusCandidate();
+                    selectCandidate(mWord);
+                    closeDialog();
+                }
+            });
+
+        /* cancel button */
+        longPressDialogButton = (Button)mViewLongPressDialog.findViewById(R.id.candidate_longpress_dialog_cancel);
+        longPressDialogButton.setOnClickListener(new View.OnClickListener() {
+                public void onClick(View v) {
+                    playSoundAndVibration();
+                    mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL));
+                    mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.UPDATE_CANDIDATE));
+                    closeDialog();
+                }
+            });
+
+        int buttonWidth = r.getDimensionPixelSize(R.dimen.candidate_layout_width);
+        mCandidateMaxWidth = (mViewWidth - buttonWidth * 2) / 2;
+
+        mSizeSpan = new AbsoluteSizeSpan(r.getDimensionPixelSize(R.dimen.candidate_delete_word_size));
+        mCenterSpan = new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER);
+
+        createNormalCandidateView();
+
+        setViewType(CandidatesViewManager.VIEW_TYPE_CLOSE);
+
+        return mViewBody;
+    }
+
+    /**
+     * Create normal candidate view
+     */
+    private void createNormalCandidateView() {
+        mViewCandidateList = (LinearLayout)mViewBody.findViewById(R.id.candidates_view_1line);
+
+        Context context = mViewBodyScroll.getContext();
+        for (int i = 0; i < mDisplayLimit; i++) {
+            mViewCandidateList.addView(new CandidateTextView(context,
+                                                            mCandidateMinimumHeight,
+                                                            mCandidateMinimumWidth,
+                                                            mCandidateMaxWidth));
+        }
+    }
+
+    /** @see CandidatesViewManager#getCurrentView */
+    public View getCurrentView() {
+        return mViewBody;
+    }
+
+    /** @see CandidatesViewManager#setViewType */
+    public void setViewType(int type) {
+        mViewType = type;
+
+        if (type == CandidatesViewManager.VIEW_TYPE_NORMAL) {
+            mViewCandidateList.setMinimumHeight(mCandidateMinimumHeight);
+        } else {
+            mViewCandidateList.setMinimumHeight(-1);
+            mHandler.removeMessages(MSG_SET_CANDIDATES);
+
+            if (mViewBody.isShown()) {
+                mWnn.setCandidatesViewShown(false);
+            }
+        }
+    }
+
+    /** @see CandidatesViewManager#getViewType */
+    public int getViewType() {
+        return mViewType;
+    }
+
+    /** @see CandidatesViewManager#displayCandidates */
+    public void displayCandidates(WnnEngine converter) {
+
+        mHandler.removeMessages(MSG_SET_CANDIDATES);
+
+        closeDialog();
+        clearCandidates();
+        mConverter = converter;
+
+        int isNextCandidate = IS_NEXTCANDIDATE_NORMAL;
+        while(isNextCandidate == IS_NEXTCANDIDATE_NORMAL) {
+            isNextCandidate = displayCandidatesNormal(converter);
+        }
+
+        if (isNextCandidate == IS_NEXTCANDIDATE_DELAY) {
+            isNextCandidate = displayCandidatesDelay(converter);
+        }
+
+        mViewBodyScroll.scrollTo(0,0);
+    }
+
+
+    /**
+     * Display the candidates.
+     * @param converter  {@link WnnEngine} which holds candidates.
+     */
+    private int displayCandidatesNormal(WnnEngine converter) {
+        int isNextCandidate = IS_NEXTCANDIDATE_NORMAL;
+
+        if (converter == null) {
+            return IS_NEXTCANDIDATE_END;
+        }
+
+        /* Get candidates */
+        WnnWord result = converter.getNextCandidate();
+        if (result == null) {
+            return IS_NEXTCANDIDATE_END;
+        }
+
+        mLineLength += setCandidate(result);
+        if (mLineLength >= mViewWidth) {
+            isNextCandidate = IS_NEXTCANDIDATE_DELAY;
+        }
+
+        if (mWordCount < 1) { /* no candidates */
+            if (mAutoHideMode) {
+                mWnn.setCandidatesViewShown(false);
+                return IS_NEXTCANDIDATE_END;
+            }
+        }
+
+        if (mWordCount > mDisplayLimit) {
+            return IS_NEXTCANDIDATE_END;
+        }
+
+        if (!(mViewBody.isShown())) {
+            mWnn.setCandidatesViewShown(true);
+        }
+        return isNextCandidate;
+    }
+
+    /**
+     * Display the candidates.
+     * @param converter  {@link WnnEngine} which holds candidates.
+     */
+    private int displayCandidatesDelay(WnnEngine converter) {
+        int isNextCandidate = IS_NEXTCANDIDATE_DELAY;
+
+        if (converter == null) {
+            return IS_NEXTCANDIDATE_END;
+        }
+
+        /* Get candidates */
+        WnnWord result = converter.getNextCandidate();
+        if (result == null) {
+            return IS_NEXTCANDIDATE_END;
+        }
+
+        setCandidate(result);
+
+        if (mWordCount > mDisplayLimit) {
+            return IS_NEXTCANDIDATE_END;
+        }
+
+        mHandler.sendEmptyMessageDelayed(MSG_SET_CANDIDATES, SET_CANDIDATE_DELAY);
+
+        return isNextCandidate;
+    }
+
+    /**
+     * Set the candidate for candidate view
+     * @param word set word
+     * @return int Set width
+     */
+    private int setCandidate(WnnWord word) {
+        CandidateTextView candidateTextView =
+                (CandidateTextView) mViewCandidateList.getChildAt(mWordCount);
+        candidateTextView.setCandidateTextView(word, mWordCount, mCandidateOnClick,
+                                                    mCandidateOnLongClick);
+        mWnnWordArray.add(mWordCount, word);
+        mWordCount++;
+        mTextViewArray.add(candidateTextView);
+
+        return candidateTextView.getWidth();
+    }
+
+    /**
+     * Clear the candidate view
+     */
+    private void clearNormalViewCandidate() {
+        int candidateNum = mViewCandidateList.getChildCount();
+        for (int i = 0; i < candidateNum; i++) {
+            View v = mViewCandidateList.getChildAt(i);
+            v.setVisibility(View.GONE);
+        }
+    }
+
+    /** @see CandidatesViewManager#clearCandidates */
+    public void clearCandidates() {
+        clearFocusCandidate();
+        clearNormalViewCandidate();
+
+        mLineLength = 0;
+
+        mWordCount = 0;
+        mWnnWordArray.clear();
+        mTextViewArray.clear();
+
+        if (mAutoHideMode && mViewBody.isShown()) {
+            mWnn.setCandidatesViewShown(false);
+        }
+    }
+
+    /** @see CandidatesViewManager#setPreferences */
+    public void setPreferences(SharedPreferences pref) {
+        try {
+            if (pref.getBoolean("key_vibration", false)) {
+                mVibrator = (Vibrator)mWnn.getSystemService(Context.VIBRATOR_SERVICE);
+            } else {
+                mVibrator = null;
+            }
+            if (pref.getBoolean("key_sound", false)) {
+                mSound = (AudioManager)mWnn.getSystemService(Context.AUDIO_SERVICE);
+            } else {
+                mSound = null;
+            }
+        } catch (Exception ex) {
+            Log.d("OpenWnn", "NO VIBRATOR");
+        }
+    }
+
+    /**
+     * Select a candidate.
+     * <br>
+     * This method notices the selected word to {@link OpenWnn}.
+     *
+     * @param word  The selected word
+     */
+    private void selectCandidate(WnnWord word) {
+        mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.SELECT_CANDIDATE, word));
+    }
+
+    private void playSoundAndVibration() {
+        if (mVibrator != null) {
+            try {
+                mVibrator.vibrate(5);
+            } catch (Exception ex) {
+                Log.e("OpenWnn", "TextCandidates1LineViewManager::selectCandidate Vibrator " + ex.toString());
+            }
+        }
+        if (mSound != null) {
+            try {
+                mSound.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD, 1.0f);
+            } catch (Exception ex) {
+                Log.e("OpenWnn", "TextCandidates1LineViewManager::selectCandidate Sound " + ex.toString());
+            }
+        }
+    }
+
+    /**
+     * KeyEvent action for the candidate view.
+     *
+     * @param key    Key event
+     */
+    public void processMoveKeyEvent(int key) {
+        if (!mViewBody.isShown()) {
+            return;
+        }
+
+        switch (key) {
+        case KeyEvent.KEYCODE_DPAD_LEFT:
+            moveFocus(-1);
+            break;
+
+        case KeyEvent.KEYCODE_DPAD_RIGHT:
+            moveFocus(1);
+            break;
+
+        case KeyEvent.KEYCODE_DPAD_UP:
+            moveFocus(-1);
+            break;
+
+        case KeyEvent.KEYCODE_DPAD_DOWN:
+            moveFocus(1);
+            break;
+
+        default:
+            break;
+
+        }
+    }
+
+    /**
+     * Get a flag candidate is focused now.
+     *
+     * @return the Candidate is focused of a flag.
+     */
+    public boolean isFocusCandidate(){
+        if (mCurrentFocusIndex != FOCUS_NONE) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Give focus to View of candidate.
+     */
+    private void setViewStatusOfFocusedCandidate() {
+        View view = mFocusedView;
+        if (view != null) {
+            view.setBackgroundDrawable(mFocusedViewBackground);
+        }
+
+        TextView v = getFocusedView();
+        mFocusedView = v;
+        if (v != null) {
+            mFocusedViewBackground = v.getBackground();
+            v.setBackgroundResource(R.drawable.cand_back_focuse);
+
+            int viewBodyLeft = getViewLeftOnScreen(mViewBodyScroll);
+            int viewBodyRight = viewBodyLeft + mViewBodyScroll.getWidth();
+            int focusedViewLeft = getViewLeftOnScreen(v);
+            int focusedViewRight = focusedViewLeft + v.getWidth();
+
+            if (focusedViewRight > viewBodyRight) {
+                mViewBodyScroll.scrollBy((focusedViewRight - viewBodyRight), 0);
+            } else if (focusedViewLeft < viewBodyLeft) {
+                mViewBodyScroll.scrollBy((focusedViewLeft - viewBodyLeft), 0);
+            }
+        }
+    }
+
+    /**
+     * Clear focus to selected candidate.
+     */
+    private void clearFocusCandidate(){
+        View view = mFocusedView;
+        if (view != null) {
+            view.setBackgroundDrawable(mFocusedViewBackground);
+            mFocusedView = null;
+        }
+
+        mCurrentFocusIndex = FOCUS_NONE;
+
+        mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.FOCUS_CANDIDATE_END));
+    }
+
+    /**
+     * Select candidate that has focus.
+     */
+    public void selectFocusCandidate(){
+        if (mCurrentFocusIndex != FOCUS_NONE) {
+            selectCandidate(getFocusedWnnWord());
+        }
+    }
+
+    /**
+     * Get View of focus candidate.
+     */
+    private TextView getFocusedView() {
+        if (mCurrentFocusIndex == FOCUS_NONE) {
+            return null;
+        }
+        return mTextViewArray.get(mCurrentFocusIndex);
+    }
+
+    /**
+     * Move the focus to next candidate.
+     *
+     * @param direction  The direction of increment or decrement.
+     */
+    private void moveFocus(int direction) {
+        boolean isStart = (mCurrentFocusIndex == FOCUS_NONE);
+        int size = mTextViewArray.size();
+        int index = isStart ? 0 : (mCurrentFocusIndex + direction);
+
+        if (index < 0) {
+            index = size - 1;
+        } else {
+            if (index >= size) {
+                index = 0;
+            }
+        }
+
+        mCurrentFocusIndex = index;
+        setViewStatusOfFocusedCandidate();
+
+        if (isStart) {
+            mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.FOCUS_CANDIDATE_START));
+        }
+    }
+
+    /**
+     * Get view top position on screen.
+     *
+     * @param view target view.
+     * @return int view top position on screen
+     */
+    private int getViewLeftOnScreen(View view) {
+        int[] location = new int[2];
+        view.getLocationOnScreen(location);
+        return location[0];
+    }
+
+    /** @see CandidatesViewManager#getFocusedWnnWord */
+    public WnnWord getFocusedWnnWord() {
+        return getWnnWord(mCurrentFocusIndex);
+    }
+
+    /**
+     * Get WnnWord.
+     *
+     * @return WnnWord word
+     */
+    public WnnWord getWnnWord(int index) {
+        return mWnnWordArray.get(index);
+    }
+
+    /** @see CandidatesViewManager#setCandidateMsgRemove */
+    public void setCandidateMsgRemove() {
+        mHandler.removeMessages(MSG_SET_CANDIDATES);
+    }
+}
diff --git a/src/jp/co/omronsoft/openwnn/TextCandidatesViewManager.java b/src/jp/co/omronsoft/openwnn/TextCandidatesViewManager.java
index c84e845..81df56e 100644
--- a/src/jp/co/omronsoft/openwnn/TextCandidatesViewManager.java
+++ b/src/jp/co/omronsoft/openwnn/TextCandidatesViewManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,13 +16,20 @@
 
 package jp.co.omronsoft.openwnn;
 
+import java.nio.channels.Selector;
 import java.util.ArrayList;
+import java.util.LinkedList;
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.content.res.Configuration;
 import android.content.res.Resources;
-import android.media.MediaPlayer;
+import android.content.res.Configuration;
+import android.graphics.drawable.Drawable;
+import android.graphics.Rect;
+import android.media.AudioManager;
+import android.os.Handler;
+import android.os.Message;
 import android.os.Vibrator;
+import android.preference.PreferenceManager;
 import android.text.TextUtils;
 import android.text.TextPaint;
 import android.text.SpannableString;
@@ -31,13 +38,14 @@
 import android.text.style.DynamicDrawableSpan;
 import android.util.Log;
 import android.util.DisplayMetrics;
+import android.util.TypedValue;
 import android.view.Gravity;
+import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.View.OnClickListener;
 import android.view.View.OnLongClickListener;
-import android.view.View.OnTouchListener;
 import android.view.GestureDetector;
 import android.view.LayoutInflater;
 import android.widget.Button;
@@ -47,16 +55,13 @@
 import android.widget.EditText;
 import android.widget.AbsoluteLayout;
 import android.widget.ImageView;
-import android.graphics.drawable.Drawable;
 
 /**
  * The default candidates view manager class using {@link EditText}.
  *
- * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
+ * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
  */
-public class TextCandidatesViewManager implements CandidatesViewManager, GestureDetector.OnGestureListener {
-    /** Height of a line */
-    public static final int LINE_HEIGHT = 34;
+public class TextCandidatesViewManager extends CandidatesViewManager implements GestureDetector.OnGestureListener {
     /** Number of lines to display (Portrait) */
     public static final int LINE_NUM_PORTRAIT       = 2;
     /** Number of lines to display (Landscape) */
@@ -64,29 +69,50 @@
 
     /** Maximum lines */
     private static final int DISPLAY_LINE_MAX_COUNT = 1000;
-    /** Width of the view */
-    private static final int CANDIDATE_MINIMUM_WIDTH = 48;
-    /** Height of the view */
-    private static final int CANDIDATE_MINIMUM_HEIGHT = 35;
-    /** Align the candidate left if the width of the string exceeds this threshold */
-    private static final int CANDIDATE_LEFT_ALIGN_THRESHOLD = 120;
     /** Maximum number of displaying candidates par one line (full view mode) */
     private static final int FULL_VIEW_DIV = 4;
+    /** Maximum number of displaying candidates par one line (full view mode)(symbol)(portrait) */
+    private static final int FULL_VIEW_SYMBOL_DIV_PORT = 6;
+    /** Maximum number of displaying candidates par one line (full view mode)(symbol)(landscape) */
+    private static final int FULL_VIEW_SYMBOL_DIV_LAND = 10;
+    /** Delay of set candidate */
+    private static final int SET_CANDIDATE_DELAY = 50;
+    /** First line count */
+    private static final int SET_CANDIDATE_FIRST_LINE_COUNT = 7;
+    /** Delay line count */
+    private static final int SET_CANDIDATE_DELAY_LINE_COUNT = 1;
+
+    /** Focus is none now */
+    private static final int FOCUS_NONE = -1;
+    /** Handler for focus Candidate */
+    private static final int MSG_MOVE_FOCUS = 0;
+    /** Handler for set  Candidate */
+    private static final int MSG_SET_CANDIDATES = 1;
+    /** Handler for select Candidate */
+    private static final int MSG_SELECT_CANDIDATES = 2;
+
+    /** NUmber of Candidate display lines */
+    private static final int SETTING_NUMBER_OF_LINEMAX = 5;
 
     /** Body view of the candidates list */
-    private ViewGroup  mViewBody;
+    private ViewGroup  mViewBody = null;
+
+    /** The view of the Symbol Tab */
+    private TextView mViewTabSymbol;
+    /** The view of the Emoticon Tab */
+    private TextView mViewTabEmoticon;
     /** Scroller of {@code mViewBodyText} */
     private ScrollView mViewBodyScroll;
     /** Base of {@code mViewCandidateList1st}, {@code mViewCandidateList2nd} */
     private ViewGroup mViewCandidateBase;
     /** Button displayed bottom of the view when there are more candidates. */
     private ImageView mReadMoreButton;
-    /** The view of the scaling up candidate */
-    private View mViewScaleUp;
     /** Layout for the candidates list on normal view */
     private LinearLayout mViewCandidateList1st;
     /** Layout for the candidates list on full view */
     private AbsoluteLayout mViewCandidateList2nd;
+    /** View for symbol tab */
+    private LinearLayout mViewCandidateListTab;
     /** {@link OpenWnn} instance using this manager */
     private OpenWnn mWnn;
     /** View type (VIEW_TYPE_NORMAL or VIEW_TYPE_FULL or VIEW_TYPE_CLOSE) */
@@ -96,42 +122,53 @@
 
     /** Width of the view */
     private int mViewWidth;
-    /** Height of the view */
-    private int mViewHeight;
     /** Minimum width of a candidate (density support) */
     private int mCandidateMinimumWidth;
     /** Maximum width of a candidate (density support) */
     private int mCandidateMinimumHeight;
+    /** Minimum height of the category candidate view */
+    private int mCandidateCategoryMinimumHeight;
+    /** Left align threshold of the candidate view */
+    private int mCandidateLeftAlignThreshold;
+    /** Height of keyboard */
+    private int mKeyboardHeight;
+    /** Height of symbol keyboard */
+    private int mSymbolKeyboardHeight;
+    /** Height of symbol keyboard tab */
+    private int mSymbolKeyboardTabHeight;
+    /** Whether being able to use Emoticon */
+    private boolean mEnableEmoticon = false;
 
-    /** Whether hide the view if there is no candidates */
-    private boolean mAutoHideMode;
-    /** The converter to be get candidates from and notice the selected candidate to. */
+    /** Whether hide the view if there is no candidate */
+    private boolean mAutoHideMode = true;
+    /** The converter to get candidates from and notice the selected candidate to. */
     private WnnEngine mConverter;
     /** Limitation of displaying candidates */
     private int mDisplayLimit;
 
     /** Vibrator for touch vibration */
     private Vibrator mVibrator = null;
-    /** MediaPlayer for click sound */
-    private MediaPlayer mSound = null;
+    /** AudioManager for click sound */
+    private AudioManager mSound = null;
 
-    /** Number of candidates displaying */
-    private int mWordCount;
-    /** List of candidates */
-    private ArrayList<WnnWord> mWnnWordArray;
+    /** Number of candidates displaying for 1st */
+    private int mWordCount1st;
+    /** Number of candidates displaying for 2nd */
+    private int mWordCount2nd;
+    /** List of candidates for 1st */
+    private ArrayList<WnnWord> mWnnWordArray1st = new ArrayList<WnnWord>();
+    /** List of candidates for 2nd */
+    private ArrayList<WnnWord> mWnnWordArray2nd = new ArrayList<WnnWord>();
+    /** List of select candidates */
+    private LinkedList<WnnWord> mWnnWordSelectedList = new LinkedList<WnnWord>();
 
     /** Gesture detector */
     private GestureDetector mGestureDetector;
-    /** The word pressed */
-    private WnnWord mWord;
     /** Character width of the candidate area */
     private int mLineLength = 0;
     /** Number of lines displayed */
     private int mLineCount = 1;
 
-    /** {@code true} if the candidate delete state is selected */
-    private boolean mIsScaleUp = false;
-
     /** {@code true} if the full screen mode is selected */
     private boolean mIsFullView = false;
 
@@ -142,8 +179,6 @@
     private int mDisplayEndOffset = 0;
     /** {@code true} if there are more candidates to display. */
     private boolean mCanReadMore = false;
-    /** Width of {@code mReadMoreButton} */
-    private int mReadMoreButtonWidth = 0;
     /** Color of the candidates */
     private int mTextColor = 0;
     /** Template object for each candidate and normal/full view change button */
@@ -158,79 +193,150 @@
     private int mFullViewPrevLineTopId;
     /** Layout of the previous candidate (in full view) */
     private ViewGroup.LayoutParams mFullViewPrevParams;
-    /** Whether all candidates is displayed */
+    /** Whether all candidates are displayed */
     private boolean mCreateCandidateDone;
     /** Number of lines in normal view */
     private int mNormalViewWordCountOfLine;
-    /** general infomation about a display */
-    private final DisplayMetrics mMetrics = new DisplayMetrics();
 
-    /** Event listener for touching a candidate */
-    private OnTouchListener mCandidateOnTouch = new OnTouchListener() {
-            public boolean onTouch(View v, MotionEvent event) {
-                if (mMotionEvent != null) {
-                    return true;
-                }
+    /** List of textView for CandiData List 1st for Symbol mode */
+    private ArrayList<TextView> mTextViewArray1st = new ArrayList<TextView>();
+    /** List of textView for CandiData List 2st for Symbol mode */
+    private ArrayList<TextView> mTextViewArray2nd = new ArrayList<TextView>();
+    /** Now focus textView index */
+    private int mCurrentFocusIndex = FOCUS_NONE;
+    /** Focused View */
+    private View mFocusedView = null;
+    /** Focused View Background */
+    private Drawable mFocusedViewBackground = null;
+    /** Axis to find next TextView for Up/Down */
+    private int mFocusAxisX = 0;
+    /** Now focused TextView in mTextViewArray1st */
+    private boolean mHasFocusedArray1st = true;
 
-                if ((event.getAction() == MotionEvent.ACTION_UP)
-                    && (v instanceof TextView)) {
-                    Drawable d = v.getBackground();
-                    if (d != null) {
-                        d.setState(new int[] {});
+    /** Portrait Number of Lines from Preference */
+    private int mPortraitNumberOfLine = LINE_NUM_PORTRAIT;
+    /** Landscape Number of Lines from Preference */
+    private int mLandscapeNumberOfLine = LINE_NUM_LANDSCAPE;
+
+    /** Coordinates of line */
+    private int mLineY = 0;
+
+    /** {@code true} if the candidate is selected */
+    private boolean mIsSymbolSelected = false;
+
+    /** Whether candidates is symbol */
+    private boolean mIsSymbolMode = false;
+
+    /** Symbol mode */
+    private int mSymbolMode = OpenWnnJAJP.ENGINE_MODE_SYMBOL;
+
+    /** Text size of candidates */
+    private float mCandNormalTextSize;
+
+    /** Text size of category */
+    private float mCandCategoryTextSize;
+
+    /** HardKeyboard hidden({@code true}) or disp({@code false}) */
+    private boolean mHardKeyboardHidden = true;
+
+    /** Minimum height of the candidate 1line view */
+    private int mCandidateOneLineMinimumHeight;
+
+    /** Whether candidates long click enable */
+    private boolean mEnableCandidateLongClick = true;
+
+    /** Keyboard vertical gap value */
+    private static final float KEYBOARD_VERTICAL_GAP = 0.009f;
+
+    /** Keyboard vertical gap count */
+    private static final int KEYBOARD_VERTICAL_GAP_COUNT = 3;
+
+    /** {@code Handler} Handler for focus Candidate wait delay */
+    private Handler mHandler = new Handler() {
+            @Override public void handleMessage(Message msg) {
+                switch (msg.what) {
+                case MSG_MOVE_FOCUS:
+                    moveFocus(msg.arg1, msg.arg2 == 1);
+                    break;
+
+                case MSG_SET_CANDIDATES:
+                    if (mViewType == CandidatesViewManager.VIEW_TYPE_FULL && mIsSymbolMode) {
+                        displayCandidates(mConverter, false, SET_CANDIDATE_DELAY_LINE_COUNT);
                     }
-                }
+                    break;
 
-                mMotionEvent = event;
-                boolean ret = mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_TOUCH));
-                mMotionEvent = null;
-                return ret;
-            }
-        };
-    
-    
-    /** Event listener for clicking a candidate */
-    private OnClickListener mCandidateOnClick = new OnClickListener() {
-            public void onClick(View v) {
-                if (!v.isShown()) {
-                    return;
-                }
-                
-                if (v instanceof TextView) {
-                    TextView text = (TextView)v;
-                    int wordcount = text.getId();
+                case MSG_SELECT_CANDIDATES:
                     WnnWord word = null;
-                    word = mWnnWordArray.get(wordcount);
-                    selectCandidate(word);
-                }
-            }
-        };
-
-    /** Event listener for long-clicking a candidate */
-    private OnLongClickListener mCandidateOnLongClick = new OnLongClickListener() {
-            public boolean onLongClick(View v) {
-                if (mViewScaleUp == null) {
-                    return false;
-                }
-
-                if (!v.isShown()) {
-                    return true;
-                }
-
-                Drawable d = v.getBackground();
-                if (d != null) {
-                    if(d.getState().length == 0){
-                        return true;
+                    while ((word = mWnnWordSelectedList.poll()) != null) {
+                        selectCandidate(word);
                     }
+                    break;
+
+                default:
+                    break;
                 }
-            
-                int wordcount = ((TextView)v).getId();
-                mWord = mWnnWordArray.get(wordcount);
-                setViewScaleUp(true, mWord);
-            
-                return true;
             }
         };
 
+    /** Event listener for touching a candidate for 1st */
+    private OnClickListener mCandidateOnClick1st = new OnClickListener() {
+        public void onClick(View v) {
+            onClickCandidate(v, mWnnWordArray1st);
+        }
+    };
+
+    /** Event listener for touching a candidate for 2nd */
+    private OnClickListener mCandidateOnClick2nd = new OnClickListener() {
+        public void onClick(View v) {
+            onClickCandidate(v, mWnnWordArray2nd);
+        }
+    };
+
+    /** Event listener for long-clicking a candidate for 1st */
+    private OnLongClickListener mCandidateOnLongClick1st = new OnLongClickListener() {
+        public boolean onLongClick(View v) {
+            return onLongClickCandidate(v, mWnnWordArray1st);
+        }
+    };
+
+    /** Event listener for long-clicking a candidate for for 2nd */
+    private OnLongClickListener mCandidateOnLongClick2nd = new OnLongClickListener() {
+        public boolean onLongClick(View v) {
+            return onLongClickCandidate(v, mWnnWordArray2nd);
+        }
+    };
+
+    /** Event listener for click a symbol tab */
+    private OnClickListener mTabOnClick = new OnClickListener() {
+        public void onClick(View v) {
+            if (!v.isShown()) {
+                return;
+            }
+            playSoundAndVibration();
+
+            if (v instanceof TextView) {
+                TextView text = (TextView)v;
+                switch (text.getId()) {
+                case R.id.candview_symbol:
+                    if (mSymbolMode != OpenWnnJAJP.ENGINE_MODE_SYMBOL) {
+                        mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE,
+                                                      OpenWnnJAJP.ENGINE_MODE_SYMBOL));
+                    }
+                    break;
+
+                case R.id.candview_emoticon:
+                    if (mSymbolMode != OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI) {
+                        mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE,
+                                OpenWnnJAJP.ENGINE_MODE_SYMBOL));
+                    }
+                    break;
+
+                default:
+                    break;
+                }
+            }
+        }
+    };
 
     /**
      * Constructor
@@ -245,10 +351,69 @@
      * @param displayLimit      The limit of display
      */
     public TextCandidatesViewManager(int displayLimit) {
-        this.mDisplayLimit = displayLimit;
-        this.mWnnWordArray = new ArrayList<WnnWord>();
-        this.mAutoHideMode = true;
-        mMetrics.setToDefaults();
+        mDisplayLimit = displayLimit;
+    }
+
+    /**
+     * Handle a click event on the candidate.
+     * @param v  View
+     * @param list  List of candidates
+     */
+    private void onClickCandidate(View v, ArrayList<WnnWord> list) {
+        if (!v.isShown()) {
+            return;
+        }
+        playSoundAndVibration();
+
+        if (v instanceof TextView) {
+            TextView text = (TextView)v;
+            int wordcount = text.getId();
+            WnnWord word = list.get(wordcount);
+            
+            if (mHandler.hasMessages(MSG_SET_CANDIDATES)) {
+                mWnnWordSelectedList.add(word);
+                return;
+            }
+            clearFocusCandidate();
+            selectCandidate(word);
+        }
+    }
+
+    /**
+     * Handle a long click event on the candidate.
+     * @param v  View
+     * @param list  List of candidates
+     */
+    public boolean onLongClickCandidate(View v, ArrayList<WnnWord> list) {
+        if (mViewLongPressDialog == null) {
+            return false;
+        }
+
+        if (mIsSymbolMode) {
+            return false;
+        }
+
+        if (!mEnableCandidateLongClick) {
+            return false;
+        }
+
+        if (!v.isShown()) {
+            return true;
+        }
+
+        Drawable d = v.getBackground();
+        if (d != null) {
+            if(d.getState().length == 0){
+                return true;
+            }
+        }
+
+        int wordcount = ((TextView)v).getId();
+        mWord = list.get(wordcount);
+        clearFocusCandidate();
+        displayDialog(v, mWord);
+
+        return true;
     }
 
     /**
@@ -260,54 +425,75 @@
         mAutoHideMode = hide;
     }
 
-    /** @see CandidatesViewManager */
+    /** @see CandidatesViewManager#initView */
     public View initView(OpenWnn parent, int width, int height) {
         mWnn = parent;
         mViewWidth = width;
-        mViewHeight = height;
-        mCandidateMinimumWidth = (int)(CANDIDATE_MINIMUM_WIDTH * mMetrics.density);
-        mCandidateMinimumHeight = (int)(CANDIDATE_MINIMUM_HEIGHT * mMetrics.density);
-        mPortrait = 
-            (parent.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE);
-
         Resources r = mWnn.getResources();
+        mCandidateMinimumWidth = r.getDimensionPixelSize(R.dimen.cand_minimum_width);
+        mCandidateMinimumHeight = r.getDimensionPixelSize(R.dimen.cand_minimum_height);
+        if (OpenWnn.isXLarge()) {
+            mCandidateOneLineMinimumHeight = r.getDimensionPixelSize(R.dimen.candidate_layout_height);
+        }
+        mCandidateCategoryMinimumHeight = r.getDimensionPixelSize(R.dimen.cand_category_minimum_height);
+        mCandidateLeftAlignThreshold = r.getDimensionPixelSize(R.dimen.cand_left_align_threshold);
+        mKeyboardHeight = r.getDimensionPixelSize(R.dimen.keyboard_height);
+        if (OpenWnn.isXLarge()) {
+            mKeyboardHeight += Math.round(height * KEYBOARD_VERTICAL_GAP)
+                                * KEYBOARD_VERTICAL_GAP_COUNT;
+        }
+        mSymbolKeyboardHeight = r.getDimensionPixelSize(R.dimen.symbol_keyboard_height);
+        Drawable d = r.getDrawable(R.drawable.tab_no_select);
+        mSymbolKeyboardTabHeight = d.getMinimumHeight();
+
+        mPortrait =
+            (r.getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE);
+
+        mCandNormalTextSize = r.getDimensionPixelSize(R.dimen.cand_normal_text_size);
+        mCandCategoryTextSize = r.getDimensionPixelSize(R.dimen.cand_category_text_size);
 
         LayoutInflater inflater = parent.getLayoutInflater();
         mViewBody = (ViewGroup)inflater.inflate(R.layout.candidates, null);
 
+        mViewTabSymbol = (TextView)mViewBody.findViewById(R.id.candview_symbol);
+        mViewTabEmoticon = (TextView)mViewBody.findViewById(R.id.candview_emoticon);
+
         mViewBodyScroll = (ScrollView)mViewBody.findViewById(R.id.candview_scroll);
-        mViewBodyScroll.setOnTouchListener(mCandidateOnTouch);
 
         mViewCandidateBase = (ViewGroup)mViewBody.findViewById(R.id.candview_base);
 
+        setNumeberOfDisplayLines();
         createNormalCandidateView();
         mViewCandidateList2nd = (AbsoluteLayout)mViewBody.findViewById(R.id.candidates_2nd_view);
 
-        mReadMoreButtonWidth = r.getDrawable(R.drawable.cand_up).getMinimumWidth();
-
         mTextColor = r.getColor(R.color.candidate_text);
-        
-        mReadMoreButton = (ImageView)mViewBody.findViewById(R.id.read_more_text);
+
+        mReadMoreButton = (ImageView)mViewBody.findViewById(R.id.read_more_button);
         mReadMoreButton.setOnTouchListener(new View.OnTouchListener() {
                 public boolean onTouch(View v, MotionEvent event) {
+                    int resid = 0;
                     switch (event.getAction()) {
                     case MotionEvent.ACTION_DOWN:
                         if (mIsFullView) {
-                            mReadMoreButton.setImageResource(R.drawable.cand_down_press);
+                            resid = R.drawable.cand_up_press;
                         } else {
-                            mReadMoreButton.setImageResource(R.drawable.cand_up_press);
+                            resid = R.drawable.cand_down_press;
                         }
-                	    break;
+                        break;
                     case MotionEvent.ACTION_UP:
                         if (mIsFullView) {
-                            mReadMoreButton.setImageResource(R.drawable.cand_down);
+                            resid = R.drawable.cand_up;
                         } else {
-                            mReadMoreButton.setImageResource(R.drawable.cand_up);
+                            resid = R.drawable.cand_down;
                         }
                         break;
                     default:
                         break;
                     }
+
+                    if (resid != 0) {
+                        mReadMoreButton.setImageResource(resid);
+                    }
                     return false;
                 }
             });
@@ -316,6 +502,7 @@
                     if (!v.isShown()) {
                         return;
                     }
+                    playSoundAndVibration();
 
                     if (mIsFullView) {
                         mIsFullView = false;
@@ -331,23 +518,27 @@
 
         mGestureDetector = new GestureDetector(this);
 
-        View scaleUp = (View)inflater.inflate(R.layout.candidate_scale_up, null);
-        mViewScaleUp = scaleUp;
+        mViewLongPressDialog = (View)inflater.inflate(R.layout.candidate_longpress_dialog, null);
 
         /* select button */
-        Button b = (Button)scaleUp.findViewById(R.id.candidate_select);
-        b.setOnClickListener(new View.OnClickListener() {
+        Button longPressDialogButton = (Button)mViewLongPressDialog.findViewById(R.id.candidate_longpress_dialog_select);
+        longPressDialogButton.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
+                    playSoundAndVibration();
+                    clearFocusCandidate();
                     selectCandidate(mWord);
+                    closeDialog();
                 }
             });
 
         /* cancel button */
-        b = (Button)scaleUp.findViewById(R.id.candidate_cancel);
-        b.setOnClickListener(new View.OnClickListener() {
+        longPressDialogButton = (Button)mViewLongPressDialog.findViewById(R.id.candidate_longpress_dialog_cancel);
+        longPressDialogButton.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
-                    setViewLayout(CandidatesViewManager.VIEW_TYPE_NORMAL);
+                    playSoundAndVibration();
+                    mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL));
                     mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.UPDATE_CANDIDATE));
+                    closeDialog();
                 }
             });
 
@@ -359,15 +550,20 @@
      */
     private void createNormalCandidateView() {
         mViewCandidateList1st = (LinearLayout)mViewBody.findViewById(R.id.candidates_1st_view);
-        mViewCandidateList1st.setOnTouchListener(mCandidateOnTouch);
-        mViewCandidateList1st.setOnClickListener(mCandidateOnClick);
+        mViewCandidateList1st.setOnClickListener(mCandidateOnClick1st);
 
-        int line = getMaxLine();
+        mViewCandidateListTab = (LinearLayout)mViewBody.findViewById(R.id.candview_tab);
+        TextView tSymbol = mViewTabSymbol;
+        tSymbol.setOnClickListener(mTabOnClick);
+        TextView tEmoticon = mViewTabEmoticon;
+        tEmoticon.setOnClickListener(mTabOnClick);
+
+        int line = SETTING_NUMBER_OF_LINEMAX;
         int width = mViewWidth;
         for (int i = 0; i < line; i++) {
             LinearLayout lineView = new LinearLayout(mViewBodyScroll.getContext());
             lineView.setOrientation(LinearLayout.HORIZONTAL);
-            LinearLayout.LayoutParams layoutParams = 
+            LinearLayout.LayoutParams layoutParams =
                 new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                                               ViewGroup.LayoutParams.WRAP_CONTENT);
             lineView.setLayoutParams(layoutParams);
@@ -402,7 +598,7 @@
 
         if (readMore) {
             displayCandidates(this.mConverter, false, -1);
-        } else { 
+        } else {
             if (type == CandidatesViewManager.VIEW_TYPE_NORMAL) {
                 mIsFullView = false;
                 if (mDisplayEndOffset > 0) {
@@ -426,27 +622,51 @@
      * @return          {@code true} if display is updated; {@code false} if otherwise
      */
     private boolean setViewLayout(int type) {
+        
+        ViewGroup.LayoutParams params;
+        int line = (mPortrait) ? mPortraitNumberOfLine : mLandscapeNumberOfLine;
+
+        if ((mViewType == CandidatesViewManager.VIEW_TYPE_FULL)
+                && (type == CandidatesViewManager.VIEW_TYPE_NORMAL)) {
+            clearFocusCandidate();
+        }
+
         mViewType = type;
-        setViewScaleUp(false, null);
 
         switch (type) {
         case CandidatesViewManager.VIEW_TYPE_CLOSE:
+            params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
+                                                   getCandidateMinimumHeight() * line);
+            mViewBodyScroll.setLayoutParams(params);
+            mViewCandidateListTab.setVisibility(View.GONE);
             mViewCandidateBase.setMinimumHeight(-1);
+            mHandler.removeMessages(MSG_SET_CANDIDATES);
             return false;
 
         case CandidatesViewManager.VIEW_TYPE_NORMAL:
+            params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
+                                                   getCandidateMinimumHeight() * line);
+            mViewBodyScroll.setLayoutParams(params);
             mViewBodyScroll.scrollTo(0, 0);
+            mViewCandidateListTab.setVisibility(View.GONE);
             mViewCandidateList1st.setVisibility(View.VISIBLE);
             mViewCandidateList2nd.setVisibility(View.GONE);
             mViewCandidateBase.setMinimumHeight(-1);
-            int line = (mPortrait) ? LINE_NUM_PORTRAIT : LINE_NUM_LANDSCAPE;
-            mViewCandidateList1st.setMinimumHeight(getCandidateMinimumHeight() * line);
             return false;
 
         case CandidatesViewManager.VIEW_TYPE_FULL:
         default:
+            params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
+                                                   getCandidateViewHeight());
+            mViewBodyScroll.setLayoutParams(params);
+            if (mIsSymbolMode) {
+                updateSymbolType();
+                mViewCandidateListTab.setVisibility(View.VISIBLE);
+            } else {
+                mViewCandidateListTab.setVisibility(View.GONE);
+            }
             mViewCandidateList2nd.setVisibility(View.VISIBLE);
-            mViewCandidateBase.setMinimumHeight(mViewHeight);
+            mViewCandidateBase.setMinimumHeight(-1);
             return true;
         }
     }
@@ -459,39 +679,94 @@
     /** @see CandidatesViewManager#displayCandidates */
     public void displayCandidates(WnnEngine converter) {
 
+        mHandler.removeMessages(MSG_SET_CANDIDATES);
+
+        if (mIsSymbolSelected) {
+            mIsSymbolSelected = false;
+            if (mSymbolMode == OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI) {
+                return;
+            }
+
+            int prevLineCount = mLineCount;
+            int prevWordCount1st = mWordCount1st;
+            clearNormalViewCandidate();
+            mWordCount1st = 0;
+            mLineCount = 1;
+            mLineLength = 0;
+            mNormalViewWordCountOfLine = 0;
+            mWnnWordArray1st.clear();
+            mTextViewArray1st.clear();
+            if (((prevWordCount1st == 0) && (mWordCount1st == 1)) ||
+                (prevLineCount < mLineCount)) {
+                mViewBodyScroll.scrollTo(0, mViewBodyScroll.getScrollY() + getCandidateMinimumHeight());
+            }
+            if (isFocusCandidate() && mHasFocusedArray1st) {
+                mCurrentFocusIndex = 0;
+                Message m = mHandler.obtainMessage(MSG_MOVE_FOCUS, 0, 0);
+                mHandler.sendMessage(m);
+            }
+            return;
+        }
+
         mCanReadMore = false;
         mDisplayEndOffset = 0;
         mIsFullView = false;
         mFullViewWordCount = 0;
         mFullViewOccupyCount = 0;
         mFullViewPrevLineTopId = 0;
+        mFullViewPrevView = null;
         mCreateCandidateDone = false;
         mNormalViewWordCountOfLine = 0;
 
         clearCandidates();
         mConverter = converter;
-        setViewLayout(CandidatesViewManager.VIEW_TYPE_NORMAL);
-        
+        mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL));
+
         mViewCandidateTemplate.setVisibility(View.VISIBLE);
         mViewCandidateTemplate.setBackgroundResource(R.drawable.cand_back);
 
         displayCandidates(converter, true, getMaxLine());
+
+        if (mIsSymbolMode) {
+            mIsFullView = true;
+            mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_FULL));
+        }
     }
 
     /** @see CandidatesViewManager#getMaxLine */
     private int getMaxLine() {
-        int maxLine = (mPortrait) ? LINE_NUM_PORTRAIT : LINE_NUM_LANDSCAPE;
+        int maxLine = (mPortrait) ? mPortraitNumberOfLine : mLandscapeNumberOfLine;
         return maxLine;
     }
 
     /**
+     * Get categories text.
+     * @param String Source string replacement
+     * @return String Categories text
+     */
+    private String getCategoriesText(String categoriesString) {
+        String ret = null;
+
+        Resources r = mWnn.getResources();
+        if(categoriesString.equals(r.getString(R.string.half_symbol_categories_txt))) {
+            ret = r.getString(R.string.half_symbol_txt);
+        } else if (categoriesString.equals(r.getString(R.string.full_symbol_categories_txt))) {
+            ret = r.getString(R.string.full_symbol_txt);
+        } else {
+            ret = new String("");
+        }
+
+        return ret;
+    }
+
+    /**
      * Display the candidates.
      * 
      * @param converter  {@link WnnEngine} which holds candidates.
      * @param dispFirst  Whether it is the first time displaying the candidates
      * @param maxLine    The maximum number of displaying lines
      */
-    synchronized private void displayCandidates(WnnEngine converter, boolean dispFirst, int maxLine) {
+    private void displayCandidates(WnnEngine converter, boolean dispFirst, int maxLine) {
         if (converter == null) {
             return;
         }
@@ -499,21 +774,69 @@
         /* Concatenate the candidates already got and the last one in dispFirst mode */
         int displayLimit = mDisplayLimit;
 
-        boolean isHistorySequence = false;
+        boolean isDelay = false;
         boolean isBreak = false;
 
+        if (converter instanceof SymbolList) {
+            if (!dispFirst) {
+                if (maxLine == -1) {
+                    isDelay = true;
+                    maxLine = mLineCount + SET_CANDIDATE_FIRST_LINE_COUNT;
+
+                    mHandler.sendEmptyMessageDelayed(MSG_SET_CANDIDATES, SET_CANDIDATE_DELAY);
+
+                } else if (maxLine == SET_CANDIDATE_DELAY_LINE_COUNT) {
+                    isDelay = true;
+                    maxLine = mLineCount + SET_CANDIDATE_DELAY_LINE_COUNT;
+
+                    mHandler.sendEmptyMessageDelayed(MSG_SET_CANDIDATES, SET_CANDIDATE_DELAY);
+                }
+            }
+            if (mSymbolMode != OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI) {
+                displayLimit = -1;
+            }
+        }
+
         /* Get candidates */
         WnnWord result = null;
-        while ((displayLimit == -1 || mWordCount < displayLimit)) {
-            result = converter.getNextCandidate();
+        String prevCandidate = null;
+        while ((displayLimit == -1 || getWordCount() < displayLimit)) {
+            for (int i = 0; i < DISPLAY_LINE_MAX_COUNT; i++) {
+                result = converter.getNextCandidate();
+                if (result == null) {
+                    break;
+                }
+
+                if (converter instanceof SymbolList) {
+                    break;
+                }
+
+                if ((prevCandidate == null) || !prevCandidate.equals(result.candidate)) {
+                    break;
+                }
+            }
 
             if (result == null) {
                 break;
+            } else {
+                prevCandidate = result.candidate;
+            }
+
+            if (converter instanceof SymbolList) {
+                if (isCategory(result)) {
+                    if (getWordCount() != 0) {
+                        createNextLine(false);
+                    }
+                    result.candidate = getCategoriesText(result.candidate);
+                    setCandidate(true, result);
+                    createNextLine(true);
+                    continue;
+                }
             }
 
             setCandidate(false, result);
 
-            if (dispFirst && (maxLine < mLineCount)) {
+            if ((dispFirst || isDelay) && (maxLine < mLineCount)) {
                 mCanReadMore = true;
                 isBreak = true;
                 break;
@@ -522,11 +845,13 @@
 
         if (!isBreak && !mCreateCandidateDone) {
             /* align left if necessary */
-            createNextLine();
+            createNextLine(false);
             mCreateCandidateDone = true;
+            mHandler.removeMessages(MSG_SET_CANDIDATES);
+            mHandler.sendMessage(mHandler.obtainMessage(MSG_SELECT_CANDIDATES));
         }
-        
-        if (mWordCount < 1) { /* no candidates */
+
+        if (getWordCount() < 1) { /* no candidates */
             if (mAutoHideMode) {
                 mWnn.setCandidatesViewShown(false);
                 return;
@@ -555,31 +880,51 @@
         TextView template = mViewCandidateTemplate;
         textLength += template.getPaddingLeft() + template.getPaddingRight();
         int maxWidth = mViewWidth;
-
+        boolean isEmojiSymbol = false;
+        if (mIsSymbolMode && (word.candidate.length() < 3)) {
+            isEmojiSymbol = true;
+        }
         TextView textView;
-        if (mIsFullView || getMaxLine() < mLineCount) {
+
+        boolean is2nd = isFirstListOver(mIsFullView, mLineCount, word);
+        if (is2nd) {
             /* Full view */
-            int indentWidth = mViewWidth / FULL_VIEW_DIV;
-            int occupyCount = Math.min((textLength + indentWidth) / indentWidth, FULL_VIEW_DIV);
+            int viewDivison = getCandidateViewDivison();
+            int indentWidth = mViewWidth / viewDivison;
+            int occupyCount = Math.min((textLength + indentWidth + getCandidateSpaceWidth(isEmojiSymbol)) / indentWidth, viewDivison);
             if (isCategory) {
-                occupyCount = FULL_VIEW_DIV;
+                occupyCount = viewDivison;
             }
 
-            if (FULL_VIEW_DIV < (mFullViewOccupyCount + occupyCount)) {
-                if (FULL_VIEW_DIV != mFullViewOccupyCount) {
-                    mFullViewPrevParams.width += (FULL_VIEW_DIV - mFullViewOccupyCount) * indentWidth;
-                    mViewCandidateList2nd.updateViewLayout(mFullViewPrevView, mFullViewPrevParams);
+            if (viewDivison < (mFullViewOccupyCount + occupyCount)) {
+                if (viewDivison != mFullViewOccupyCount) {
+                    mFullViewPrevParams.width += (viewDivison - mFullViewOccupyCount) * indentWidth;
+                    if (mFullViewPrevView != null) {
+                        mViewCandidateList2nd.updateViewLayout(mFullViewPrevView, mFullViewPrevParams);
+                    }
                 }
                 mFullViewOccupyCount = 0;
-                mFullViewPrevLineTopId = mFullViewPrevView.getId();
+                if (mFullViewPrevView != null) {
+                    mFullViewPrevLineTopId = mFullViewPrevView.getId();
+                }
                 mLineCount++;
+                if (isCategory) {
+                    mLineY += mCandidateCategoryMinimumHeight;
+                } else {
+                    mLineY += getCandidateMinimumHeight();
+                }
+            }
+            if (mFullViewWordCount == 0) {
+                mLineY = 0;
             }
 
             ViewGroup layout = mViewCandidateList2nd;
 
             int width = indentWidth * occupyCount;
             int height = getCandidateMinimumHeight();
-
+            if (isCategory) {
+                height = mCandidateCategoryMinimumHeight;
+            }
 
             ViewGroup.LayoutParams params = buildLayoutParams(mViewCandidateList2nd, width, height);
 
@@ -599,24 +944,32 @@
             mFullViewPrevParams = params;
 
         } else {
-            textLength = Math.max(textLength, getCandidateMinimumWidth());
+            int viewDivison = getCandidateViewDivison();
+            int indentWidth = mViewWidth / viewDivison;
+            textLength = Math.max(textLength, indentWidth);
 
             /* Normal view */
             int nextEnd = mLineLength + textLength;
-            if (mLineCount == 1) {
+            nextEnd += getCandidateSpaceWidth(isEmojiSymbol);
+
+            if (mLineCount == 1 && !mIsSymbolMode) {
                 maxWidth -= getCandidateMinimumWidth();
             }
 
-            if ((maxWidth < nextEnd) && (mWordCount != 0)) {
-                createNextLine();
+            if ((maxWidth < nextEnd) && (getWordCount() != 0)) {
+
+                createNextLineFor1st();
                 if (getMaxLine() < mLineCount) {
                     mLineLength = 0;
                     /* Call this method again to add the candidate in the full view */
-                    setCandidate(isCategory, word);
+                    if (!mIsSymbolSelected) {
+                        setCandidate(isCategory, word);
+                    }
                     return;
                 }
                 
                 mLineLength = textLength;
+                mLineLength += getCandidateSpaceWidth(isEmojiSymbol);
             } else {
                 mLineLength = nextEnd;
             }
@@ -628,28 +981,55 @@
                 if (mLineCount == 1) {
                     mViewCandidateTemplate.setBackgroundDrawable(null);
                 }
-                mLineLength += CANDIDATE_LEFT_ALIGN_THRESHOLD;
+                mLineLength += mCandidateLeftAlignThreshold;
+            } else {
+                int CompareLength = textLength;
+                CompareLength += getCandidateSpaceWidth(isEmojiSymbol);
             }
 
             mNormalViewWordCountOfLine++;
         }
 
         textView.setText(word.candidate);
-        textView.setTextColor(mTextColor);
-        textView.setId(mWordCount);
+        if (is2nd) {
+            textView.setId(mWordCount2nd);
+        } else {
+            textView.setId(mWordCount1st);
+        }
         textView.setVisibility(View.VISIBLE);
         textView.setPressed(false);
+        textView.setFocusable(false);
 
         if (isCategory) {
+            textView.setText("      " + word.candidate);
+
+            textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCandCategoryTextSize);
+            textView.setBackgroundDrawable(null);
+            textView.setGravity(Gravity.CENTER_VERTICAL);
+            textView.setMinHeight(mCandidateCategoryMinimumHeight);
+            textView.setHeight(mCandidateCategoryMinimumHeight);
+
             textView.setOnClickListener(null);
             textView.setOnLongClickListener(null);
-            textView.setBackgroundDrawable(null);
+            textView.setTextColor(mTextColor);
         } else {
-            textView.setOnClickListener(mCandidateOnClick);
-            textView.setOnLongClickListener(mCandidateOnLongClick);
+            textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCandNormalTextSize);
+            textView.setGravity(Gravity.CENTER);
+            textView.setMinHeight(getCandidateMinimumHeight());
+            textView.setHeight(getCandidateMinimumHeight());
+
+            if (is2nd) {
+                textView.setOnClickListener(mCandidateOnClick2nd);
+                textView.setOnLongClickListener(mCandidateOnLongClick2nd);
+            } else {
+                textView.setOnClickListener(mCandidateOnClick1st);
+                textView.setOnLongClickListener(mCandidateOnLongClick1st);
+            }
+
             textView.setBackgroundResource(R.drawable.cand_back);
+ 
+            textView.setTextColor(mTextColor);
         }
-        textView.setOnTouchListener(mCandidateOnTouch);
 
         if (maxWidth < textLength) {
             textView.setEllipsize(TextUtils.TruncateAt.END);
@@ -668,54 +1048,59 @@
 
         if (span != null) {
             SpannableString spannable = new SpannableString("   ");
-            spannable.setSpan(span, 1, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
+            spannable.setSpan(span, 1, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
             textView.setText(spannable);
         }
+        textView.setPadding(0, 0, 0, 0);
 
-        mWnnWordArray.add(mWordCount, word);
-        mWordCount++;
+        if (is2nd) {
+            mWnnWordArray2nd.add(mWordCount2nd, word);
+            mWordCount2nd++;
+            mTextViewArray2nd.add(textView);
+        } else {
+            mWnnWordArray1st.add(mWordCount1st, word);
+            mWordCount1st++;
+            mTextViewArray1st.add(textView);
+        }
     }
 
     /**
      * Create AbsoluteLayout.LayoutParams
      * @param layout AbsoluteLayout
-     * @param width
-     * @param height
-     * @return ViewGroup.LayoutParams
+     * @param width  The width of the display
+     * @param height The height of the display
+     * @return Layout parameter
      */
     private ViewGroup.LayoutParams buildLayoutParams(AbsoluteLayout layout, int width, int height) {
 
-        int indentWidth = mViewWidth / FULL_VIEW_DIV;
+        int viewDivison = getCandidateViewDivison();
+        int indentWidth = mViewWidth / viewDivison;
         int x         = indentWidth * mFullViewOccupyCount;
-        int nomalLine = (mPortrait) ? LINE_NUM_PORTRAIT : LINE_NUM_LANDSCAPE;
-        int y         = getCandidateMinimumHeight() * (mLineCount - nomalLine - 1);
+        int y         = mLineY;
         ViewGroup.LayoutParams params
               = new AbsoluteLayout.LayoutParams(width, height, x, y);
 
         return params;
     }
 
-
-
-            
-
-
     /**
      * Create a view for a candidate.
      * @return the view
      */
     private TextView createCandidateView() {
-        TextView text = new TextView(mViewBodyScroll.getContext());
-        text.setTextSize(20);
+        TextView text = new CandidateTextView(mViewBodyScroll.getContext());
+        text.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCandNormalTextSize);
         text.setBackgroundResource(R.drawable.cand_back);
+        text.setCompoundDrawablePadding(0);
         text.setGravity(Gravity.CENTER);
         text.setSingleLine();
-        text.setPadding(4, 4, 4, 4);
+        text.setPadding(0, 0, 0, 0);
         text.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                                                            ViewGroup.LayoutParams.WRAP_CONTENT,
                                                            1.0f));
         text.setMinHeight(getCandidateMinimumHeight());
         text.setMinimumWidth(getCandidateMinimumWidth());
+        text.setSoundEffectsEnabled(false);
         return text;
     }
 
@@ -723,24 +1108,30 @@
      * Display {@code mReadMoreText} if there are more candidates.
      */
     private void setReadMore() {
-        if (mIsScaleUp) {
+        if (mIsSymbolMode) {
             mReadMoreButton.setVisibility(View.GONE);
             mViewCandidateTemplate.setVisibility(View.GONE);
             return;
         }
 
+        int resid = 0;
+
         if (mIsFullView) {
             mReadMoreButton.setVisibility(View.VISIBLE);
-            mReadMoreButton.setImageResource(R.drawable.cand_down);
+            resid = R.drawable.cand_up;
         } else {
             if (mCanReadMore) {
                 mReadMoreButton.setVisibility(View.VISIBLE);
-                mReadMoreButton.setImageResource(R.drawable.cand_up);
+                resid = R.drawable.cand_down;
             } else {
                 mReadMoreButton.setVisibility(View.GONE);
                 mViewCandidateTemplate.setVisibility(View.GONE);
             }
         }
+
+        if (resid != 0) {
+            mReadMoreButton.setImageResource(resid);
+        }
     }
 
     /**
@@ -759,9 +1150,11 @@
             }
         }
     }
-        
+
     /** @see CandidatesViewManager#clearCandidates */
     public void clearCandidates() {
+        closeDialog();
+        clearFocusCandidate();
         clearNormalViewCandidate();
 
         ViewGroup layout = mViewCandidateList2nd;
@@ -770,15 +1163,20 @@
             View v = layout.getChildAt(i);
             v.setVisibility(View.GONE);
         }
-    
-        mLineCount = 1;
-        mWordCount = 0;
-        mWnnWordArray.clear();
 
+        mLineCount = 1;
+        mWordCount1st = 0;
+        mWordCount2nd = 0;
+        mWnnWordArray1st.clear();
+        mWnnWordArray2nd.clear();
+        mTextViewArray1st.clear();
+        mTextViewArray2nd.clear();
         mLineLength = 0;
 
+        mLineY = 0;
+
         mIsFullView = false;
-        setViewLayout(CandidatesViewManager.VIEW_TYPE_NORMAL);
+        mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL));
         if (mAutoHideMode) {
             setViewLayout(CandidatesViewManager.VIEW_TYPE_CLOSE);
         }
@@ -799,18 +1197,83 @@
                 mVibrator = null;
             }
             if (pref.getBoolean("key_sound", false)) {
-                mSound = MediaPlayer.create(mWnn, R.raw.type);
+                mSound = (AudioManager)mWnn.getSystemService(Context.AUDIO_SERVICE);
             } else {
                 mSound = null;
             }
+            setNumeberOfDisplayLines();
         } catch (Exception ex) {
-            Log.d("iwnn", "NO VIBRATOR");
+            Log.e("OpenWnn", "NO VIBRATOR");
         }
     }
     
     /**
-     * Process {@code OpenWnnEvent.CANDIDATE_VIEW_TOUCH} event.
-     * 
+     * Set normal mode.
+     */
+    public void setNormalMode() {
+        setReadMore();
+        mIsFullView = false;
+        mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL));
+    }
+
+    /**
+     * Set full mode.
+     */
+    public void setFullMode() {
+        mIsFullView = true;
+        mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_FULL));
+    }
+
+    /**
+     * Set symbol mode.
+     */
+    public void setSymbolMode(boolean enable, int mode) {
+        if (mIsSymbolMode && !enable) {
+            setViewType(CandidatesViewManager.VIEW_TYPE_CLOSE);
+        }
+        mSymbolMode = mode;
+        mIsSymbolMode = enable;
+    }
+
+    /**
+     * Set scroll up.
+     */
+    public void setScrollUp() {
+        if (!mViewBodyScroll.pageScroll(ScrollView.FOCUS_UP)) {
+            mViewBodyScroll.scrollTo(0, mViewBodyScroll.getChildAt(0).getHeight());
+        }
+    }
+
+    /**
+     * Set scroll down.
+     */
+    public void setScrollDown() {
+        if (!mViewBodyScroll.pageScroll(ScrollView.FOCUS_DOWN)) {
+            mViewBodyScroll.scrollTo(0, 0);
+        }
+    }
+
+    /**
+     * Set scroll full up.
+     */
+    public void setScrollFullUp() {
+        if (!mViewBodyScroll.fullScroll(ScrollView.FOCUS_UP)) {
+            mViewBodyScroll.scrollTo(0, mViewBodyScroll.getChildAt(0).getHeight());
+        }
+    }
+
+    /**
+     * Set scroll full down.
+     */
+    public void setScrollFullDown() {
+        if (!mViewBodyScroll.fullScroll(ScrollView.FOCUS_DOWN)) {
+            mViewBodyScroll.scrollTo(0, 0);
+        }
+    }
+
+    /**
+     * Process {@link OpenWnnEvent#CANDIDATE_VIEW_TOUCH} event.
+     *
      * @return      {@code true} if event is processed; {@code false} if otherwise
      */
     public boolean onTouchSync() {
@@ -825,14 +1288,29 @@
      * @param word  The selected word
      */
     private void selectCandidate(WnnWord word) {
-        setViewLayout(CandidatesViewManager.VIEW_TYPE_NORMAL);
+        if (!mIsSymbolMode) {
+            mIsFullView = false;
+            mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL));
+        }
+        mIsSymbolSelected = mIsSymbolMode;
+        mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.SELECT_CANDIDATE, word));
+    }
+
+    private void playSoundAndVibration() {
         if (mVibrator != null) {
-            try { mVibrator.vibrate(30); } catch (Exception ex) { }
+            try {
+                mVibrator.vibrate(5);
+            } catch (Exception ex) {
+                Log.e("OpenWnn", "TextCandidatesViewManager::selectCandidate Vibrator " + ex.toString());
+            }
         }
         if (mSound != null) {
-            try { mSound.seekTo(0); mSound.start(); } catch (Exception ex) { }
+            try {
+                mSound.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD, -1);
+            } catch (Exception ex) {
+                Log.e("OpenWnn", "TextCandidatesViewManager::selectCandidate Sound " + ex.toString());
+            }
         }
-        mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.SELECT_CANDIDATE, word));
     }
 
     /** @see android.view.GestureDetector.OnGestureListener#onDown */
@@ -842,15 +1320,15 @@
 
     /** @see android.view.GestureDetector.OnGestureListener#onFling */
     public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2, float arg3) {
-        if (mIsScaleUp) {
-            return false;
-        }
-
         boolean consumed = false;
         if (arg1 != null && arg0 != null && arg1.getY() < arg0.getY()) {
             if ((mViewType == CandidatesViewManager.VIEW_TYPE_NORMAL) && mCanReadMore) {
                 if (mVibrator != null) {
-                    try { mVibrator.vibrate(30); } catch (Exception ex) { }
+                    try {
+                        mVibrator.vibrate(5);
+                    } catch (Exception ex) {
+                        Log.e("iwnn", "TextCandidatesViewManager::onFling Vibrator " + ex.toString());
+                    }
                 }
                 mIsFullView = true;
                 mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_FULL));
@@ -859,7 +1337,11 @@
         } else {
             if (mViewBodyScroll.getScrollY() == 0) {
                 if (mVibrator != null) {
-                    try { mVibrator.vibrate(30); } catch (Exception ex) { }
+                    try {
+                        mVibrator.vibrate(5);
+                    } catch (Exception ex) {
+                        Log.e("iwnn", "TextCandidatesViewManager::onFling Sound " + ex.toString());
+                    }
                 }
                 mIsFullView = false;
                 mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL));
@@ -907,77 +1389,73 @@
     }
 
     /**
-     * Switch list/enlarge view mode.
-     * @param up  {@code true}:enlarge, {@code false}:list
-     * @param word  The candidate word to be enlarged.
+     * Create a layout for the next line.
      */
-    private void setViewScaleUp(boolean up, WnnWord word) {
-        if (up == mIsScaleUp || (mViewScaleUp == null)) {
-            return;
-        }
-
-        if (up) {
-            setViewLayout(CandidatesViewManager.VIEW_TYPE_NORMAL);
-            mViewCandidateList1st.setVisibility(View.GONE);
-            mViewCandidateBase.setMinimumHeight(-1);
-            mViewCandidateBase.addView(mViewScaleUp);
-            TextView text = (TextView)mViewScaleUp.findViewById(R.id.candidate_scale_up_text);
-            text.setText(word.candidate);
-            if (!mPortrait) {
-                Resources r = mViewBodyScroll.getContext().getResources();
-                text.setTextSize(r.getDimensionPixelSize(R.dimen.candidate_delete_word_size_landscape));
+    private void createNextLine(boolean isCategory) {
+        if (isFirstListOver(mIsFullView, mLineCount, null)) {
+            /* Full view */
+            mFullViewOccupyCount = 0;
+            if (mFullViewPrevView != null) {
+                mFullViewPrevLineTopId = mFullViewPrevView.getId();
             }
-
-            mIsScaleUp = true;
-            setReadMore();
+            if (isCategory) {
+                mLineY += mCandidateCategoryMinimumHeight;
+            } else {
+                mLineY += getCandidateMinimumHeight();
+            }
+            mLineCount++;
         } else {
-            mIsScaleUp = false;
-            mViewCandidateBase.removeView(mViewScaleUp);
+            createNextLineFor1st();
         }
     }
 
     /**
      * Create a layout for the next line.
      */
-    private void createNextLine() {
-        int lineCount = mLineCount;
-        if (mIsFullView || getMaxLine() < lineCount) {
-            /* Full view */
-            mFullViewOccupyCount = 0;
-            mFullViewPrevLineTopId = mFullViewPrevView.getId();
+    private void createNextLineFor1st() {
+        LinearLayout lineView = (LinearLayout) mViewCandidateList1st.getChildAt(mLineCount - 1);
+        float weight = 0;
+        if (mLineLength < mCandidateLeftAlignThreshold) {
+            if (mLineCount == 1) {
+                mViewCandidateTemplate.setVisibility(View.GONE);
+            }
         } else {
-            /* Normal view */
-            LinearLayout lineView = (LinearLayout) mViewCandidateList1st.getChildAt(lineCount - 1);
-            float weight = 0;
-            if (mLineLength < CANDIDATE_LEFT_ALIGN_THRESHOLD) {
-                if (lineCount == 1) {
-                    mViewCandidateTemplate.setVisibility(View.GONE);
-                }
-            } else {
-                weight = 1.0f;
-            }
-
-            LinearLayout.LayoutParams params
-                = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
-                                                ViewGroup.LayoutParams.WRAP_CONTENT,
-                                                weight);
-            
-            int child = lineView.getChildCount();
-            for (int i = 0; i < child; i++) {
-                View view = lineView.getChildAt(i);
-
-                if (view != mViewCandidateTemplate) {
-                    view.setLayoutParams(params);
-                }
-            }
-
-            mLineLength = 0;
-            mNormalViewWordCountOfLine = 0;
+            weight = 1.0f;
         }
+
+        LinearLayout.LayoutParams params
+            = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
+                                            ViewGroup.LayoutParams.WRAP_CONTENT,
+                                            weight);
+
+        int child = lineView.getChildCount();
+        for (int i = 0; i < child; i++) {
+            View view = lineView.getChildAt(i);
+
+            if (view != mViewCandidateTemplate) {
+                view.setLayoutParams(params);
+                view.setPadding(0, 0, 0, 0);
+            }
+        }
+
+        mLineLength = 0;
+        mNormalViewWordCountOfLine = 0;
         mLineCount++;
     }
 
     /**
+     * Judge if it's a category.
+     *
+     * @return {@code true} if category
+     */
+    boolean isCategory(WnnWord word) {
+        int length = word.candidate.length();
+        return ((length > 3) && (word.candidate.charAt(0) == '['));
+    }
+
+    /**
+     * Get a minimum width of a candidate view.
+     *
      * @return the minimum width of a candidate view.
      */
     private int getCandidateMinimumWidth() {
@@ -990,4 +1468,444 @@
     private int getCandidateMinimumHeight() {
         return mCandidateMinimumHeight;
     }
+
+    /**
+     * Get a height of a candidate view.
+     *
+     * @return the height of a candidate view.
+     */
+    private int getCandidateViewHeight() {
+        if (OpenWnn.isXLarge()) {
+           return mKeyboardHeight + mCandidateOneLineMinimumHeight - mSymbolKeyboardHeight
+                         - mSymbolKeyboardTabHeight;
+        } else {
+            int numberOfLine = (mPortrait) ? mPortraitNumberOfLine : mLandscapeNumberOfLine;
+            Resources resource = mWnn.getResources();
+            Drawable keyboardBackground = resource.getDrawable(R.drawable.keyboard_background);
+            Rect keyboardPadding = new Rect(0 ,0 ,0 ,0);
+            keyboardBackground.getPadding(keyboardPadding);
+            int keyboardTotalPadding = keyboardPadding.top + keyboardPadding.bottom;
+            if (mIsSymbolMode) {
+                return mKeyboardHeight + numberOfLine * getCandidateMinimumHeight()
+                       - mSymbolKeyboardHeight - mSymbolKeyboardTabHeight;
+            } else if (!mHardKeyboardHidden) {
+                return mKeyboardHeight + numberOfLine * getCandidateMinimumHeight()
+                       - mSymbolKeyboardHeight;
+            } else {
+                return mKeyboardHeight + keyboardTotalPadding
+                       + numberOfLine * getCandidateMinimumHeight();
+            }
+        }
+    }
+
+    /**
+     * Update symbol type.
+     */
+    private void updateSymbolType() {
+        switch (mSymbolMode) {
+        case OpenWnnJAJP.ENGINE_MODE_SYMBOL:
+            updateTabStatus(mViewTabSymbol, true, true);
+            updateTabStatus(mViewTabEmoticon, mEnableEmoticon, false);
+            break;
+
+        case OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI:
+            updateTabStatus(mViewTabSymbol, true, false);
+            updateTabStatus(mViewTabEmoticon, mEnableEmoticon, true);
+            break;
+
+        default:
+            updateTabStatus(mViewTabSymbol, true, false);
+            updateTabStatus(mViewTabEmoticon, mEnableEmoticon, false);
+            break;
+        }
+    }
+
+    /**
+     * Update tab status.
+     *
+     * @param tab           The tab view.
+     * @param enabled       The tab is enabled.
+     * @param selected      The tab is selected.
+     */
+    private void updateTabStatus(TextView tab, boolean enabled, boolean selected) {
+        tab.setVisibility(View.VISIBLE);
+        tab.setEnabled(enabled);
+        int backgroundId = 0;
+        int colorId = 0;
+        if (enabled) {
+            if (selected) {
+                backgroundId = R.drawable.cand_tab;
+                colorId = R.color.tab_textcolor_select;
+            } else {
+                backgroundId = R.drawable.cand_tab_noselect;
+                colorId = R.color.tab_textcolor_no_select;
+            }
+        } else {
+            backgroundId = R.drawable.cand_tab_noselect;
+            colorId = R.color.tab_textcolor_disable;
+        }
+        tab.setBackgroundResource(backgroundId);
+        tab.setTextColor(mWnn.getResources().getColor(colorId));
+    }
+
+    /**
+     * Get candidate number of division.
+     * @return Number of division
+     */
+    private int getCandidateViewDivison() {
+        int viewDivison;
+
+        if (mIsSymbolMode) {
+            int mode = mSymbolMode;
+            switch (mode) {
+            case OpenWnnJAJP.ENGINE_MODE_SYMBOL:
+                viewDivison = (mPortrait) ? FULL_VIEW_SYMBOL_DIV_PORT : FULL_VIEW_SYMBOL_DIV_LAND;
+                break;
+            case OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI:
+            default:
+                viewDivison = FULL_VIEW_DIV;
+                break;
+            }
+        } else {
+             viewDivison = FULL_VIEW_DIV;
+        }
+        return viewDivison;
+    }
+
+    /**
+     * @return Word count
+     */
+    private int getWordCount() {
+        return mWordCount1st + mWordCount2nd;
+    }
+
+    /**
+     * @return Add second
+     */
+    private boolean isFirstListOver(boolean isFullView, int lineCount, WnnWord word) {
+
+        if (mIsSymbolMode) {
+            switch (mSymbolMode) {
+            case OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI:
+                return true;
+            case OpenWnnJAJP.ENGINE_MODE_SYMBOL:
+				return true;
+            default:
+                return (isFullView || getMaxLine() < lineCount);
+            }
+        } else {
+            return (isFullView || getMaxLine() < lineCount);
+        }
+    }
+
+    /**
+     * @return Candidate space width
+     */
+    private int getCandidateSpaceWidth(boolean isEmojiSymbol) {
+        Resources r = mWnn.getResources();
+        if (mPortrait) {
+            if (isEmojiSymbol) {
+                return 0;
+            } else {
+                return r.getDimensionPixelSize(R.dimen.cand_space_width);
+            }
+        } else {
+            if (isEmojiSymbol) {
+                return r.getDimensionPixelSize(R.dimen.cand_space_width_emoji_symbol);
+            } else {
+                return r.getDimensionPixelSize(R.dimen.cand_space_width);
+            }
+        }
+    }
+
+    /**
+     * KeyEvent action for the candidate view.
+     *
+     * @param key    Key event
+     */
+    public void processMoveKeyEvent(int key) {
+        if (!mViewBody.isShown()) {
+            return;
+        }
+
+        switch (key) {
+        case KeyEvent.KEYCODE_DPAD_UP:
+            moveFocus(-1, true);
+            break;
+
+        case KeyEvent.KEYCODE_DPAD_DOWN:
+            moveFocus(1, true);
+            break;
+
+        case KeyEvent.KEYCODE_DPAD_LEFT:
+            moveFocus(-1, false);
+            break;
+
+        case KeyEvent.KEYCODE_DPAD_RIGHT:
+            moveFocus(1, false);
+            break;
+
+        default:
+            break;
+        }
+    }
+
+    /**
+     * Get a flag candidate is focused now.
+     *
+     * @return the Candidate is focused of a flag.
+     */
+    public boolean isFocusCandidate(){
+        if (mCurrentFocusIndex != FOCUS_NONE) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Give focus to View of candidate.
+     */
+    public void setViewStatusOfFocusedCandidate(){
+        View view = mFocusedView;
+        if (view != null) {
+            view.setBackgroundDrawable(mFocusedViewBackground);
+            view.setPadding(0, 0, 0, 0);
+        }
+
+        TextView v = getFocusedView();
+        mFocusedView = v;
+        if (v != null) {
+            mFocusedViewBackground = v.getBackground();
+            v.setBackgroundResource(R.drawable.cand_back_focuse);
+            v.setPadding(0, 0, 0, 0);
+
+            int viewBodyTop = getViewTopOnScreen(mViewBodyScroll);
+            int viewBodyBottom = viewBodyTop + mViewBodyScroll.getHeight();
+            int focusedViewTop = getViewTopOnScreen(v);
+            int focusedViewBottom = focusedViewTop + v.getHeight();
+
+            if (focusedViewBottom > viewBodyBottom) {
+                mViewBodyScroll.scrollBy(0, (focusedViewBottom - viewBodyBottom));
+            } else if (focusedViewTop < viewBodyTop) {
+                mViewBodyScroll.scrollBy(0, (focusedViewTop - viewBodyTop));
+            }
+        }
+    }
+
+    /**
+     * Clear focus to selected candidate.
+     */
+    public void clearFocusCandidate(){
+        View view = mFocusedView;
+        if (view != null) {
+            view.setBackgroundDrawable(mFocusedViewBackground);
+            view.setPadding(0, 0, 0, 0);
+            mFocusedView = null;
+        }
+
+        mFocusAxisX = 0;
+        mHasFocusedArray1st = true;
+        mCurrentFocusIndex = FOCUS_NONE;
+        mHandler.removeMessages(MSG_MOVE_FOCUS);
+        mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.FOCUS_CANDIDATE_END));
+    }
+
+    /**
+     * @see CandidatesViewManager#selectFocusCandidate
+     */
+    public void selectFocusCandidate(){
+        if (mCurrentFocusIndex != FOCUS_NONE) {
+            WnnWord word = getFocusedWnnWord();
+
+            if (mHandler.hasMessages(MSG_SET_CANDIDATES)) {
+                mWnnWordSelectedList.add(word);
+            } else {
+                selectCandidate(word);
+            }
+        }
+    }
+
+    /** @see CandidatesViewManager#getFocusedWnnWord */
+    public WnnWord getFocusedWnnWord() {
+        return getWnnWord(mCurrentFocusIndex);
+    }
+
+    /**
+     * Get WnnWord.
+     * 
+     * @return WnnWord word
+     */
+    public WnnWord getWnnWord(int index) {
+        WnnWord word = null;
+        if (index < 0) {
+            index = 0;
+            mHandler.removeMessages(MSG_MOVE_FOCUS);
+            Log.i("iwnn", "TextCandidatesViewManager::getWnnWord  index < 0 ");
+        } else {
+            int size = mHasFocusedArray1st ? mWnnWordArray1st.size() : mWnnWordArray2nd.size();
+            if (index >= size) {
+                index = size - 1;
+                mHandler.removeMessages(MSG_MOVE_FOCUS);
+                Log.i("iwnn", "TextCandidatesViewManager::getWnnWord  index > candidate max ");
+            }
+        }
+     
+        if (mHasFocusedArray1st) {
+            word = mWnnWordArray1st.get(index);
+        } else {
+            word = mWnnWordArray2nd.get(index);
+        }
+        return word;
+    }
+
+    /**
+     * Set display candidate line from SharedPreferences.
+     */
+    private void setNumeberOfDisplayLines(){
+        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(mWnn);
+        mPortraitNumberOfLine = Integer.parseInt(pref.getString("setting_portrait", "2"));
+        mLandscapeNumberOfLine = Integer.parseInt(pref.getString("setting_landscape", "1"));
+    }
+
+    /**
+     * Set emoticon enabled.
+     */
+    public void setEnableEmoticon(boolean enableEmoticon) {
+        mEnableEmoticon = enableEmoticon;
+    }
+
+    /**
+     * Get View of focus candidate.
+     */
+    public TextView getFocusedView() {
+        if (mCurrentFocusIndex == FOCUS_NONE) {
+            return null;
+        }
+        TextView t;
+        if (mHasFocusedArray1st) {
+            t = mTextViewArray1st.get(mCurrentFocusIndex);
+        } else {
+            t = mTextViewArray2nd.get(mCurrentFocusIndex);
+        }
+        return t;
+    }
+
+    /**
+     * Move the focus to next candidate.
+     *
+     * @param direction  The direction of increment or decrement.
+     * @param updown     {@code true} if move is up or down.
+     */
+    public void moveFocus(int direction, boolean updown) {
+        boolean isStart = (mCurrentFocusIndex == FOCUS_NONE);
+        if (direction == 0) {
+            setViewStatusOfFocusedCandidate();
+        }
+
+        int size1st = mTextViewArray1st.size();
+        if (mHasFocusedArray1st && (size1st == 0)) {
+            mHasFocusedArray1st = false;
+        }
+        ArrayList<TextView> list = mHasFocusedArray1st ? mTextViewArray1st : mTextViewArray2nd;
+        int size = list.size();
+        int start = (mCurrentFocusIndex == FOCUS_NONE) ? 0 : (mCurrentFocusIndex + direction);
+
+        int index = -1;
+        boolean hasChangedLine = false;
+        for (int i = start; (0 <= i) && (i < size); i += direction) {
+            TextView view = list.get(i);
+            if (!view.isShown()) {
+                break;
+            }
+
+            if (mIsSymbolMode && (view.getBackground() == null)) {
+                continue;
+            }
+
+            if (updown) {
+                int left = view.getLeft();
+                if ((left <= mFocusAxisX)
+                        && (mFocusAxisX < view.getRight())) {
+                    index = i;
+                    break;
+                }
+
+                if (left == 0) {
+                    hasChangedLine = true;
+                }
+            } else {
+                index = i;
+                break;
+            }
+        }
+
+        if ((index < 0) && hasChangedLine && !mHasFocusedArray1st && (0 < direction)) {
+            index = mTextViewArray2nd.size() - 1;
+        }
+
+        if (0 <= index) {
+            mCurrentFocusIndex = index;
+            setViewStatusOfFocusedCandidate();
+            if (!updown) {
+                mFocusAxisX = getFocusedView().getLeft();
+            }
+        } else {
+            if (mCanReadMore && (0 < size1st)) {
+
+                if ((mHasFocusedArray1st && (direction < 0))
+                        || (!mHasFocusedArray1st && (0 < direction))) {
+                    updown = false;
+                }
+
+                mHasFocusedArray1st = !mHasFocusedArray1st;
+
+                if (!mHasFocusedArray1st && !mIsFullView) {
+                    setFullMode();
+                }
+            }
+
+            if (size1st == 0) {
+                updown = false;
+            }
+
+            if (0 < direction) {
+                mCurrentFocusIndex = -1;
+            } else {
+                mCurrentFocusIndex = (mHasFocusedArray1st ? size1st : mTextViewArray2nd.size());
+            }
+            Message m = mHandler.obtainMessage(MSG_MOVE_FOCUS, direction, updown ? 1 : 0);
+            mHandler.sendMessage(m);
+        }
+
+        if (isStart) {
+            mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.FOCUS_CANDIDATE_START));
+        }
+    }
+
+    /**
+     * Set hardkeyboard hidden.
+     *
+     * @param hardKeyboardHidden hardkeyaboard hidden.
+     */
+    public void setHardKeyboardHidden(boolean hardKeyboardHidden) {
+        mHardKeyboardHidden = hardKeyboardHidden;
+    }
+
+    /**
+     * Get view top position on screen.
+     *
+     * @param view target view.
+     * @return int view top position on screen
+     */
+    public int getViewTopOnScreen(View view) {
+        int[] location = new int[2];
+        view.getLocationOnScreen(location);
+        return location[1];
+    }
+
+
+    /** @see CandidatesViewManager#setCandidateMsgRemove */
+    public void setCandidateMsgRemove() {
+        mHandler.removeMessages(MSG_SET_CANDIDATES);
+    }
 }
diff --git a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsEdit.java b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsEdit.java
index 9a023e5..cf774ce 100644
--- a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsEdit.java
+++ b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsEdit.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -113,7 +113,6 @@
         super.onCreate(savedInstanceState);
 
         /* create view from XML layout */
-        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
         setContentView(R.layout.user_dictionary_tools_edit);
 
         /* get widgets */
diff --git a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsList.java b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsList.java
index 15d1f4a..0c584b6 100644
--- a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsList.java
+++ b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsList.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,11 +21,15 @@
 import android.app.Dialog;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.res.Configuration;
 import android.graphics.Color;
+import android.graphics.Paint.FontMetricsInt;
 import android.os.Bundle;
+import android.text.TextPaint;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.Display;
+import android.view.Gravity;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.MotionEvent;
@@ -144,6 +148,9 @@
     /** Page right button */
     private Button mRightButton = null;
 
+    /** for isXLarge */
+    private static boolean mIsXLarge = false;
+
     /**
      * Send the specified event to IME
      *
@@ -154,10 +161,8 @@
     /** Get the comparator for sorting the list */
     protected abstract Comparator<WnnWord> getComparator();
 
-    /**
-     * Create the header
-     */
-    protected abstract void  headerCreate();
+    /** Show Dialog Num */
+    private int mDialogShow = -1;
 
     /** @see android.app.Activity#onCreate */
     @Override protected void onCreate(Bundle savedInstanceState) {
@@ -166,7 +171,6 @@
         super.onCreate(savedInstanceState);
 
         /* create XML layout */
-        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
         setContentView(R.layout.user_dictionary_tools_list);
         mTableLayout = (TableLayout)findViewById(R.id.user_dictionary_tools_table);
 
@@ -201,18 +205,39 @@
     /** @see android.app.Activity#onStart */
     @Override protected void onStart() {
         super.onStart();
+        mDialogShow = -1;
         sBeforeSelectedViewID = -1;
         sJustBeforeActionTime = -1;
         mWordList = getWords();
 
-        headerCreate();
         final TextView leftText = (TextView) findViewById(R.id.user_dictionary_tools_list_title_words_count);
         leftText.setText(mWordList.size() + "/" + MAX_WORD_COUNT);
 
+        mIsXLarge = ((getResources().getConfiguration().screenLayout &
+                      Configuration.SCREENLAYOUT_SIZE_MASK)
+                      == Configuration.SCREENLAYOUT_SIZE_XLARGE);
         updateWordList();
     }
 
     /**
+     * Called when the system is about to start resuming a previous activity.
+     *
+     * @see android.app.Activity#onPause
+     */
+    @Override protected void onPause() {
+
+        if (mDialogShow == DIALOG_CONTROL_DELETE_CONFIRM) {
+            dismissDialog(DIALOG_CONTROL_DELETE_CONFIRM);
+            mDialogShow = -1;
+        } else if (mDialogShow == DIALOG_CONTROL_INIT_CONFIRM){
+            dismissDialog(DIALOG_CONTROL_INIT_CONFIRM);
+            mDialogShow = -1;
+        }
+
+        super.onPause();
+    }
+
+    /**
      * Set parameters of table
      *
      * @param  w        The width of the table
@@ -308,12 +333,14 @@
         case MENU_ITEM_DELETE:
             /* delete the word (show dialog) */
             showDialog(DIALOG_CONTROL_DELETE_CONFIRM);
+            mDialogShow = DIALOG_CONTROL_DELETE_CONFIRM;
             ret = true;
             break;
 
         case MENU_ITEM_INIT:
             /* clear the dictionary (show dialog) */
             showDialog(DIALOG_CONTROL_INIT_CONFIRM);
+            mDialogShow = DIALOG_CONTROL_INIT_CONFIRM;
             ret = true;
             break;
 
@@ -372,6 +399,7 @@
         new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int button) {
 
+                mDialogShow = -1;
                 CharSequence focusString = ((TextView)sFocusingView).getText();
                 CharSequence focusPairString = ((TextView)sFocusingPairView).getText();
                 WnnWord wnnWordSearch = new WnnWord();
@@ -422,6 +450,7 @@
         new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int button) {
 
+                mDialogShow = -1;
                 /* clear the user dictionary */
                 OpenWnnEvent ev = new OpenWnnEvent(OpenWnnEvent.INITIALIZE_USER_DICTIONARY, new WnnWord());
 
@@ -638,6 +667,12 @@
             Display display = windowManager.getDefaultDisplay();
             int system_width = display.getWidth();
 
+            UserDictionaryToolsListFocus dummy = new UserDictionaryToolsListFocus(this);
+            dummy.setTextSize(WORD_TEXT_SIZE);
+            TextPaint paint = dummy.getPaint();
+            FontMetricsInt fontMetrics = paint.getFontMetricsInt();
+            int row_hight = (Math.abs(fontMetrics.top) + fontMetrics.bottom) * 2;
+ 
             for (int i = 1; i <= MAX_LIST_WORD_COUNT; i++) {
                 TableRow row = new TableRow(this);
                 UserDictionaryToolsListFocus stroke = new UserDictionaryToolsListFocus(this);
@@ -654,6 +689,10 @@
                 stroke.setFocusableInTouchMode(true);
                 stroke.setOnTouchListener(this);
                 stroke.setOnFocusChangeListener(this);
+                if (isXLarge()) {
+                    stroke.setHeight(row_hight);
+                    stroke.setGravity(Gravity.CENTER_VERTICAL);
+                }
 
                 UserDictionaryToolsListFocus candidate = new UserDictionaryToolsListFocus(this);
                 candidate.setId(i+MAX_WORD_COUNT);
@@ -670,6 +709,10 @@
                 candidate.setOnTouchListener(this);
                 candidate.setOnFocusChangeListener(this);
 
+                if (isXLarge()) {
+                    candidate.setHeight(row_hight);
+                    candidate.setGravity(Gravity.CENTER_VERTICAL);
+                }
                 stroke.setPairView(candidate);
                 candidate.setPairView(stroke);
 
@@ -726,4 +769,14 @@
         }
         mTableLayout.requestLayout();
     }
+
+    /**
+     * Whether the x large mode.
+     *
+     * @return      {@code true} if x large; {@code false} if not x large.
+     */
+    public static boolean isXLarge() {
+        return mIsXLarge;
+    }
+
 }
diff --git a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsListFocus.java b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsListFocus.java
index 4a6a8fe..51b9bf6 100644
--- a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsListFocus.java
+++ b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsListFocus.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/WnnClause.java b/src/jp/co/omronsoft/openwnn/WnnClause.java
index 6d4babd..aabd2ce 100644
--- a/src/jp/co/omronsoft/openwnn/WnnClause.java
+++ b/src/jp/co/omronsoft/openwnn/WnnClause.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/WnnDictionary.java b/src/jp/co/omronsoft/openwnn/WnnDictionary.java
index c4b2aa5..e58955e 100644
--- a/src/jp/co/omronsoft/openwnn/WnnDictionary.java
+++ b/src/jp/co/omronsoft/openwnn/WnnDictionary.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/WnnEngine.java b/src/jp/co/omronsoft/openwnn/WnnEngine.java
index 4d23966..a24aa37 100644
--- a/src/jp/co/omronsoft/openwnn/WnnEngine.java
+++ b/src/jp/co/omronsoft/openwnn/WnnEngine.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/WnnPOS.java b/src/jp/co/omronsoft/openwnn/WnnPOS.java
index dd61f2e..33fd6a0 100644
--- a/src/jp/co/omronsoft/openwnn/WnnPOS.java
+++ b/src/jp/co/omronsoft/openwnn/WnnPOS.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/WnnSentence.java b/src/jp/co/omronsoft/openwnn/WnnSentence.java
index c6ffbca..6644b7d 100644
--- a/src/jp/co/omronsoft/openwnn/WnnSentence.java
+++ b/src/jp/co/omronsoft/openwnn/WnnSentence.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/jp/co/omronsoft/openwnn/WnnWord.java b/src/jp/co/omronsoft/openwnn/WnnWord.java
index fb2f7c6..0ac065c 100644
--- a/src/jp/co/omronsoft/openwnn/WnnWord.java
+++ b/src/jp/co/omronsoft/openwnn/WnnWord.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
+ * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
