Index: apps/plugins/calendar.c
===================================================================
--- apps/plugins/calendar.c	(revision 13274)
+++ apps/plugins/calendar.c	(working copy)
@@ -25,6 +25,15 @@
 
 PLUGIN_HEADER
 
+#if CONFIG_KEYPAD == SANSA_E200_PAD
+#define UP     BUTTON_UP
+#define DOWN   BUTTON_DOWN
+#define LEFT   BUTTON_LEFT
+#define RIGHT  BUTTON_RIGHT
+#define BUTTON_PLAY   BUTTON_SELECT
+#define BUTTON_ON BUTTON_POWER 
+#endif
+
 static struct plugin_api* rb;
 
 static bool leap_year;
@@ -109,7 +118,7 @@
     char *Dayname[7] = {"M","T","W","T","F","S","S"};
     int ws = 2;
     rb->lcd_getstringsize("A",&w,&h);
-    for (i = 0; i < 8;)
+    for (i = 0; i < 7;)
     {
         rb->lcd_putsxy(ws, 0 , Dayname[i++]);
         ws += space;
@@ -420,27 +429,40 @@
         if (memos_in_shown_memory > 0)
         {
             rb->lcd_puts(0,0,"Remove : Up");
-            rb->lcd_puts(0,1,"Edit : Down");
+            rb->lcd_puts(0,1,"Edit   : Down");
             rb->lcd_puts(0,2,"New :");
-            rb->lcd_puts(2,3,"weekly : Left");
-            rb->lcd_puts(2,4,"monthly : Play");
+            rb->lcd_puts(2,3,"weekly   : Left");
+            rb->lcd_puts(2,4,"monthly  : Play");
             rb->lcd_puts(2,5,"annually : Right");
-            rb->lcd_puts(2,6,"one off : On");
+            rb->lcd_puts(2,6,"one off  : On");
+	    #ifdef SANSA_E200
+            rb->lcd_puts(2,7,"Return   : Scroll Up");
+	    #endif
+
         }
         else
         {
             rb->lcd_puts(0,0,"New :");
-            rb->lcd_puts(2,1,"weekly : Left");
+            rb->lcd_puts(2,1,"weekly  : Left");
             rb->lcd_puts(2,2,"monthly : Play");
-            rb->lcd_puts(2,3,"anualy : Right");
+            rb->lcd_puts(2,3,"anualy  : Right");
             rb->lcd_puts(2,4,"one off : On");
+	    #ifdef SANSA_E200
+            rb->lcd_puts(2,5,"Return  : Scroll Up");
+	    #endif
         }
         rb->lcd_update();
         button = rb->button_get(true);
         switch (button)
         {
+
+	    #ifdef SANSA_E200
+            case BUTTON_SCROLL_UP:
+                return false;
+	    #else
             case BUTTON_OFF:
                 return false;
+	    #endif
 
             case BUTTON_LEFT:
                 add_memo(shown,0);
@@ -590,10 +612,13 @@
 
             case BUTTON_PLAY:
                 return edit_memo(lines_displayed, shown);
-
+#ifdef SANSA_E200
+            case BUTTON_ON:
+                return false;
+#else
             case BUTTON_OFF:
                 return false;
-
+#endif
             default:
                 if(rb->default_event_handler(button) == SYS_USB_CONNECTED)
                     been_in_usb_mode = true;
@@ -679,6 +704,33 @@
         button = rb->button_get(true);
         switch (button)
         {
+
+#ifdef SANSA_E200
+
+            case BUTTON_ON:
+                return false;
+
+            case BUTTON_DOWN:
+            case BUTTON_DOWN | BUTTON_REPEAT:
+                next_month(&shown, 0);
+                break;
+
+            case BUTTON_UP:
+            case BUTTON_UP | BUTTON_REPEAT:
+                prev_month(&shown, 0);
+                break;
+
+            case BUTTON_SCROLL_DOWN:
+            case BUTTON_SCROLL_DOWN | BUTTON_REPEAT:
+                next_day(&shown, 7);
+                break;
+
+            case BUTTON_SCROLL_UP:
+            case BUTTON_SCROLL_UP | BUTTON_REPEAT:
+                prev_day(&shown, 7);
+                break;
+
+#else
             case BUTTON_OFF:
                 return false;
 
@@ -702,6 +754,8 @@
                 prev_day(&shown, 7);
                 break;
 
+#endif
+
             case BUTTON_LEFT:
             case BUTTON_LEFT | BUTTON_REPEAT:
                 prev_day(&shown, 1);
