Index: apps/plugins/lamp.c
===================================================================
--- apps/plugins/lamp.c	(リビジョン 28446)
+++ apps/plugins/lamp.c	(作業コピー)
@@ -25,42 +25,56 @@
 #include "plugin.h"
 #include "lib/helper.h"
 
-
-
-/* variable button definitions - only targets with a colour display */
-#if defined(HAVE_LCD_COLOR)
+/* variable button definitions.
+ - only targets with a colour display
+    LAMP_LEFT / LAMP_RIGHT: to change the color
+    LAMP_NEXT / LAMP_PREV:  (optional) to change the color
+ - only targets which can set brightness
+    LAMP_UP / LAMP_DOWN:    to change the brightness
+*/
+#if defined(HAVE_LCD_COLOR) || defined(HAVE_BACKLIGHT_BRIGHTNESS)
 #if (CONFIG_KEYPAD == IRIVER_H300_PAD)
 #   define LAMP_LEFT       BUTTON_LEFT
 #   define LAMP_RIGHT      BUTTON_RIGHT
+#   define LAMP_UP         BUTTON_UP
+#   define LAMP_DOWN       BUTTON_DOWN
 
 #elif (CONFIG_KEYPAD == IPOD_4G_PAD)
 #   define LAMP_LEFT       BUTTON_LEFT
 #   define LAMP_RIGHT      BUTTON_RIGHT
-#   define LAMP_NEXT       BUTTON_SCROLL_FWD
-#   define LAMP_PREV       BUTTON_SCROLL_BACK
+#   define LAMP_UP         BUTTON_SCROLL_FWD
+#   define LAMP_DOWN       BUTTON_SCROLL_BACK
 
 #elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
 #   define LAMP_LEFT       BUTTON_LEFT
 #   define LAMP_RIGHT      BUTTON_RIGHT
+#   define LAMP_UP         BUTTON_UP
+#   define LAMP_DOWN       BUTTON_DOWN
 
 #elif (CONFIG_KEYPAD == GIGABEAT_PAD)
 #   define LAMP_LEFT       BUTTON_LEFT
 #   define LAMP_RIGHT      BUTTON_RIGHT
+#   define LAMP_UP         BUTTON_UP
+#   define LAMP_DOWN       BUTTON_DOWN
 
 #elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
 #   define LAMP_LEFT       BUTTON_LEFT
 #   define LAMP_RIGHT      BUTTON_RIGHT
+#   define LAMP_UP         BUTTON_UP
+#   define LAMP_DOWN       BUTTON_DOWN
 
 #elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
       (CONFIG_KEYPAD == SANSA_FUZE_PAD)
 #   define LAMP_LEFT       BUTTON_LEFT
 #   define LAMP_RIGHT      BUTTON_RIGHT
-#   define LAMP_NEXT       BUTTON_SCROLL_FWD
-#   define LAMP_PREV       BUTTON_SCROLL_BACK
+#   define LAMP_UP         BUTTON_SCROLL_FWD
+#   define LAMP_DOWN       BUTTON_SCROLL_BACK
 
 #elif (CONFIG_KEYPAD == SANSA_C200_PAD)
 #   define LAMP_LEFT       BUTTON_LEFT
 #   define LAMP_RIGHT      BUTTON_RIGHT
+#   define LAMP_UP         BUTTON_UP
+#   define LAMP_DOWN       BUTTON_DOWN
 
 #elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
 #   define LAMP_LEFT       BUTTON_LEFT
@@ -81,10 +95,14 @@
 #elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD
 #   define LAMP_LEFT       BUTTON_LEFT
 #   define LAMP_RIGHT      BUTTON_RIGHT
+#   define LAMP_UP         BUTTON_UP
+#   define LAMP_DOWN       BUTTON_DOWN
 
 #elif CONFIG_KEYPAD == PHILIPS_SA9200_PAD
 #   define LAMP_LEFT       BUTTON_PREV
 #   define LAMP_RIGHT      BUTTON_NEXT
+#   define LAMP_UP         BUTTON_UP
+#   define LAMP_DOWN       BUTTON_DOWN
 
 #elif CONFIG_KEYPAD == ONDAVX747_PAD
 #   define LAMP_LEFT       BUTTON_VOL_DOWN
@@ -99,11 +117,17 @@
 #elif CONFIG_KEYPAD == PBELL_VIBE500_PAD
 #   define LAMP_LEFT       BUTTON_PREV
 #   define LAMP_RIGHT      BUTTON_NEXT
+#   define LAMP_UP         BUTTON_UP
+#   define LAMP_DOWN       BUTTON_DOWN
 
+#elif CONFIG_KEYPAD == MPIO_HD200_PAD
+#   define LAMP_UP         BUTTON_REW
+#   define LAMP_DOWN       BUTTON_FF
+
 #else
 #   error Missing key definitions for this keypad
 #endif
-#endif
+#endif /* HAVE_LCD_COLOR || HAVE_BACKLIGHT_BRIGHTNESS */
 
 #ifdef HAVE_TOUCHSCREEN
 # ifndef LAMP_LEFT
@@ -112,11 +136,11 @@
 # ifndef LAMP_RIGHT
 #   define LAMP_RIGHT      BUTTON_MIDRIGHT
 # endif
-# ifndef LAMP_NEXT
-#   define LAMP_NEXT       BUTTON_TOPMIDDLE
+# ifndef LAMP_UP
+#   define LAMP_UP         BUTTON_TOPMIDDLE
 # endif
-# ifndef LAMP_PREV
-#   define LAMP_PREV       BUTTON_BOTTOMMIDDLE
+# ifndef LAMP_DOWN
+#   define LAMP_DOWN       BUTTON_BOTTOMMIDDLE
 # endif
 #endif
 
@@ -134,12 +158,12 @@
 {
     enum plugin_status status = PLUGIN_OK;
     long button;
+    bool quit = false;
     (void)parameter;
 
 #ifdef HAVE_LCD_COLOR
     int cs = 0;
-    bool quit = false;
-    bool update = true;
+    bool update = false;
 #endif /* HAVE_LCD_COLOR */
 
 #if LCD_DEPTH > 1
@@ -149,6 +173,7 @@
 #endif
 
 #ifdef HAVE_BACKLIGHT_BRIGHTNESS
+    int current_brightness = MAX_BRIGHTNESS_SETTING;
     backlight_brightness_set(MAX_BRIGHTNESS_SETTING);
 #endif /* HAVE_BACKLIGHT_BRIGHTNESS */
 #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
@@ -168,9 +193,12 @@
     buttonlight_force_on();
 #endif /* HAVE_BUTTON_LIGHT */
 
-#ifdef HAVE_LCD_COLOR
+    rb->lcd_clear_display();
+    rb->lcd_update();
+
     do
     {
+#ifdef HAVE_LCD_COLOR
         if(update)
         {
             if(cs < 0)
@@ -182,9 +210,11 @@
             rb->lcd_update();
             update = false;
         }
+#endif /* HAVE_LCD_COLOR */
 
         switch((button = rb->button_get_w_tmo(HZ*30)))
         {
+#ifdef HAVE_LCD_COLOR
             case LAMP_RIGHT:
 #ifdef LAMP_NEXT
             case LAMP_NEXT:
@@ -200,7 +230,24 @@
                 cs--;
                 update = true;
                 break;
+#endif /* HAVE_LCD_COLOR */
 
+#ifdef HAVE_BACKLIGHT_BRIGHTNESS
+            case LAMP_UP:
+            case (LAMP_UP|BUTTON_REPEAT):
+                if (current_brightness < MAX_BRIGHTNESS_SETTING) {
+                    backlight_brightness_set(++current_brightness);
+                }
+                break;
+
+            case LAMP_DOWN:
+            case (LAMP_DOWN|BUTTON_REPEAT):
+                if (current_brightness > MIN_BRIGHTNESS_SETTING) {
+                    backlight_brightness_set(--current_brightness);
+                }
+                break;
+#endif /* HAVE_BACKLIGHT_BRIGHTNESS */
+
             default:
                 if(button)
                 {
@@ -218,28 +265,6 @@
         rb->reset_poweroff_timer();
     } while (!quit);
 
-#else /* HAVE_LCD_COLOR */
-    rb->lcd_clear_display();
-    rb->lcd_update();
-    /* wait */
-    do
-    {
-        button = rb->button_get_w_tmo(HZ*30);
-        if(button)
-        {
-            if(rb->default_event_handler(button) == SYS_USB_CONNECTED)
-            {
-                status = PLUGIN_USB_CONNECTED;
-                break;
-            }
-            if(!IS_SYSEVENT(button))
-                break;
-        }
-        rb->reset_poweroff_timer();
-    } while (1);
-
-#endif /*HAVE_LCD_COLOR */
-
     /* restore */
     backlight_use_settings();
 #ifdef HAVE_BUTTON_LIGHT
Index: manual/plugins/lamp.tex
===================================================================
--- manual/plugins/lamp.tex	(リビジョン 28446)
+++ manual/plugins/lamp.tex	(作業コピー)
@@ -11,7 +11,20 @@
         & }
     Toggle between colours
         \\
-        
+  }
+
+  \opt{backlight_brightness}{
+    \nopt{IPOD_4G_PAD,SANSA_E200_PAD,SANSA_FUZE_PAD,touchscreen}{\ButtonDown{} / \ButtonUp}%
+    \opt{IPOD_4G_PAD,SANSA_E200_PAD,SANSA_FUZE_PAD}{\ButtonScrollBack{} / \ButtonScrollFwd}
+    \opt{touchscreen}{\TouchBottomMiddle{} / \TouchTopMiddle}
+        &
+    \opt{HAVEREMOTEKEYMAP}{
+        & }
+    Change the brightness
+        \\
+  }
+
+  \opt{lcd_color,backlight_brightness}{
     Any other key
         &
     \opt{HAVEREMOTEKEYMAP}{
@@ -19,7 +32,7 @@
     Quit
         \\
   }
-  \nopt{lcd_color}{
+  \nopt{lcd_color,backlight_brightness}{
     Any key
         &
     \opt{HAVEREMOTEKEYMAP}{
