diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 32aabf92810ebe4f2e7145f7a6e9a71091c9b8d6..5ae044802d01741eab99c46ff88be1cb81d92689 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -205,6 +205,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
             mMainKeyboardId = getKeyboardId(editorInfo, false, false, settingsValues);
             mSymbolsKeyboardId = getKeyboardId(editorInfo, true, false, settingsValues);
             mSymbolsShiftedKeyboardId = getKeyboardId(editorInfo, true, true, settingsValues);
+            mState.onLoadKeyboard();
             mLayoutSwitchBackSymbols = mResources.getString(R.string.layout_switch_back_symbols);
             setKeyboard(getKeyboard(mSavedKeyboardState.getKeyboardId()));
             mSavedKeyboardState.restore();
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
index fd7e77863f8cac8f48dc1ffd1310d81483e3ddba..b9450c643c5bdff15d52fa1a998c49104203def1 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
@@ -27,6 +27,13 @@ public class KeyboardState {
     public KeyboardState() {
     }
 
+    public void onLoadKeyboard() {
+        mKeyboardShiftState.setShifted(false);
+        mKeyboardShiftState.setShiftLocked(false);
+        mShiftKeyState.onRelease();
+        mSymbolKeyState.onRelease();
+    }
+
     public boolean isShiftLocked() {
         return mKeyboardShiftState.isShiftLocked();
     }