Index: firmware/target/arm/ipod/3g/button-3g.c =================================================================== --- firmware/target/arm/ipod/3g/button-3g.c (revision 12631) +++ firmware/target/arm/ipod/3g/button-3g.c (working copy) @@ -40,6 +40,8 @@ #include "system.h" #include "powermgmt.h" +#define MIN_SENSITIVITY 6 + /* iPod 3G and mini 1G, mini 2G uses iPod 4G code */ void handle_scroll_wheel(int new_scroll, int was_hold, int reverse) { @@ -54,18 +56,30 @@ {0, -1, 1, 0} }; + /* Increases speed of scrolling if wheel rotated faster */ + static long old_tick = -1; + long new_tick = current_tick; + static int sensitivity = MIN_SENSITIVITY; + + if ( TIME_AFTER( old_tick, new_tick ) >= 1 ) { /* lowest sensitivity */ + sensitivity = MIN_SENSITIVITY; + } + old_tick = new_tick; + if ( prev_scroll == -1 ) { prev_scroll = new_scroll; } else if (direction != scroll_state[prev_scroll][new_scroll]) { direction = scroll_state[prev_scroll][new_scroll]; count = 0; + sensitivity = MIN_SENSITIVITY; } else if (!was_hold) { backlight_on(); reset_poweroff_timer(); - if (++count == 6) { /* reduce sensitivity */ + if (++count >= sensitivity ) { /* dynamic sensitivity */ count = 0; + if ( --sensitivity == 0 ) sensitivity = 1; switch (direction) { case 1: if (reverse) {