From 12de3ea346d2c0778676d7004acb406dc19e1dcd Mon Sep 17 00:00:00 2001 From: Lionel Ulmer Date: Sun, 8 Nov 1998 14:24:04 +0000 Subject: [PATCH] Added device type constants and used them in device enumeration function. --- include/dinput.h | 37 +++++++++++++++++++++++++++++++++++++ windows/dinput.c | 33 ++++++++++++++++----------------- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/include/dinput.h b/include/dinput.h index e6890c1070f..a29c2a5cbb6 100644 --- a/include/dinput.h +++ b/include/dinput.h @@ -117,6 +117,43 @@ typedef struct SysMouse32A SysMouse32A,*LPSYSMOUSE32A; #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 f975b8951d0..2ee1fcf6ac9 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 @@ static HRESULT WINAPI IDirectInputA_EnumDevices( 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_GetDeviceData( 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_GetDeviceData( } 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; }