Index: apps/plugins/calendar.c
===================================================================
--- apps/plugins/calendar.c	(revision 13252)
+++ apps/plugins/calendar.c	(working copy)
@@ -25,6 +25,18 @@
 
 PLUGIN_HEADER
 
+#if CONFIG_KEYPAD == SANSA_E200_PAD
+#define UP     BUTTON_UP
+#define DOWN   BUTTON_DOWN
+#define BUTTON_S_UP     BUTTON_SCROLL_UP
+#define BUTTON_S_DOWN   BUTTON_SCROLL_DOWN
+#define LEFT   BUTTON_LEFT
+#define RIGHT  BUTTON_RIGHT
+#define BUTTON_PLAY   BUTTON_SELECT
+#define BUTTON_OFF    BUTTON_REC 
+#define BUTTON_ON BUTTON_POWER 
+#endif
+
 static struct plugin_api* rb;
 
 static bool leap_year;
@@ -109,7 +121,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;
@@ -117,6 +129,10 @@
     rb->lcd_drawline(0 ,h ,LCD_WIDTH-1 ,h);
 }
 
+
+
+
+
 static bool day_has_memo[31];
 static bool wday_has_memo[6];
 static void draw_calendar(struct shown *shown)
@@ -420,27 +436,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_S_UP:
+                return false;
+	    #else
             case BUTTON_OFF:
                 return false;
+	    #endif
 
             case BUTTON_LEFT:
                 add_memo(shown,0);
@@ -682,6 +711,29 @@
             case BUTTON_OFF:
                 return false;
 
+#ifdef SANSA_E200
+
+            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_S_DOWN:
+            case BUTTON_S_DOWN | BUTTON_REPEAT:
+                next_day(&shown, 7);
+                break;
+
+            case BUTTON_S_UP:
+            case BUTTON_S_UP | BUTTON_REPEAT:
+                prev_day(&shown, 7);
+                break;
+
+#else
             case BUTTON_ON | BUTTON_DOWN:
             case BUTTON_ON | BUTTON_DOWN | BUTTON_REPEAT:
                 next_month(&shown, 0);
@@ -702,6 +754,8 @@
                 prev_day(&shown, 7);
                 break;
 
+#endif
+
             case BUTTON_LEFT:
             case BUTTON_LEFT | BUTTON_REPEAT:
                 prev_day(&shown, 1);
