diff --git a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
index 5f78cb9..0d116dc 100644
--- a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
@@ -499,26 +499,26 @@
             if (isShiftLocked()) {
                 // Shift key is pressed while caps lock state, we will treat this state as shifted
                 // caps lock state and mark as if shift key pressed while normal state.
-                setManualTemporaryUpperCase(true);
                 shiftKeyState.onPress();
+                setManualTemporaryUpperCase(true);
             } else if (isAutomaticTemporaryUpperCase()) {
                 // Shift key is pressed while automatic temporary upper case, we have to move to
                 // manual temporary upper case.
+                shiftKeyState.onPress();
                 setManualTemporaryUpperCase(true);
-                shiftKeyState.onPressOnShifted();
             } else if (isShiftedOrShiftLocked()) {
                 // In manual upper case state, we just record shift key has been pressing while
                 // shifted state.
                 shiftKeyState.onPressOnShifted();
             } else {
                 // In base layout, chording or manual temporary upper case mode is started.
-                toggleShift();
                 shiftKeyState.onPress();
+                toggleShift();
             }
         } else {
             // In symbol mode, just toggle symbol and symbol more keyboard.
-            toggleShift();
             shiftKeyState.onPress();
+            toggleShift();
         }
     }
 
diff --git a/java/src/com/android/inputmethod/latin/ModifierKeyState.java b/java/src/com/android/inputmethod/latin/ModifierKeyState.java
index 07a5c4f..8443be4 100644
--- a/java/src/com/android/inputmethod/latin/ModifierKeyState.java
+++ b/java/src/com/android/inputmethod/latin/ModifierKeyState.java
@@ -49,7 +49,7 @@
 
     public void onOtherKeyPressed() {
         final int oldState = mState;
-        if (mState == PRESSING)
+        if (oldState == PRESSING)
             mState = MOMENTARY;
         if (DEBUG)
             Log.d(TAG, mName + ".onOtherKeyPressed: " + toString(oldState) + " > " + this);
@@ -64,7 +64,7 @@
         return toString(mState);
     }
 
-    protected static String toString(int state) {
+    protected String toString(int state) {
         switch (state) {
         case RELEASING: return "RELEASING";
         case PRESSING: return "PRESSING";
diff --git a/java/src/com/android/inputmethod/latin/ShiftKeyState.java b/java/src/com/android/inputmethod/latin/ShiftKeyState.java
index ef13ddc..7412a56 100644
--- a/java/src/com/android/inputmethod/latin/ShiftKeyState.java
+++ b/java/src/com/android/inputmethod/latin/ShiftKeyState.java
@@ -29,9 +29,9 @@
     @Override
     public void onOtherKeyPressed() {
         int oldState = mState;
-        if (mState == PRESSING) {
+        if (oldState == PRESSING) {
             mState = MOMENTARY;
-        } else if (mState == PRESSING_ON_SHIFTED) {
+        } else if (oldState == PRESSING_ON_SHIFTED) {
             mState = IGNORING;
         }
         if (DEBUG)
@@ -58,11 +58,12 @@
         return toString(mState);
     }
 
-    protected static String toString(int state) {
+    @Override
+    protected String toString(int state) {
         switch (state) {
         case PRESSING_ON_SHIFTED: return "PRESSING_ON_SHIFTED";
         case IGNORING: return "IGNORING";
-        default: return ModifierKeyState.toString(state);
+        default: return super.toString(state);
         }
     }
 }
