diff --git a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
index 031624a..b1afff5 100644
--- a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
+++ b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
@@ -33,6 +33,7 @@
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.states.InternalStateHandler;
+import com.android.quickstep.views.RecentsView;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
 
 /**
@@ -65,6 +66,12 @@
         homeIntent.setComponent(launcher).setPackage(null);
     }
 
+    private void openRecents() {
+        Intent intent = addToIntent(new Intent(homeIntent));
+        mContext.startActivity(intent);
+        initWhenReady();
+    }
+
     public void onOverviewToggle() {
         if (DEBUG_START_FALLBACK_ACTIVITY) {
             mContext.startActivity(new Intent(mContext, RecentsActivity.class)
@@ -79,17 +86,30 @@
             boolean isQuickTap = elapsedTime < ViewConfiguration.getDoubleTapTimeout();
             startNonLauncherTask(isQuickTap ? 2 : 1);
         } else {
-            Intent intent = addToIntent(new Intent(homeIntent));
-            mContext.startActivity(intent);
-            initWhenReady();
+            openRecents();
         }
     }
 
+    public void onOverviewShown() {
+        if (isOverviewAlmostVisible()) {
+            final RecentsView rv = getLauncher().getOverviewPanel();
+            rv.selectNextTask();
+        } else {
+            openRecents();
+        }
+    }
+
+    public void onOverviewHidden() {
+        final RecentsView rv = getLauncher().getOverviewPanel();
+        rv.launchCurrentTask();
+    }
+
     private void startNonLauncherTask(int backStackCount) {
         for (RecentTaskInfo rti : mAM.getRecentTasks(backStackCount, UserHandle.myUserId())) {
             backStackCount--;
             if (backStackCount == 0) {
                 mAM.startActivityFromRecents(rti.id, null);
+                break;
             }
         }
     }
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index a522ef1..1d25fc2 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -62,6 +62,7 @@
 public class TouchInteractionService extends Service {
 
     public static final boolean DEBUG_SHOW_OVERVIEW_BUTTON = false;
+    public static final boolean DEBUG_OPEN_OVERVIEW_VIA_ALT_TAB = false;
 
     private static final SparseArray<String> sMotionEventNames;
 
@@ -140,10 +141,18 @@
         }
 
         @Override
-        public void onOverviewShown(boolean triggeredFromAltTab) { }
+        public void onOverviewShown(boolean triggeredFromAltTab) {
+            if (DEBUG_OPEN_OVERVIEW_VIA_ALT_TAB) {
+                mOverviewCommandHelper.onOverviewShown();
+            }
+        }
 
         @Override
-        public void onOverviewHidden(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { }
+        public void onOverviewHidden(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {
+            if (DEBUG_OPEN_OVERVIEW_VIA_ALT_TAB) {
+                mOverviewCommandHelper.onOverviewHidden();
+            }
+        }
     };
 
     private final TouchConsumer mNoOpTouchConsumer = (ev) -> {};
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 23e6e5b..14476f7 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -32,6 +32,7 @@
 import android.os.Build;
 import android.util.AttributeSet;
 import android.util.SparseBooleanArray;
+import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
 
@@ -585,4 +586,26 @@
         anim.setDuration(duration).setInterpolator(interpolator);
         set.play(anim);
     }
+
+    @Override
+    public boolean dispatchKeyEvent(KeyEvent event) {
+        if (event.getKeyCode() == KeyEvent.KEYCODE_TAB
+                && event.getAction() == KeyEvent.ACTION_DOWN) {
+            setCurrentPage((getCurrentPage()
+                    + (event.isShiftPressed() ? getPageCount() - 1 : 1)) % getPageCount());
+            loadVisibleTaskData();
+            return true;
+        }
+        return super.dispatchKeyEvent(event);
+    }
+
+    public void selectNextTask() {
+        setCurrentPage((getCurrentPage() + 1) % getPageCount());
+        loadVisibleTaskData();
+    }
+
+    public void launchCurrentTask() {
+        final TaskView currentTask = (TaskView) getChildAt(getCurrentPage());
+        currentTask.launchTask(true);
+    }
 }
