Index: apps/lang/english.lang =================================================================== --- apps/lang/english.lang (révision 13956) +++ apps/lang/english.lang (copie de travail) @@ -3199,13 +3199,13 @@ desc: Backlight behaviour setting user: - *: "First Keypress Enables Backlight Only" + *: "Keypress effects when backlight is off" - *: "First Keypress Enables Backlight Only" + *: "Keypress effects when backlight is off" - *: "First Keypress Enables Backlight Only" + *: "Keypress effects when backlight is off" @@ -11048,3 +11048,65 @@ *: "Can't write to recording directory" + + id: LANG_BACKLIGHT_FILTER_MODE0 + desc: Backlight behaviour setting + user: + + *: "All: BL & action" + + + *: "All: BL & action" + + + *: "All: BL & action" + + + + id: LANG_BACKLIGHT_FILTER_MODE1 + desc: Backlight behaviour setting + user: + + *: "All: BL & no action" + + + *: "All: BL & no action" + + + *: "All: BL & no action" + + + + id: LANG_BACKLIGHT_FILTER_MODE2 + desc: Backlight behaviour setting + user: + + *: "Select: BL, others: action & BL" + h300: "NAVI: BL, others: action & BL" + + + *: "Select: BL, others: action & BL" + h300: "NAVI: BL, others: action & BL" + + + *: "Select: BL, others: action & BL" + h300: "NAVI: BL, others: action & BL" + + + + id: LANG_BACKLIGHT_FILTER_MODE3 + desc: Backlight behaviour setting + user: + + *: "Select: BL, Mode: action & BL, others: action" + h300: "NAVI: BL, A-B: action & BL, others: action" + + + *: "Select: BL, Mode: action & BL, others: action" + h300: "NAVI: BL, A-B: action & BL, others: action" + + + *: "Select: BL, Mode: action & BL, others: action" + h300: "NAVI: BL, A-B: action & BL, others: action" + + Index: apps/settings.h =================================================================== --- apps/settings.h (révision 13956) +++ apps/settings.h (copie de travail) @@ -634,7 +634,7 @@ bool party_mode; /* party mode - unstoppable music */ #ifdef HAVE_BACKLIGHT - bool bl_filter_first_keypress; /* filter first keypress when dark? */ + int bl_filter_first_keypress; /* filter first keypress when dark? */ #ifdef HAVE_REMOTE_LCD bool remote_bl_filter_first_keypress; /* filter first remote keypress when remote dark? */ #endif Index: apps/settings_list.c =================================================================== --- apps/settings_list.c (révision 13956) +++ apps/settings_list.c (copie de travail) @@ -533,9 +533,9 @@ #endif #ifdef HAVE_BACKLIGHT - OFFON_SETTING(0,bl_filter_first_keypress, - LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS, false, - "backlight filters first keypress", NULL), + {F_T_INT,GS(bl_filter_first_keypress), LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS, + INT(0),"backlight filters first keypress", + "mode0,mode1,mode2,mode3",UNUSED}, #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 (révision 13956) +++ firmware/export/button.h (copie de travail) @@ -34,7 +34,7 @@ void button_set_flip(bool flip); /* turn 180 degrees */ #endif #ifdef HAVE_BACKLIGHT -void set_backlight_filter_keypress(bool value); +void set_backlight_filter_keypress(int value); #ifdef HAVE_REMOTE_LCD void set_remote_backlight_filter_keypress(bool value); #endif Index: firmware/drivers/button.c =================================================================== --- firmware/drivers/button.c (révision 13956) +++ firmware/drivers/button.c (copie de travail) @@ -53,7 +53,7 @@ static bool flipped; /* buttons can be flipped to match the LCD flip */ #endif #ifdef HAVE_BACKLIGHT -static bool filter_first_keypress; +static int filter_first_keypress; #ifdef HAVE_REMOTE_LCD static bool remote_filter_first_keypress; #endif @@ -82,6 +82,7 @@ static bool post = false; #ifdef HAVE_BACKLIGHT static bool skip_release = false; + bool turn_backlight_on = true; #ifdef HAVE_REMOTE_LCD static bool skip_remote_release = false; #endif @@ -236,14 +237,42 @@ } else #endif - if (!filter_first_keypress || is_backlight_on() + if (is_backlight_on() #if BUTTON_REMOTE || (btn&BUTTON_REMOTE) #endif ) + { queue_post(&button_queue, btn, 0); + } else + { + switch (filter_first_keypress) + { + case 0: + queue_post(&button_queue, btn, NULL); + break; + case 1: + skip_release = true; + break; + case 2: + if (btn == BUTTON_SELECT) + skip_release = true; + else + queue_post(&button_queue, btn, NULL); + break; + case 3: + if (btn == BUTTON_SELECT) skip_release = true; + else + { + if (btn != BUTTON_MODE) + turn_backlight_on = false; + queue_post(&button_queue, btn, NULL); + } + break; + } + } #else /* no backlight, nothing to skip */ queue_post(&button_queue, btn, 0); #endif @@ -254,11 +283,13 @@ remote_backlight_on(); else #endif + if (turn_backlight_on) + { backlight_on(); - reset_poweroff_timer(); } } + } else { repeat = false; @@ -352,7 +383,7 @@ flipped = false; #endif #ifdef HAVE_BACKLIGHT - filter_first_keypress = false; + filter_first_keypress = 0; #ifdef HAVE_REMOTE_LCD remote_filter_first_keypress = false; #endif @@ -424,7 +455,7 @@ #endif /* HAVE_LCD_BITMAP */ #ifdef HAVE_BACKLIGHT -void set_backlight_filter_keypress(bool value) +void set_backlight_filter_keypress(int value) { filter_first_keypress = value; } Index: uisimulator/sdl/button.c =================================================================== --- uisimulator/sdl/button.c (révision 13956) +++ uisimulator/sdl/button.c (copie de travail) @@ -52,7 +52,7 @@ #ifdef HAVE_BACKLIGHT static bool filter_first_keypress; -void set_backlight_filter_keypress(bool value) +void set_backlight_filter_keypress(int value) { filter_first_keypress = value; }