diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 1aec0012964e6eca8285d726d466d7be818c4495..f1a35b212fde5dcf1835935cc9bd257e2b02a186 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -87,7 +87,6 @@ public class Keyboard {
     public static final int CODE_CLOSING_SQUARE_BRACKET = ']';
     public static final int CODE_CLOSING_CURLY_BRACKET = '}';
     public static final int CODE_CLOSING_ANGLE_BRACKET = '>';
-    private static final int MINIMUM_LETTER_CODE = CODE_TAB;
 
     /** Special keys code. Must be negative.
      * These should be aligned with KeyboardCodesSet.ID_TO_NAME[],
@@ -217,7 +216,7 @@ public class Keyboard {
     }
 
     public static boolean isLetterCode(int code) {
-        return code >= MINIMUM_LETTER_CODE;
+        return code >= CODE_SPACE;
     }
 
     public static class Params {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureTracker.java b/java/src/com/android/inputmethod/keyboard/internal/GestureTracker.java
index f9891144513ca36cdaa887d6ffdbf417f6ce2d40..dfd697a7ad26504c6f4785ed66f6745020e0df92 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureTracker.java
@@ -104,7 +104,8 @@ public class GestureTracker {
 
     public void onDownEvent(PointerTracker tracker, int x, int y, long eventTime, Key key) {
         mIsPossibleGesture = false;
-        if (GESTURE_ON && mIsAlphabetKeyboard && key != null && !key.isModifier()) {
+        // A gesture should start only from the letter key.
+        if (GESTURE_ON && mIsAlphabetKeyboard && key != null && Keyboard.isLetterCode(key.mCode)) {
             mIsPossibleGesture = true;
             addPointToStroke(x, y, 0, tracker.mPointerId, false);
         }