修改後,變成 0x40 為 wheel up,0x80 為 wheel down。

--- linux-2.4.26-em86xx-old/drivers/input/mousedev.c    2008-03-21 09:39:48.000000000 +0800
+++ linux-2.4.26-em86xx-new/drivers/input/mousedev.c    2008-03-21 09:42:38.000000000 +0800
@@ -116,7 +116,7 @@
                     switch (code) {
                         case REL_X:    list->dx += value; break;
                         case REL_Y:    list->dy -= value; break;
-                        case REL_WHEEL:    if (list->mode) list->dz -= value; break;
+                        case REL_WHEEL:    list->dz -= value; break;
                     }
                     break;

@@ -253,10 +253,12 @@
 static void mousedev_packet(struct mousedev_list *list, unsigned char off)
 {
     list->ps2[off] = 0x08 | ((list->dx < 0) << 4) | ((list->dy < 0) << 5) | (list->buttons & 0x07);
+    list->ps2[off] |= ((list->dz < 0) << 6) | ((list->dz > 0) << 7);
     list->ps2[off + 1] = (list->dx > 127 ? 127 : (list->dx < -127 ? -127 : list->dx));
     list->ps2[off + 2] = (list->dy > 127 ? 127 : (list->dy < -127 ? -127 : list->dy));
     list->dx -= list->ps2[off + 1];
     list->dy -= list->ps2[off + 2];
+    list->dz  = 0;
     list->bufsiz = off + 3;

     if (list->mode == 2) {

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()