Index: progfind.cpp
===================================================================
--- progfind.cpp	(revision 13460)
+++ progfind.cpp	(working copy)
@@ -190,6 +190,8 @@
             pageUp();
         else if (action == "PAGEDOWN")
             pageDown();
+        else if (action == "5")
+            pageMiddle();
         else if (action == "SELECT" || action == "INFO")
             select();
         else if (action == "CUSTOMEDIT")
@@ -702,6 +704,37 @@
     }
 }
 
+void ProgFinder::pageMiddle()
+{
+    if (inSearch == 0)
+    {
+        curSearch = searchCount / 2 + 10 - 1;
+
+        if (gotInitData[curSearch] <= 1)
+            clearProgramList();
+        else
+            showSearchList();
+    }
+    if (inSearch == 1)
+    {
+        if (listCount > showsPerListing)
+        {
+          curProgram = listCount / 2 - 1;
+
+          showProgramList();
+        }
+    }
+    if (inSearch == 2)
+    {
+        if (showCount > showsPerListing)
+        {
+          curShow = showCount / 2 - 1;
+
+          showShowingList();
+        }
+    }
+}
+
 void ProgFinder::cursorUp()
 {
     if (inSearch == 0)
Index: progfind.h
===================================================================
--- progfind.h	(revision 13460)
+++ progfind.h	(working copy)
@@ -47,6 +47,7 @@
     void showGuide();
     void pageUp();
     void pageDown();
+    void pageMiddle();
     void select();
     void customEdit();
     void upcoming();
