Index: firmware/export/backlight.h =================================================================== --- firmware/export/backlight.h (revision 20087) +++ firmware/export/backlight.h (working copy) @@ -98,4 +98,9 @@ extern int _buttonlight_timeout; #endif +/* Allow wheel and other drivers to know setting */ +#if !defined(SIMULATOR) && defined(HAVE_BACKLIGHT) +extern bool filter_first_keypress; +#endif + #endif /* BACKLIGHT_H */ Index: firmware/target/arm/ipod/button-clickwheel.c =================================================================== --- firmware/target/arm/ipod/button-clickwheel.c (revision 20087) +++ firmware/target/arm/ipod/button-clickwheel.c (working copy) @@ -118,8 +118,9 @@ new_wheel_value = (status >> 16) & 0x7f; whl = new_wheel_value; - /* switch on backlight (again), reset power-off timer */ - backlight_on(); + /* Only turn on backlight if it won't break filter_first_keypress */ + if (!filter_first_keypress) + backlight_on(); reset_poweroff_timer(); /* Check whether the scrollwheel was untouched by accident or by will. */ @@ -163,7 +164,11 @@ if (wheel_keycode != BUTTON_NONE) { long v = (usec - last_wheel_usec) & 0x7fffffff; - + + /* Don't turn off backlight during wheel activity */ + if (filter_first_keypress && is_backlight_on(false)) + backlight_on(); + /* undo signedness */ wheel_delta = (wheel_delta>0) ? wheel_delta : -wheel_delta; Index: firmware/drivers/button.c =================================================================== --- firmware/drivers/button.c (revision 20087) +++ firmware/drivers/button.c (working copy) @@ -57,7 +57,7 @@ static bool flipped; /* buttons can be flipped to match the LCD flip */ #endif #ifdef HAVE_BACKLIGHT -static bool filter_first_keypress; +bool filter_first_keypress; #ifdef HAVE_REMOTE_LCD static bool remote_filter_first_keypress; #endif