diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index af145a62983fe8ecb55959e39369b68c105349ee..456d9ad4dd24e0dd5af27b6b0d185baa2be39ac8 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -27,6 +27,8 @@
     <integer name="config_mini_keyboard_fadeout_anim_time">100</integer>
     <integer name="config_delay_before_key_repeat_start">400</integer>
     <integer name="config_key_repeat_interval">50</integer>
+    <integer name="config_keyboard_grid_width">32</integer>
+    <integer name="config_keyboard_grid_height">16</integer>
     <integer name="config_long_press_key_timeout">400</integer>
     <integer name="config_long_press_shift_key_timeout">1200</integer>
     <integer name="config_multi_tap_key_timeout">800</integer>
diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboard.java b/java/src/com/android/inputmethod/latin/BaseKeyboard.java
index cb41ad04794980fb44afd2eb7ea3a2929ad1a34f..266300eb361aae081a3b3f93ee0617fdc8edb62b 100644
--- a/java/src/com/android/inputmethod/latin/BaseKeyboard.java
+++ b/java/src/com/android/inputmethod/latin/BaseKeyboard.java
@@ -109,9 +109,9 @@ public class BaseKeyboard {
 
     // Variables for pre-computing nearest keys.
 
-    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 final int GRID_WIDTH;
+    private final int GRID_HEIGHT;
+    private final int GRID_SIZE;
     private int mCellWidth;
     private int mCellHeight;
     private int[][] mGridNeighbors;
@@ -466,6 +466,11 @@ public class BaseKeyboard {
      * @param height sets height of keyboard
      */
     public BaseKeyboard(Context context, int xmlLayoutResId, int modeId, int width, int height) {
+        Resources res = context.getResources();
+        GRID_WIDTH = res.getInteger(R.integer.config_keyboard_grid_width);
+        GRID_HEIGHT = res.getInteger(R.integer.config_keyboard_grid_height);
+        GRID_SIZE = GRID_WIDTH * GRID_HEIGHT;
+
         mDisplayWidth = width;
         mDisplayHeight = height;
 
@@ -485,17 +490,9 @@ public class BaseKeyboard {
      * @param modeId keyboard mode identifier
      */
     public BaseKeyboard(Context context, int xmlLayoutResId, int modeId) {
-        DisplayMetrics dm = context.getResources().getDisplayMetrics();
-        mDisplayWidth = dm.widthPixels;
-        mDisplayHeight = dm.heightPixels;
-        //Log.v(TAG, "keyboard's display metrics:" + dm);
-
-        mDefaultHorizontalGap = 0;
-        setKeyWidth(mDisplayWidth / 10);
-        mDefaultVerticalGap = 0;
-        mDefaultHeight = mDefaultWidth;
-        mKeyboardMode = modeId;
-        loadKeyboard(context, xmlLayoutResId);
+        this(context, xmlLayoutResId, modeId,
+                context.getResources().getDisplayMetrics().widthPixels,
+                context.getResources().getDisplayMetrics().heightPixels);
     }
 
     /**