Index: apps/lang/english.lang
===================================================================
--- apps/lang/english.lang (revision 22658)
+++ apps/lang/english.lang (working copy)
@@ -12735,3 +12735,72 @@
quickscreen: "Set as Top Quickscreen Item"
+
+ 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,gigabeats: "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,gigabeats: "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,gigabeats: "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"
+
+
Index: apps/settings.c
===================================================================
--- apps/settings.c (revision 22658)
+++ apps/settings.c (working copy)
@@ -965,6 +965,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
Index: apps/settings.h
===================================================================
--- apps/settings.h (revision 22658)
+++ apps/settings.h (working copy)
@@ -703,6 +703,10 @@
int brightness;
#endif
+#ifdef HAVE_BACKLIGHT
+ bool bl_filter_buttons; /* prevent some buttons from turning backlight on */
+#endif
+
#ifdef HAVE_REMOTE_LCD
/* remote lcd */
int remote_contrast; /* lcd contrast: 0-63 0=low 63=high */
Index: apps/menus/display_menu.c
===================================================================
--- apps/menus/display_menu.c (revision 22658)
+++ apps/menus/display_menu.c (working copy)
@@ -59,6 +59,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_FLIP
static int flipdisplay_callback(int action,const struct menu_item_ex *this_item)
@@ -101,6 +112,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_SETTING
MENUITEM_SETTING(lcd_sleep_after_backlight_off,
&global_settings.lcd_sleep_after_backlight_off, NULL);
@@ -138,6 +152,7 @@
,&backlight_fade_in, &backlight_fade_out
#endif
,&bl_filter_first_keypress
+ ,&bl_filter_buttons
# ifdef HAVE_LCD_SLEEP_SETTING
,&lcd_sleep_after_backlight_off
# endif
Index: apps/settings_list.c
===================================================================
--- apps/settings_list.c (revision 22658)
+++ apps/settings_list.c (working copy)
@@ -725,6 +725,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,
Index: firmware/export/button.h
===================================================================
--- firmware/export/button.h (revision 22658)
+++ firmware/export/button.h (working copy)
@@ -43,6 +43,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
Index: firmware/target/arm/tatung/tpj1022/button-target.h
===================================================================
--- firmware/target/arm/tatung/tpj1022/button-target.h (revision 22658)
+++ firmware/target/arm/tatung/tpj1022/button-target.h (working copy)
@@ -57,4 +57,6 @@
#define POWEROFF_BUTTON BUTTON_POWER
#define POWEROFF_COUNT 10
+#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_MENU
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/arm/pnx0101/iriver-ifp7xx/button-target.h
===================================================================
--- firmware/target/arm/pnx0101/iriver-ifp7xx/button-target.h (revision 22658)
+++ firmware/target/arm/pnx0101/iriver-ifp7xx/button-target.h (working copy)
@@ -55,4 +55,6 @@
#define POWEROFF_BUTTON BUTTON_PLAY
#define POWEROFF_COUNT 40
+#define BACKLIGHT_BUTTON BUTTON_SELECT BUTTON_PLAY
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/arm/archos/av300/button-target.h
===================================================================
--- firmware/target/arm/archos/av300/button-target.h (revision 22658)
+++ firmware/target/arm/archos/av300/button-target.h (working copy)
@@ -48,4 +48,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_ */
Index: firmware/target/arm/tcc77x/logikdax/button-target.h
===================================================================
--- firmware/target/arm/tcc77x/logikdax/button-target.h (revision 22658)
+++ firmware/target/arm/tcc77x/logikdax/button-target.h (working copy)
@@ -50,4 +50,6 @@
#define POWEROFF_BUTTON BUTTON_POWERPLAY
#define POWEROFF_COUNT 40
+#define BACKLIGHT_BUTTON BUTTON_POWERPLAY BUTTON_SELECT
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/arm/ipod/button-target.h
===================================================================
--- firmware/target/arm/ipod/button-target.h (revision 22658)
+++ firmware/target/arm/ipod/button-target.h (working copy)
@@ -75,4 +75,6 @@
#define POWEROFF_BUTTON BUTTON_PLAY
#define POWEROFF_COUNT 40
+#define BACKLIGHT_BUTTON BUTTON_PLAY | BUTTON_SELECT | BUTTON_MENU
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/arm/sandisk/sansa-c200/button-target.h
===================================================================
--- firmware/target/arm/sandisk/sansa-c200/button-target.h (revision 22658)
+++ firmware/target/arm/sandisk/sansa-c200/button-target.h (working copy)
@@ -52,4 +52,6 @@
#define POWEROFF_BUTTON BUTTON_POWER
#define POWEROFF_COUNT 10
+#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_SELECT
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/arm/sandisk/sansa-e200/button-e200.c
===================================================================
--- firmware/target/arm/sandisk/sansa-e200/button-e200.c (revision 22658)
+++ firmware/target/arm/sandisk/sansa-e200/button-e200.c (working copy)
@@ -194,7 +194,7 @@
/* poke backlight to turn it on or maintain it no more often
than every 1/4 second*/
next_backlight_on = current_tick + HZ/4;
- backlight_on();
+ /*backlight_on();*/
buttonlight_on();
reset_poweroff_timer();
}
Index: firmware/target/arm/sandisk/sansa-e200/button-target.h
===================================================================
--- firmware/target/arm/sandisk/sansa-e200/button-target.h (revision 22658)
+++ firmware/target/arm/sandisk/sansa-e200/button-target.h (working copy)
@@ -57,4 +57,6 @@
#define POWEROFF_BUTTON BUTTON_POWER
#define POWEROFF_COUNT 10
+#define BACKLIGHT_BUTTON BUTTON_REC | BUTTON_DOWN | BUTTON_SELECT | BUTTON_UP | BUTTON_POWER
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/arm/tms320dm320/mrobe-500/button-target.h
===================================================================
--- firmware/target/arm/tms320dm320/mrobe-500/button-target.h (revision 22658)
+++ firmware/target/arm/tms320dm320/mrobe-500/button-target.h (working copy)
@@ -88,4 +88,6 @@
BUTTON_RC_PLAY|BUTTON_RC_DOWN| \
BUTTON_RC_REW|BUTTON_RC_FF)
+#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_MODE
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/arm/iriver/h10/button-target.h
===================================================================
--- firmware/target/arm/iriver/h10/button-target.h (revision 22658)
+++ firmware/target/arm/iriver/h10/button-target.h (working copy)
@@ -67,4 +67,6 @@
#define RC_POWEROFF_BUTTON BUTTON_RC_PLAY
#define POWEROFF_COUNT 10
+#define BACKLIGHT_BUTTON BUTTON_POWER
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/arm/imx31/gigabeat-s/button-target.h
===================================================================
--- firmware/target/arm/imx31/gigabeat-s/button-target.h (revision 22658)
+++ firmware/target/arm/imx31/gigabeat-s/button-target.h (working copy)
@@ -71,4 +71,6 @@
#define POWEROFF_BUTTON BUTTON_POWER
#define POWEROFF_COUNT 10
+#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_SELECT | BUTTON_MENU
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/arm/s3c2440/gigabeat-fx/button-target.h
===================================================================
--- firmware/target/arm/s3c2440/gigabeat-fx/button-target.h (revision 22658)
+++ firmware/target/arm/s3c2440/gigabeat-fx/button-target.h (working copy)
@@ -97,4 +97,6 @@
#define POWEROFF_BUTTON BUTTON_POWER
#define POWEROFF_COUNT 10
+#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_SELECT | BUTTON_MENU
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/coldfire/iriver/button-target.h
===================================================================
--- firmware/target/coldfire/iriver/button-target.h (revision 22658)
+++ firmware/target/coldfire/iriver/button-target.h (working copy)
@@ -85,4 +85,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_ */
Index: firmware/target/coldfire/iaudio/button-target.h
===================================================================
--- firmware/target/coldfire/iaudio/button-target.h (revision 22658)
+++ firmware/target/coldfire/iaudio/button-target.h (working copy)
@@ -72,4 +72,6 @@
#define RC_POWEROFF_BUTTON BUTTON_RC_PLAY
#define POWEROFF_COUNT 30
+#define BACKLIGHT_BUTTON BUTTON_POWER | BUTTON_SELECT
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/sh/archos/recorder/button-target.h
===================================================================
--- firmware/target/sh/archos/recorder/button-target.h (revision 22658)
+++ firmware/target/sh/archos/recorder/button-target.h (working copy)
@@ -62,4 +62,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_ */
Index: firmware/target/sh/archos/ondio/button-target.h
===================================================================
--- firmware/target/sh/archos/ondio/button-target.h (revision 22658)
+++ firmware/target/sh/archos/ondio/button-target.h (working copy)
@@ -44,4 +44,6 @@
#define POWEROFF_BUTTON BUTTON_OFF
#define POWEROFF_COUNT 10
+#define BACKLIGHT_BUTTON BUTTON_OFF | BUTTON_MENU
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/sh/archos/fm_v2/button-target.h
===================================================================
--- firmware/target/sh/archos/fm_v2/button-target.h (revision 22658)
+++ firmware/target/sh/archos/fm_v2/button-target.h (working copy)
@@ -52,4 +52,6 @@
#define POWEROFF_BUTTON BUTTON_OFF
#define POWEROFF_COUNT 10
+#define BACKLIGHT_BUTTON BUTTON_ON | BUTTON_OFF
+
#endif /* _BUTTON_TARGET_H_ */
Index: firmware/target/sh/archos/player/button-target.h
===================================================================
--- firmware/target/sh/archos/player/button-target.h (revision 22658)
+++ firmware/target/sh/archos/player/button-target.h (working copy)
@@ -55,4 +55,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_ */
Index: firmware/drivers/button.c
===================================================================
--- firmware/drivers/button.c (revision 22658)
+++ firmware/drivers/button.c (working copy)
@@ -58,6 +58,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
@@ -263,15 +264,16 @@
skip_remote_release = true;
}
else
+ {
#endif
- if (!filter_first_keypress || is_backlight_on(false)
-#if BUTTON_REMOTE
- || (btn & BUTTON_REMOTE)
-#endif
- )
+ if (is_backlight_on(false) || !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
@@ -283,11 +285,15 @@
else
#endif
{
+ /* any button press should keep backlight lit,
+ * but only some may turn it on */
+ if(is_backlight_on(false) || (btn & backlight_on_button_mask)) {
backlight_on();
#ifdef HAVE_BUTTON_LIGHT
buttonlight_on();
#endif
}
+ }
reset_poweroff_timer();
}
@@ -515,6 +521,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)
{
Index: uisimulator/sdl/button.c
===================================================================
--- uisimulator/sdl/button.c (revision 22658)
+++ uisimulator/sdl/button.c (working copy)
@@ -62,11 +62,20 @@
#ifdef HAVE_BACKLIGHT
static bool filter_first_keypress;
+static long backlight_on_button_mask;
void set_backlight_filter_keypress(bool value)
{
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
static bool remote_filter_first_keypress;
@@ -1324,12 +1333,16 @@
skip_remote_release = true;
}
else
-#endif
- if (!filter_first_keypress
- || is_backlight_on(false))
+ {
+#endif
+ if (is_backlight_on(false) || !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
@@ -1341,7 +1354,16 @@
remote_backlight_on();
else
#endif
- backlight_on();
+ {
+ /* any button press should keep backlight lit,
+ * but only some may turn it on */
+ if(is_backlight_on(false) || (btn & backlight_on_button_mask)) {
+ backlight_on();
+#ifdef HAVE_BUTTON_LIGHT
+ buttonlight_on();
+#endif
+ }
+ }
}
}