Index: src/Project.cpp
===================================================================
--- src/Project.cpp	(revision 11258)
+++ src/Project.cpp	(working copy)
@@ -1648,6 +1648,14 @@
    if (event.GetKeyCode() == WXK_CONTROL)
       mTrackPanel->HandleControlKey(true);
 
+   // Allow PageUp and PageDown keys to 
+   //scroll the Track Panel left and right
+   if (event.GetKeyCode() == WXK_PAGEUP)
+      mTrackPanel->HandlePageUpKey();
+   
+   if (event.GetKeyCode() == WXK_PAGEDOWN)
+      mTrackPanel->HandlePageDownKey();
+
    // If a window has captured the keyboard, then allow it
    // first dibs at the event.  If it does an event.Skip(false)
    // then allow the event to process as normal, bypassing the
Index: src/TrackPanel.cpp
===================================================================
--- src/TrackPanel.cpp	(revision 11258)
+++ src/TrackPanel.cpp	(working copy)
@@ -1370,6 +1370,18 @@
    HandleCursorForLastMouseEvent();
 }
 
+void TrackPanel::HandlePageUpKey()
+{
+   mListener->TP_ScrollWindow((mViewInfo->h + mViewInfo->screen) +
+      (mViewInfo->screen / 6));
+}
+
+void TrackPanel::HandlePageDownKey()
+{
+   mListener->TP_ScrollWindow((mViewInfo->h - mViewInfo->screen) +
+      (mViewInfo->screen / 6));
+}
+
 void TrackPanel::HandleCursorForLastMouseEvent()
 {
    HandleCursor(mLastMouseEvent);
Index: src/TrackPanel.h
===================================================================
--- src/TrackPanel.h	(revision 11258)
+++ src/TrackPanel.h	(working copy)
@@ -213,6 +213,8 @@
 
    void HandleShiftKey(bool down);
    void HandleControlKey(bool down);
+   void HandlePageUpKey();
+   void HandlePageDownKey();
    AudacityProject * GetProject() const;
 
    void OnPrevTrack(bool shift = false);
