Index: button-h10.c =================================================================== --- button-h10.c (revision 14690) +++ button-h10.c (working copy) @@ -58,6 +58,8 @@ /* * Get button pressed from hardware */ +int old_pos; +int delta_pos; int button_read_device(void) { int btn = BUTTON_NONE; @@ -101,13 +103,12 @@ udelay(250); data = adc_scan(ADC_SCROLLPAD); GPIOD_OUTPUT_VAL |= 0x40; - - if(data < 0x210) - { - btn |= BUTTON_SCROLL_DOWN; - } else { - btn |= BUTTON_SCROLL_UP; - } + + /* compare current value with previous read */ + delta_pos = data - old_pos; + if(delta_pos < -13) btn |= BUTTON_SCROLL_DOWN; + if(delta_pos > 13) btn |= BUTTON_SCROLL_UP; + old_pos = data; } }