diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 4e1c56cba1a0312dd3594362799acfe5c9de3acf..bc42dff847efbb994b3cd90979fb51295911f0e4 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -27,6 +27,7 @@ import com.android.inputmethod.latin.Utils.RingCharBuffer;
 import com.android.inputmethod.voice.VoiceIMEConnector;
 
 import android.app.AlertDialog;
+import android.app.Dialog;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -35,6 +36,7 @@ import android.content.IntentFilter;
 import android.content.SharedPreferences;
 import android.content.res.Configuration;
 import android.content.res.Resources;
+import android.graphics.Region;
 import android.inputmethodservice.InputMethodService;
 import android.media.AudioManager;
 import android.os.Debug;
@@ -862,6 +864,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         if (!isFullscreenMode()) {
             outInsets.contentTopInsets = outInsets.visibleTopInsets;
         }
+        KeyboardView inputView = mKeyboardSwitcher.getInputView();
+        if (inputView != null) {
+            // Screen's heightPixels may be too big, but want to make
+            // it large enough to cover status bar in any cases.
+            outInsets.touchableInsets = InputMethodService.Insets.TOUCHABLE_INSETS_REGION;
+            outInsets.touchableRegion.set(
+                    0, 0, inputView.getWidth(), getResources().getDisplayMetrics().heightPixels);
+        }
     }
 
     @Override