diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 291cc8d..d093f7e 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -499,7 +499,7 @@
             }
         }
 
-        if (key.altCodeWhileTyping() && sTimerProxy.isTypingState()) {
+        if (altersCode) {
             final int altCode = key.getAltCode();
             final Key altKey = mKeyboard.getKey(altCode);
             if (altKey != null) {
@@ -576,40 +576,29 @@
         return sPointerTrackerQueue.getOldestElement() == this;
     }
 
-    private void mayStartBatchInput(final Key key) {
-        if (sInGesture || !mGestureStrokeWithPreviewPoints.isStartOfAGesture()) {
-            return;
-        }
-        if (key == null || !Character.isLetter(key.getCode())) {
-            return;
+    /**
+     * Determines whether the batch input has started or not.
+     * @return true if the batch input has started successfully.
+     */
+    private boolean mayStartBatchInput() {
+        if (!mGestureStrokeWithPreviewPoints.isStartOfAGesture()) {
+            return false;
         }
         if (DEBUG_LISTENER) {
             Log.d(TAG, String.format("[%d] onStartBatchInput", mPointerId));
         }
-        sInGesture = true;
         synchronized (sAggregatedPointers) {
             sAggregatedPointers.reset();
             sLastRecognitionPointSize = 0;
             sLastRecognitionTime = 0;
             sListener.onStartBatchInput();
             dismissAllMoreKeysPanels();
+            sTimerProxy.cancelLongPressTimerOf(this);
         }
-        sTimerProxy.cancelLongPressTimerOf(this);
-        // A gesture floating preview text will be shown at the oldest pointer/finger on the screen.
-        sDrawingProxy.showGestureTrail(
-                this, isOldestTrackerInQueue() /* showsFloatingPreviewText */);
+        return true;
     }
 
-    public void updateBatchInputByTimer(final long eventTime) {
-        final int gestureTime = (int)(eventTime - sGestureFirstDownTime);
-        mGestureStrokeWithPreviewPoints.duplicateLastPointWith(gestureTime);
-        updateBatchInput(eventTime);
-    }
-
-    private void mayUpdateBatchInput(final long eventTime, final Key key) {
-        if (key != null) {
-            updateBatchInput(eventTime);
-        }
+    private void showGestureTrail() {
         if (mIsTrackingForActionDisabled) {
             return;
         }
@@ -618,13 +607,19 @@
                 this, isOldestTrackerInQueue() /* showsFloatingPreviewText */);
     }
 
-    private void updateBatchInput(final long eventTime) {
+    public void updateBatchInputByTimer(final long syntheticMoveEventTime) {
+        final int gestureTime = (int)(syntheticMoveEventTime - sGestureFirstDownTime);
+        mGestureStrokeWithPreviewPoints.duplicateLastPointWith(gestureTime);
+        updateBatchInput(syntheticMoveEventTime);
+    }
+
+    private void updateBatchInput(final long moveEventTime) {
         synchronized (sAggregatedPointers) {
             final GestureStroke stroke = mGestureStrokeWithPreviewPoints;
             stroke.appendIncrementalBatchPoints(sAggregatedPointers);
             final int size = sAggregatedPointers.getPointerSize();
             if (size > sLastRecognitionPointSize
-                    && stroke.hasRecognitionTimePast(eventTime, sLastRecognitionTime)) {
+                    && stroke.hasRecognitionTimePast(moveEventTime, sLastRecognitionTime)) {
                 if (DEBUG_LISTENER) {
                     Log.d(TAG, String.format("[%d] onUpdateBatchInput: batchPoints=%d", mPointerId,
                             size));
@@ -634,17 +629,23 @@
                 // The listener may change the size of the pointers (when auto-committing
                 // for example), so we need to get the size from the pointers again.
                 sLastRecognitionPointSize = sAggregatedPointers.getPointerSize();
-                sLastRecognitionTime = eventTime;
+                sLastRecognitionTime = moveEventTime;
             }
         }
     }
 
-    private void mayEndBatchInput(final long eventTime) {
+    /**
+     * Determines whether the batch input has ended successfully or continues.
+     * @param upEventTime the event time of this pointer up.
+     * @return true if the batch input has ended successfully, false if it continues.
+     */
+    private boolean mayEndBatchInput(final long upEventTime) {
+        boolean hasEndBatchInputSuccessfully = false;
         synchronized (sAggregatedPointers) {
             mGestureStrokeWithPreviewPoints.appendAllBatchPoints(sAggregatedPointers);
             if (getActivePointerTrackerCount() == 1) {
-                sInGesture = false;
-                sTypingTimeRecorder.onEndBatchInput(eventTime);
+                hasEndBatchInputSuccessfully = true;
+                sTypingTimeRecorder.onEndBatchInput(upEventTime);
                 sTimerProxy.cancelAllUpdateBatchInputTimers();
                 if (!mIsTrackingForActionDisabled) {
                     if (DEBUG_LISTENER) {
@@ -655,12 +656,7 @@
                 }
             }
         }
-        if (mIsTrackingForActionDisabled) {
-            return;
-        }
-        // A gesture floating preview text will be shown at the oldest pointer/finger on the screen.
-        sDrawingProxy.showGestureTrail(
-                this, isOldestTrackerInQueue() /* showsFloatingPreviewText */);
+        return hasEndBatchInputSuccessfully;
     }
 
     private void cancelBatchInput() {
@@ -815,28 +811,35 @@
 
     private void onGestureMoveEvent(final int x, final int y, final long eventTime,
             final boolean isMajorEvent, final Key key) {
+        if (!mIsDetectingGesture) {
+            return;
+        }
+        final int beforeLength = mGestureStrokeWithPreviewPoints.getLength();
         final int gestureTime = (int)(eventTime - sGestureFirstDownTime);
-        if (mIsDetectingGesture) {
-            final int beforeLength = mGestureStrokeWithPreviewPoints.getLength();
-            final boolean onValidArea = mGestureStrokeWithPreviewPoints.addPointOnKeyboard(
-                    x, y, gestureTime, isMajorEvent);
-            if (mGestureStrokeWithPreviewPoints.getLength() > beforeLength) {
-                sTimerProxy.startUpdateBatchInputTimer(this);
+        final boolean onValidArea = mGestureStrokeWithPreviewPoints.addPointOnKeyboard(
+                x, y, gestureTime, isMajorEvent);
+        if (mGestureStrokeWithPreviewPoints.getLength() > beforeLength) {
+            sTimerProxy.startUpdateBatchInputTimer(this);
+        }
+        // If the move event goes out from valid batch input area, cancel batch input.
+        if (!onValidArea) {
+            cancelBatchInput();
+            return;
+        }
+        // If the MoreKeysPanel is showing then do not attempt to enter gesture mode. However,
+        // the gestured touch points are still being recorded in case the panel is dismissed.
+        if (isShowingMoreKeysPanel()) {
+            return;
+        }
+        if (!sInGesture && key != null && Character.isLetter(key.getCode())
+                && mayStartBatchInput()) {
+            sInGesture = true;
+        }
+        if (sInGesture) {
+            if (key != null) {
+                updateBatchInput(eventTime);
             }
-            // If the move event goes out from valid batch input area, cancel batch input.
-            if (!onValidArea) {
-                cancelBatchInput();
-                return;
-            }
-            // If the MoreKeysPanel is showing then do not attempt to enter gesture mode. However,
-            // the gestured touch points are still being recorded in case the panel is dismissed.
-            if (isShowingMoreKeysPanel()) {
-                return;
-            }
-            mayStartBatchInput(key);
-            if (sInGesture) {
-                mayUpdateBatchInput(eventTime, key);
-            }
+            showGestureTrail();
         }
     }
 
@@ -1087,7 +1090,10 @@
             if (currentKey != null) {
                 callListenerOnRelease(currentKey, currentKey.getCode(), true /* withSliding */);
             }
-            mayEndBatchInput(eventTime);
+            if (mayEndBatchInput(eventTime)) {
+                sInGesture = false;
+            }
+            showGestureTrail();
             return;
         }
 
