Index: firmware/backlight.c =================================================================== RCS file: /cvsroot/rockbox/firmware/backlight.c,v retrieving revision 1.70 diff -u -r1.70 backlight.c --- firmware/backlight.c 16 Jan 2006 14:45:03 -0000 1.70 +++ firmware/backlight.c 16 Jan 2006 17:42:49 -0000 @@ -461,6 +461,14 @@ queue_post(&backlight_queue, BACKLIGHT_OFF, NULL); } +bool is_backlight_on(void) +{ + if (backlight_timer != 0 || backlight_get_current_timeout() == 0) + return true; + else + return false; +} + /* return value in ticks; 0 means always on, <0 means always off */ int backlight_get_current_timeout(void) { Index: firmware/drivers/button.c =================================================================== RCS file: /cvsroot/rockbox/firmware/drivers/button.c,v retrieving revision 1.107 diff -u -r1.107 button.c --- firmware/drivers/button.c 12 Jan 2006 00:35:50 -0000 1.107 +++ firmware/drivers/button.c 16 Jan 2006 17:42:49 -0000 @@ -663,7 +663,13 @@ if (data < 0x50) if (data < 0x30) if (data < 0x10) - btn = BUTTON_SELECT; + if (is_backlight_on()) + btn = BUTTON_SELECT; + else + { + backlight_on(); + return -1; + } else btn = BUTTON_UP; else Index: firmware/export/backlight.h =================================================================== RCS file: /cvsroot/rockbox/firmware/export/backlight.h,v retrieving revision 1.12 diff -u -r1.12 backlight.h --- firmware/export/backlight.h 22 Dec 2005 13:31:14 -0000 1.12 +++ firmware/export/backlight.h 16 Jan 2006 17:42:49 -0000 @@ -21,6 +21,7 @@ #include "config.h" +bool is_backlight_on(void); void backlight_on(void); void backlight_off(void); void backlight_set_timeout(int index);