Index: button-h10.c
===================================================================
--- button-h10.c	(revision 13357)
+++ button-h10.c	(working copy)
@@ -62,6 +62,17 @@
 {
     int btn = BUTTON_NONE;
     int data;
+    static int data1;
+    static int data2;
+    static int data4;
+    static int data5;
+    static int data6;
+    static int data7;
+    static int data8;
+    static int data9;
+    static int data3;
+    static int data_avg1;
+    static int data_avg2;
     unsigned char state;
     static bool hold_button = false;
     static bool remote_hold_button = false;
@@ -98,16 +109,119 @@
         if ( GPIOD_INPUT_VAL & 0x20 )
         {
             GPIOD_OUTPUT_VAL &=~ 0x40;
-            udelay(50);
+            udelay(100);
             data = adc_scan(ADC_SCROLLPAD);
+            udelay(100);
+            data1 = adc_scan(ADC_SCROLLPAD);
+            udelay(100);
+            data2 = adc_scan(ADC_SCROLLPAD);
+            udelay(100);
+            data3 = adc_scan(ADC_SCROLLPAD);
+            udelay(100);
+            data4 = adc_scan(ADC_SCROLLPAD);
+            udelay(100);
+            data5 = adc_scan(ADC_SCROLLPAD);
+            udelay(100);
+            data6 = adc_scan(ADC_SCROLLPAD);
+            udelay(100);
+            data7 = adc_scan(ADC_SCROLLPAD);
+            udelay(100);
+            data8 = adc_scan(ADC_SCROLLPAD);
+            udelay(100);
+            data9 = adc_scan(ADC_SCROLLPAD);
             GPIOD_OUTPUT_VAL |= 0x40;
-            
-            if(data < 0x210)
-            {
-                btn |= BUTTON_SCROLL_DOWN;
-            } else {
+            data_avg1 = ((data+data1+data2+data3+data4)/0x5);
+            data_avg2 = ((data5+data6+data7+data8+data9)/0x5);
+
+            if (data_avg1 > 0x350 ) {
+                if (data_avg2 < 0x350) {
+                    btn |= BUTTON_SCROLL_DOWN;
+                    }
+                else {
                 btn |= BUTTON_SCROLL_UP;
+                }
             }
+
+            else if (data_avg1 > 0x300 && data_avg1 < 0x350) {
+                    if (data_avg2 > 0x350) {
+                       btn |= BUTTON_SCROLL_UP;
+                       }
+                    else if (data_avg2 < 0x300) {
+                       btn |= BUTTON_SCROLL_DOWN;
+                       }
+                    else {
+                        btn |= BUTTON_SCROLL_UP;
+                    }
+            }
+
+            else if (data_avg1 > 0x250 && data_avg1 < 0x300) {
+                    if (data_avg2 > 0x300) {
+                        btn |= BUTTON_SCROLL_UP;
+                        }
+                    else if (data_avg2 < 0x250) {
+                        btn |= BUTTON_SCROLL_DOWN;
+                        }
+                    else {
+                        btn |= BUTTON_SCROLL_UP;
+                    }
+            }
+
+            else if (data_avg1 > 0x200 && data_avg1 < 0x250) {
+                    if (data_avg2 > 0x250) {
+                        btn |= BUTTON_SCROLL_UP;
+                        }
+                    else if (data_avg2 < 0x200) {
+                        btn |= BUTTON_SCROLL_DOWN;
+                        }
+                    else {
+                        btn |= BUTTON_SCROLL_UP;
+                    }
+            }
+
+            else if (data_avg1 > 0x150 && data_avg1 < 0x200) {
+                    if (data_avg2 > 0x200) {
+                        btn |= BUTTON_SCROLL_UP;
+                        }
+                    else if (data_avg2 < 0x150) {
+                        btn |= BUTTON_SCROLL_DOWN;
+                        }
+                    else {
+                        btn |= BUTTON_SCROLL_DOWN;
+                    }
+            }
+
+            else if (data_avg1 > 0x100 && data_avg1 < 0x150) {
+                    if (data_avg2 > 0x150) {
+                        btn |= BUTTON_SCROLL_UP;
+                        }
+                    else if (data_avg2 < 0x100) {
+                        btn |= BUTTON_SCROLL_DOWN;
+                        }
+                    else {
+                        btn |= BUTTON_SCROLL_DOWN;
+                    }
+            }
+
+            else if (data_avg1 > 0x50 && data_avg1 < 0x100) {
+                    if (data_avg2 > 0x100) {
+                        btn |= BUTTON_SCROLL_UP;
+                    }
+                    else if (data_avg2 < 0x50) {
+                        btn |= BUTTON_SCROLL_DOWN;
+                        }
+                    else {
+                        btn |= BUTTON_SCROLL_DOWN;
+                    }
+            }
+
+            else if (data_avg1 < 0x50) {
+                    if (data_avg2 > 0x50) {
+                        btn |= BUTTON_SCROLL_UP;
+                        }
+                    else {
+                        btn |= BUTTON_SCROLL_DOWN;
+                    }
+            }
         }
     }
     
