Added device type constants and used them in device enumeration
function.

diff --git a/include/dinput.h b/include/dinput.h
index e6890c1..a29c2a5 100644
--- a/include/dinput.h
+++ b/include/dinput.h
@@ -117,6 +117,43 @@
 #define DIERR_UNPLUGGED                 0x80040209L
 #define DIERR_REPORTFULL                0x8004020AL
 
+#define DIENUM_STOP                     0
+#define DIENUM_CONTINUE                 1
+
+#define DIDEVTYPE_DEVICE                1
+#define DIDEVTYPE_MOUSE                 2
+#define DIDEVTYPE_KEYBOARD              3
+#define DIDEVTYPE_JOYSTICK              4
+#define DIDEVTYPE_HID                   0x00010000
+
+#define DIDEVTYPEMOUSE_UNKNOWN          1
+#define DIDEVTYPEMOUSE_TRADITIONAL      2
+#define DIDEVTYPEMOUSE_FINGERSTICK      3
+#define DIDEVTYPEMOUSE_TOUCHPAD         4
+#define DIDEVTYPEMOUSE_TRACKBALL        5
+
+#define DIDEVTYPEKEYBOARD_UNKNOWN       0
+#define DIDEVTYPEKEYBOARD_PCXT          1
+#define DIDEVTYPEKEYBOARD_OLIVETTI      2
+#define DIDEVTYPEKEYBOARD_PCAT          3
+#define DIDEVTYPEKEYBOARD_PCENH         4
+#define DIDEVTYPEKEYBOARD_NOKIA1050     5
+#define DIDEVTYPEKEYBOARD_NOKIA9140     6
+#define DIDEVTYPEKEYBOARD_NEC98         7
+#define DIDEVTYPEKEYBOARD_NEC98LAPTOP   8
+#define DIDEVTYPEKEYBOARD_NEC98106      9
+#define DIDEVTYPEKEYBOARD_JAPAN106     10
+#define DIDEVTYPEKEYBOARD_JAPANAX      11
+#define DIDEVTYPEKEYBOARD_J3100        12
+
+#define DIDEVTYPEJOYSTICK_UNKNOWN       1
+#define DIDEVTYPEJOYSTICK_TRADITIONAL   2
+#define DIDEVTYPEJOYSTICK_FLIGHTSTICK   3
+#define DIDEVTYPEJOYSTICK_GAMEPAD       4
+#define DIDEVTYPEJOYSTICK_RUDDER        5
+#define DIDEVTYPEJOYSTICK_WHEEL         6
+#define DIDEVTYPEJOYSTICK_HEADTRACKER   7
+
 typedef struct {
     DWORD	dwSize;
     GUID	guidType;
diff --git a/windows/dinput.c b/windows/dinput.c
index f975b89..2ee1fcf 100644
--- a/windows/dinput.c
+++ b/windows/dinput.c
@@ -36,6 +36,7 @@
 #include "win.h"
 #include "dinput.h"
 #include "debug.h"
+#include "message.h"
 
 extern BYTE InputKeyStateTable[256];
 extern int min_keycode, max_keycode;
@@ -69,38 +70,36 @@
 
   TRACE(dinput, "(this=%p,0x%04lx,%p,%p,%04lx)\n", this, dwDevType, lpCallback, pvRef, dwFlags);
 
-#if 0 /* Not compiled for the moment as long as I do not find
-	 the needed constants */
-  /* Ignore this field for the moment */
-  if (dwDevType != 0) {
-    FIXME(dinput, "device filtering not supported.\n");
-  }
-    
   devInstance.dwSize = sizeof(DIDEVICEINSTANCE32A);
   
+  if ((dwDevType == 0) || (dwDevType == DIDEVTYPE_KEYBOARD)) {
   /* Return keyboard */
   devInstance.guidInstance = GUID_SysKeyboard;
   devInstance.guidProduct = GUID_SysKeyboard;
-  devInstance.dwDevType = 1; /* Constant unknown :-( */
+    devInstance.dwDevType = DIDEVTYPE_KEYBOARD | (DIDEVTYPEKEYBOARD_UNKNOWN << 8);
   strcpy(devInstance.tszInstanceName, "Keyboard");
   strcpy(devInstance.tszProductName, "Wine Keyboard");
   
   ret = lpCallback(&devInstance, pvRef);
-  TRACE(dinput, "Keyboard registered (%d)\n", ret);
+    TRACE(dinput, "Keyboard registered\n");
   
-  if (!ret)
+    if (ret == DIENUM_STOP)
     return 0;
+  }
   
+  if ((dwDevType == 0) || (dwDevType == DIDEVTYPE_KEYBOARD)) {
   /* Return mouse */
   devInstance.guidInstance = GUID_SysMouse;
   devInstance.guidProduct = GUID_SysMouse;
-  devInstance.dwDevType = 2; /* Constant unknown :-( */
+    devInstance.dwDevType = DIDEVTYPE_MOUSE | (DIDEVTYPEMOUSE_UNKNOWN << 8);
   strcpy(devInstance.tszInstanceName, "Mouse");
   strcpy(devInstance.tszProductName, "Wine Mouse");
   
   ret = lpCallback(&devInstance, pvRef);
-  TRACE(dinput, "Mouse registered (%d)\n", ret);
-#endif
+    TRACE(dinput, "Mouse registered\n");
+  }
+
+  /* Should also do joystick enumerations.... */
   
 	return 0;
 }
@@ -263,12 +262,12 @@
 
 
 static HRESULT WINAPI IDirectInputDeviceA_Acquire(LPDIRECTINPUTDEVICE32A this) {
-	FIXME(dinput,"(this=%p): stub\n",this);
+	TRACE(dinput,"(this=%p): stub\n",this);
 	return 0;
 }
 
 static HRESULT WINAPI IDirectInputDeviceA_Unacquire(LPDIRECTINPUTDEVICE32A this) {
-	FIXME(dinput,"(this=%p): stub\n",this);
+        TRACE(dinput,"(this=%p): stub\n",this);
 	return 0;
 }
 
@@ -373,12 +372,12 @@
 }
 
 static HRESULT WINAPI SysKeyboardA_Acquire(LPDIRECTINPUTDEVICE32A this) {
-	FIXME(dinput,"(this=%p): stub\n",this);
+	TRACE(dinput,"(this=%p): stub\n",this);
 	return 0;
 }
 
 static HRESULT WINAPI SysKeyboardA_Unacquire(LPDIRECTINPUTDEVICE32A this) {
-	FIXME(dinput,"(this=%p): stub\n",this);
+	TRACE(dinput,"(this=%p): stub\n",this);
 	return 0;
 }