diff --git a/java/res/values-xlarge/config.xml b/java/res/values-xlarge/config.xml
index e8e2130..a6fbea6 100644
--- a/java/res/values-xlarge/config.xml
+++ b/java/res/values-xlarge/config.xml
@@ -25,6 +25,7 @@
     <bool name="config_candidate_highlight_font_color_enabled">false</bool>
     <bool name="config_swipe_down_dismiss_keyboard_enabled">false</bool>
     <bool name="config_sliding_key_input_enabled">false</bool>
+    <bool name="config_digit_popup_characters_enabled">false</bool>
     <!-- Whether or not Popup on key press is enabled by default -->
     <bool name="config_default_popup_preview">false</bool>
     <!-- This configuration is the index of the array {@link KeyboardSwitcher.KEYBOARD_THEMES}. -->
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 8bdda55..033224e 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -28,6 +28,7 @@
     <bool name="config_candidate_highlight_font_color_enabled">true</bool>
     <bool name="config_swipe_down_dismiss_keyboard_enabled">true</bool>
     <bool name="config_sliding_key_input_enabled">true</bool>
+    <bool name="config_digit_popup_characters_enabled">true</bool>
     <!-- Whether or not Popup on key press is enabled by default -->
     <bool name="config_default_popup_preview">true</bool>
     <integer name="config_delay_before_preview">0</integer>
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index c2aa4ec..35bafea 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -27,6 +27,8 @@
 import android.text.TextUtils;
 import android.util.Xml;
 
+import java.util.ArrayList;
+
 /**
  * Class for describing the position and characteristics of a single key in the keyboard.
  */
@@ -208,8 +210,13 @@
                 style = keyStyles.getEmptyKeyStyle();
             }
 
-            mPopupCharacters = style.getTextArray(keyAttr,
+            final CharSequence[] popupCharacters = style.getTextArray(keyAttr,
                     R.styleable.Keyboard_Key_popupCharacters);
+            if (res.getBoolean(R.bool.config_digit_popup_characters_enabled)) {
+                mPopupCharacters = popupCharacters;
+            } else {
+                mPopupCharacters = filterOutDigitPopupCharacters(popupCharacters);
+            }
             mMaxPopupColumn = style.getInt(keyboardAttr,
                     R.styleable.Keyboard_Key_maxPopupKeyboardColumn,
                     mKeyboard.getMaxPopupKeyboardColumn());
@@ -256,6 +263,36 @@
         }
     }
 
+    private static boolean isDigitPopupCharacter(CharSequence label) {
+        return label.length() == 1 && Character.isDigit(label.charAt(0));
+    }
+
+    private static CharSequence[] filterOutDigitPopupCharacters(CharSequence[] popupCharacters) {
+        if (popupCharacters == null || popupCharacters.length < 1)
+            return null;
+        if (popupCharacters.length == 1 && isDigitPopupCharacter(
+                PopupCharactersParser.getLabel(popupCharacters[0].toString())))
+            return null;
+        ArrayList<CharSequence> filtered = null;
+        for (int i = 0; i < popupCharacters.length; i++) {
+            final CharSequence popupSpec = popupCharacters[i];
+            if (isDigitPopupCharacter(PopupCharactersParser.getLabel(popupSpec.toString()))) {
+                if (filtered == null) {
+                    filtered = new ArrayList<CharSequence>();
+                    for (int j = 0; j < i; j++)
+                        filtered.add(popupCharacters[j]);
+                }
+            } else if (filtered != null) {
+                filtered.add(popupSpec);
+            }
+        }
+        if (filtered == null)
+            return popupCharacters;
+        if (filtered.size() == 0)
+            return null;
+        return filtered.toArray(new CharSequence[filtered.size()]);
+    }
+
     public Drawable getIcon() {
         return mIcon;
     }
