diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 99463ae5f607ec4c708e5978c088ba595ea9f79b..0a6f2ab00e4361b8f0aaab3a60ce3116b66264e5 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1401,7 +1401,12 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
         case Constants.CODE_SHIFT:
             // Note: calling back to the keyboard on Shift key is handled in onPressKey()
             // and onReleaseKey().
-            handleRecapitalize();
+            final Keyboard currentKeyboard = switcher.getKeyboard();
+            if (null != currentKeyboard && currentKeyboard.mId.isAlphabetKeyboard()) {
+                // TODO: Instead of checking for alphabetic keyboard here, separate keycodes for
+                // alphabetic shift and shift while in symbol layout.
+                handleRecapitalize();
+            }
             break;
         case Constants.CODE_SWITCH_ALPHA_SYMBOL:
             // Note: calling back to the keyboard on symbol key is handled in onPressKey()