diff -Nurb rockbox.orig/apps/lang/english.lang rockbox.bl/apps/lang/english.lang --- rockbox.orig/apps/lang/english.lang 2007-12-31 22:36:52.000000000 +0200 +++ rockbox.bl/apps/lang/english.lang 2008-01-15 16:56:14.000000000 +0200 @@ -11540,3 +11540,72 @@ *: "Save Sound Settings" + + id: LANG_BACKLIGHT_FILTER_BUTTONS + desc: in settings + user: + + *: "Backlight On Buttons" + + + *: "Backlight On Buttons" + + + *: "Backlight On Buttons" + + + + id: LANG_BACKLIGHT_FILTER_BUTTONS_ALL + desc: in settings + user: + + *: "All" + + + *: "All" + + + *: "All" + + + + id: LANG_BACKLIGHT_FILTER_BUTTONS_SELECTED + desc: in settings + user: + + *: "Selected only" + ipod*: "PLAY, SELECT and MENU" + h10: "POWER only" + ifp7xx: "SELECT and PLAY" + gigabeatf: "POWER, SELECT and MENU" + c200,e200,x5,e5: "POWER and SELECT" + h100,h120,h300: "ON, OFF and SELECT" + recorderv2: "ON and OFF" + ondiosp: "OFF and MENU" + player: "ON and MENU" + + + *: "Selected only" + ipod*: "PLAY, SELECT and MENU" + h10: "POWER only" + ifp7xx: "SELECT and PLAY" + gigabeatf: "POWER, SELECT and MENU" + c200,e200,x5,e5: "POWER and SELECT" + h100,h120,h300: "ON, OFF and SELECT" + recorderv2: "ON and OFF" + ondiosp: "OFF and MENU" + player: "ON and MENU" + + + *: "Selected only" + ipod*: "PLAY, SELECT and MENU" + h10: "POWER only" + ifp7xx: "SELECT and PLAY" + gigabeatf: "POWER, SELECT and MENU" + c200,e200,x5,e5: "POWER and SELECT" + h100,h120,h300: "ON, OFF and SELECT" + recorderv2: "ON and OFF" + ondiosp: "OFF and MENU" + player: "ON and MENU" + + diff -Nurb rockbox.orig/apps/menus/display_menu.c rockbox.bl/apps/menus/display_menu.c --- rockbox.orig/apps/menus/display_menu.c 2007-12-31 22:36:52.000000000 +0200 +++ rockbox.bl/apps/menus/display_menu.c 2007-12-31 22:43:13.000000000 +0200 @@ -57,6 +57,17 @@ } return action; } +int filterbuttons_callback(int action,const struct menu_item_ex *this_item) +{ + (void)this_item; + switch (action) + { + case ACTION_EXIT_MENUITEM: + set_backlight_filter_buttons(global_settings.bl_filter_buttons); + break; + } + return action; +} #endif #ifdef HAVE_LCD_BITMAP int flipdisplay_callback(int action,const struct menu_item_ex *this_item) @@ -97,6 +108,9 @@ MENUITEM_SETTING(bl_filter_first_keypress, &global_settings.bl_filter_first_keypress, filterfirstkeypress_callback); +MENUITEM_SETTING(bl_filter_buttons, + &global_settings.bl_filter_buttons, + filterbuttons_callback); #ifdef HAVE_LCD_SLEEP MENUITEM_SETTING(lcd_sleep_after_backlight_off, &global_settings.lcd_sleep_after_backlight_off, NULL); @@ -133,6 +147,7 @@ ,&backlight_fade_in, &backlight_fade_out # endif ,&bl_filter_first_keypress + ,&bl_filter_buttons # ifdef HAVE_LCD_SLEEP ,&lcd_sleep_after_backlight_off # endif diff -Nurb rockbox.orig/apps/settings.c rockbox.bl/apps/settings.c --- rockbox.orig/apps/settings.c 2007-12-31 22:36:53.000000000 +0200 +++ rockbox.bl/apps/settings.c 2007-12-31 22:43:13.000000000 +0200 @@ -915,6 +915,7 @@ #ifdef HAVE_BACKLIGHT set_backlight_filter_keypress(global_settings.bl_filter_first_keypress); + set_backlight_filter_buttons(global_settings.bl_filter_buttons); #ifdef HAVE_REMOTE_LCD set_remote_backlight_filter_keypress(global_settings.remote_bl_filter_first_keypress); #endif diff -Nurb rockbox.orig/apps/settings.h rockbox.bl/apps/settings.h --- rockbox.orig/apps/settings.h 2007-12-31 22:36:53.000000000 +0200 +++ rockbox.bl/apps/settings.h 2008-01-15 15:46:56.000000000 +0200 @@ -629,6 +629,7 @@ #ifdef HAVE_BACKLIGHT bool bl_filter_first_keypress; /* filter first keypress when dark? */ + bool bl_filter_buttons; /* prevent some buttons from turning backlight on */ #ifdef HAVE_REMOTE_LCD bool remote_bl_filter_first_keypress; /* filter first remote keypress when remote dark? */ #endif diff -Nurb rockbox.orig/apps/settings_list.c rockbox.bl/apps/settings_list.c --- rockbox.orig/apps/settings_list.c 2007-12-31 22:36:52.000000000 +0200 +++ rockbox.bl/apps/settings_list.c 2008-01-15 17:16:57.000000000 +0200 @@ -506,6 +506,10 @@ OFFON_SETTING(0,bl_filter_first_keypress, LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS, false, "backlight filters first keypress", NULL), + BOOL_SETTING(0,bl_filter_buttons, LANG_BACKLIGHT_FILTER_BUTTONS, false, + "backlight on buttons", "all,selected", + LANG_BACKLIGHT_FILTER_BUTTONS_SELECTED, LANG_BACKLIGHT_FILTER_BUTTONS_ALL, + set_backlight_filter_buttons), #ifdef HAVE_REMOTE_LCD OFFON_SETTING(0,remote_bl_filter_first_keypress, LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS, false, diff -Nurb rockbox.orig/firmware/drivers/button.c rockbox.bl/firmware/drivers/button.c --- rockbox.orig/firmware/drivers/button.c 2007-12-31 22:37:04.000000000 +0200 +++ rockbox.bl/firmware/drivers/button.c 2008-01-15 16:12:03.000000000 +0200 @@ -56,6 +56,7 @@ #endif #ifdef HAVE_BACKLIGHT static bool filter_first_keypress; +static long backlight_on_button_mask = -1; #ifdef HAVE_REMOTE_LCD static bool remote_filter_first_keypress; #endif @@ -250,15 +251,16 @@ skip_remote_release = true; } else + { #endif - if (!filter_first_keypress || is_backlight_on() -#if BUTTON_REMOTE - || (btn&BUTTON_REMOTE) -#endif - ) + if (is_backlight_on() || !filter_first_keypress + || (filter_first_keypress && !(btn & backlight_on_button_mask))) queue_post(&button_queue, btn, data); else skip_release = true; +#ifdef HAVE_REMOTE_LCD + } +#endif #else /* no backlight, nothing to skip */ queue_post(&button_queue, btn, data); #endif @@ -270,11 +272,15 @@ else #endif { + /* any button press should keep backlight lit, + * but only some may turn it on */ + if(is_backlight_on() || (btn & backlight_on_button_mask)) { backlight_on(); #ifdef HAVE_BUTTON_LIGHT buttonlight_on(); #endif } + } reset_poweroff_timer(); } @@ -468,6 +474,15 @@ { filter_first_keypress = value; } + +void set_backlight_filter_buttons(bool value) +{ + if(value) + backlight_on_button_mask = BACKLIGHT_BUTTON; + else + backlight_on_button_mask = -1; +} + #ifdef HAVE_REMOTE_LCD void set_remote_backlight_filter_keypress(bool value) { diff -Nurb rockbox.orig/firmware/export/button.h rockbox.bl/firmware/export/button.h --- rockbox.orig/firmware/export/button.h 2007-12-31 22:37:04.000000000 +0200 +++ rockbox.bl/firmware/export/button.h 2008-01-15 16:11:52.000000000 +0200 @@ -38,6 +38,7 @@ #endif #ifdef HAVE_BACKLIGHT void set_backlight_filter_keypress(bool value); +void set_backlight_filter_buttons(bool value); #ifdef HAVE_REMOTE_LCD void set_remote_backlight_filter_keypress(bool value); #endif diff -Nurb rockbox.orig/firmware/target/arm/archos/av300/button-target.h rockbox.bl/firmware/target/arm/archos/av300/button-target.h --- rockbox.orig/firmware/target/arm/archos/av300/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/arm/archos/av300/button-target.h 2008-01-15 16:02:04.000000000 +0200 @@ -46,4 +46,6 @@ |BUTTON_UP|BUTTON_DOWN|BUTTON_SELECT\ |BUTTON_F1|BUTTON_F2|BUTTON_F3) +#define BACKLIGHT_BUTTON BUTTON_ON | BUTTON_OFF | BUTTON_SELECT + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/arm/imx31/gigabeat-s/button-target.h rockbox.bl/firmware/target/arm/imx31/gigabeat-s/button-target.h --- rockbox.orig/firmware/target/arm/imx31/gigabeat-s/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/arm/imx31/gigabeat-s/button-target.h 2008-01-15 16:02:47.000000000 +0200 @@ -56,4 +56,6 @@ #define POWEROFF_BUTTON BUTTON_POWER #define POWEROFF_COUNT 10 +#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_SELECT | BUTTON_MENU + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/arm/ipod/button-target.h rockbox.bl/firmware/target/arm/ipod/button-target.h --- rockbox.orig/firmware/target/arm/ipod/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/arm/ipod/button-target.h 2008-01-15 16:21:17.000000000 +0200 @@ -58,4 +58,6 @@ #define POWEROFF_BUTTON BUTTON_PLAY #define POWEROFF_COUNT 40 +#define BACKLIGHT_BUTTON BUTTON_PLAY | BUTTON_SELECT | BUTTON_MENU + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/arm/iriver/h10/button-target.h rockbox.bl/firmware/target/arm/iriver/h10/button-target.h --- rockbox.orig/firmware/target/arm/iriver/h10/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/arm/iriver/h10/button-target.h 2008-01-15 16:03:59.000000000 +0200 @@ -65,4 +65,6 @@ #define RC_POWEROFF_BUTTON BUTTON_RC_PLAY #define POWEROFF_COUNT 10 +#define BACKLIGHT_BUTTON BUTTON_POWER + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/arm/pnx0101/iriver-ifp7xx/button-target.h rockbox.bl/firmware/target/arm/pnx0101/iriver-ifp7xx/button-target.h --- rockbox.orig/firmware/target/arm/pnx0101/iriver-ifp7xx/button-target.h 2007-12-31 22:37:06.000000000 +0200 +++ rockbox.bl/firmware/target/arm/pnx0101/iriver-ifp7xx/button-target.h 2008-01-15 16:04:37.000000000 +0200 @@ -53,4 +53,6 @@ #define POWEROFF_BUTTON BUTTON_PLAY #define POWEROFF_COUNT 40 +#define BACKLIGHT_BUTTON BUTTON_SELECT BUTTON_PLAY + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/arm/s3c2440/gigabeat-fx/button-target.h rockbox.bl/firmware/target/arm/s3c2440/gigabeat-fx/button-target.h --- rockbox.orig/firmware/target/arm/s3c2440/gigabeat-fx/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/arm/s3c2440/gigabeat-fx/button-target.h 2008-01-15 16:05:05.000000000 +0200 @@ -95,4 +95,6 @@ #define POWEROFF_BUTTON BUTTON_POWER #define POWEROFF_COUNT 10 +#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_SELECT | BUTTON_MENU + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/arm/sandisk/sansa-c200/button-target.h rockbox.bl/firmware/target/arm/sandisk/sansa-c200/button-target.h --- rockbox.orig/firmware/target/arm/sandisk/sansa-c200/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/arm/sandisk/sansa-c200/button-target.h 2008-01-15 16:01:14.000000000 +0200 @@ -50,4 +50,6 @@ #define POWEROFF_BUTTON BUTTON_POWER #define POWEROFF_COUNT 10 +#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_SELECT + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/arm/sandisk/sansa-e200/button-target.h rockbox.bl/firmware/target/arm/sandisk/sansa-e200/button-target.h --- rockbox.orig/firmware/target/arm/sandisk/sansa-e200/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/arm/sandisk/sansa-e200/button-target.h 2008-01-15 16:01:33.000000000 +0200 @@ -51,4 +51,6 @@ #define POWEROFF_BUTTON BUTTON_POWER #define POWEROFF_COUNT 10 +#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_SELECT + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/arm/tatung/tpj1022/button-target.h rockbox.bl/firmware/target/arm/tatung/tpj1022/button-target.h --- rockbox.orig/firmware/target/arm/tatung/tpj1022/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/arm/tatung/tpj1022/button-target.h 2008-01-15 16:05:38.000000000 +0200 @@ -55,4 +55,6 @@ #define POWEROFF_BUTTON BUTTON_POWER #define POWEROFF_COUNT 10 +#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_MENU + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/arm/tcc77x/logikdax/button-target.h rockbox.bl/firmware/target/arm/tcc77x/logikdax/button-target.h --- rockbox.orig/firmware/target/arm/tcc77x/logikdax/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/arm/tcc77x/logikdax/button-target.h 2008-01-15 16:06:05.000000000 +0200 @@ -48,4 +48,6 @@ #define POWEROFF_BUTTON BUTTON_POWERPLAY #define POWEROFF_COUNT 40 +#define BACKLIGHT_BUTTON BUTTON_POWERPLAY BUTTON_SELECT + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/arm/tms320dm320/mrobe-500/button-target.h rockbox.bl/firmware/target/arm/tms320dm320/mrobe-500/button-target.h --- rockbox.orig/firmware/target/arm/tms320dm320/mrobe-500/button-target.h 2007-12-31 22:37:06.000000000 +0200 +++ rockbox.bl/firmware/target/arm/tms320dm320/mrobe-500/button-target.h 2008-01-15 16:06:55.000000000 +0200 @@ -67,4 +67,6 @@ BUTTON_RC_PLAY|BUTTON_RC_DOWN| \ BUTTON_RC_REW|BUTTON_RC_FF) +#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_MODE + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/coldfire/iaudio/button-target.h rockbox.bl/firmware/target/coldfire/iaudio/button-target.h --- rockbox.orig/firmware/target/coldfire/iaudio/button-target.h 2007-12-31 22:37:06.000000000 +0200 +++ rockbox.bl/firmware/target/coldfire/iaudio/button-target.h 2008-01-15 16:07:35.000000000 +0200 @@ -70,4 +70,6 @@ #define RC_POWEROFF_BUTTON BUTTON_RC_PLAY #define POWEROFF_COUNT 30 +#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_SELECT + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/coldfire/iriver/button-target.h rockbox.bl/firmware/target/coldfire/iriver/button-target.h --- rockbox.orig/firmware/target/coldfire/iriver/button-target.h 2007-12-31 22:37:06.000000000 +0200 +++ rockbox.bl/firmware/target/coldfire/iriver/button-target.h 2008-01-15 16:07:15.000000000 +0200 @@ -83,4 +83,6 @@ #define RC_POWEROFF_BUTTON BUTTON_RC_STOP #define POWEROFF_COUNT 10 +#define BACKLIGHT_BUTTON BUTTON_ON | BUTTON_OFF | BUTTON_SELECT + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/sh/archos/fm_v2/button-target.h rockbox.bl/firmware/target/sh/archos/fm_v2/button-target.h --- rockbox.orig/firmware/target/sh/archos/fm_v2/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/sh/archos/fm_v2/button-target.h 2008-01-15 16:07:57.000000000 +0200 @@ -50,4 +50,6 @@ #define POWEROFF_BUTTON BUTTON_OFF #define POWEROFF_COUNT 10 +#define BACKLIGHT_BUTTON BUTTON_ON | BUTTON_OFF + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/sh/archos/ondio/button-target.h rockbox.bl/firmware/target/sh/archos/ondio/button-target.h --- rockbox.orig/firmware/target/sh/archos/ondio/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/sh/archos/ondio/button-target.h 2008-01-15 16:08:12.000000000 +0200 @@ -42,4 +42,6 @@ #define POWEROFF_BUTTON BUTTON_OFF #define POWEROFF_COUNT 10 +#define BACKLIGHT_BUTTON BUTTON_OFF | BUTTON_MENU + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/sh/archos/player/button-target.h rockbox.bl/firmware/target/sh/archos/player/button-target.h --- rockbox.orig/firmware/target/sh/archos/player/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/sh/archos/player/button-target.h 2008-01-15 16:08:30.000000000 +0200 @@ -53,4 +53,6 @@ |BUTTON_RC_LEFT|BUTTON_RC_RIGHT\ |BUTTON_RC_VOL_UP|BUTTON_RC_VOL_DOWN) +#define BACKLIGHT_BUTTON BUTTON_ON | BUTTON_MENU + #endif /* _BUTTON_TARGET_H_ */ diff -Nurb rockbox.orig/firmware/target/sh/archos/recorder/button-target.h rockbox.bl/firmware/target/sh/archos/recorder/button-target.h --- rockbox.orig/firmware/target/sh/archos/recorder/button-target.h 2007-12-31 22:37:05.000000000 +0200 +++ rockbox.bl/firmware/target/sh/archos/recorder/button-target.h 2008-01-15 16:08:44.000000000 +0200 @@ -60,4 +60,6 @@ |BUTTON_RC_LEFT|BUTTON_RC_RIGHT\ |BUTTON_RC_VOL_UP|BUTTON_RC_VOL_DOWN) +#define BACKLIGHT_BUTTON BUTTON_ON | BUTTON_OFF + #endif /* _BUTTON_TARGET_H_ */