Index: x11input.c
===================================================================
RCS file: /cvsroot/xid/xid/3rdParty/DirectFB2/systems/x11/x11input.c,v
retrieving revision 1.2
diff -u -r1.2 x11input.c
--- x11input.c	11 May 2006 19:56:39 -0000	1.2
+++ x11input.c	15 May 2006 20:20:06 -0000
@@ -276,14 +276,57 @@
 	{
         motion_realize( pData );
 
-        if ( pXEvent->type == ButtonPress ) 	dfbEvent.type = DIET_BUTTONPRESS;
-		else									dfbEvent.type = DIET_BUTTONRELEASE;
+        if ( pXEvent->type == ButtonPress ) 	
+		dfbEvent.type = DIET_BUTTONPRESS;
+	else
+		dfbEvent.type = DIET_BUTTONRELEASE;
+
 		dfbEvent.flags = DIEF_NONE;
 				
 		/* Get pressed button */
-		if ( 	 pXEvent->xbutton.button == 1 ) dfbEvent.button = DIBI_LEFT;
-		else if( pXEvent->xbutton.button == 2 ) dfbEvent.button = DIBI_MIDDLE;
-		else if( pXEvent->xbutton.button == 3 ) dfbEvent.button = DIBI_RIGHT;
+		switch( pXEvent->xbutton.button ) {
+			case 1:
+				dfbEvent.button = DIBI_LEFT;
+			break;
+			case 2:
+				dfbEvent.button = DIBI_MIDDLE;
+			break;
+			case 3:
+				dfbEvent.button = DIBI_RIGHT;
+			break;
+			//Wheel events
+			case 4: /*up*/
+			case 5: /*down*/
+			case 6: /*left*/
+			case 7: /*right*/
+			{
+				dfbEvent.type = DIET_AXISMOTION;
+				dfbEvent.flags = DIEF_AXISREL;
+				dfbEvent.axis = DIAI_Z;
+				/*SCROLL UP*/
+				if( pXEvent->xbutton.button == 4 ) {
+					dfbEvent.axisrel = -120;
+				}
+				/*SCROLL DOWN */
+				else if (pXEvent->xbutton.button == 5) {
+					dfbEvent.axisrel = 120;
+				}
+				/*SCROLL LEFT*/
+          			else if (pXEvent->xbutton.button == 6) {
+					dfbEvent.axis = DIAI_X;
+					dfbEvent.axisrel = -120;
+				}
+				/*SCROLL RIGHT*/
+          			else if (pXEvent->xbutton.button == 7 ){
+					dfbEvent.axis = DIAI_X;
+					dfbEvent.axisrel = 120;
+				}
+					
+			}
+			break;
+			default:
+			break;
+		}
 
 		dfb_input_dispatch( pData->device, &dfbEvent );
 		++iMouseEventCount;
