- removed keyboard auto-repeat when DInput acquires it
- removed some (now) obsolete fixme's
diff --git a/windows/dinput.c b/windows/dinput.c
index 40c8a34..df6ff18 100644
--- a/windows/dinput.c
+++ b/windows/dinput.c
@@ -81,6 +81,7 @@
GUID guid;
/* SysKeyboardAImpl */
BYTE keystate[256];
+ KEYBOARD_CONFIG initial_config;
};
#ifdef HAVE_LINUX_22_JOYSTICK_API
@@ -294,7 +295,7 @@
char xbuf[50];
WINE_StringFromCLSID(rguid,xbuf);
- FIXME("(this=%p,%s,%p,%p): stub\n",This,xbuf,pdev,punk);
+ TRACE("(this=%p,%s,%p,%p)\n",This,xbuf,pdev,punk);
if ((!memcmp(&GUID_SysKeyboard,rguid,sizeof(GUID_SysKeyboard))) || /* Generic Keyboard */
(!memcmp(&DInput_Wine_Keyboard_GUID,rguid,sizeof(GUID_SysKeyboard)))) { /* Wine Keyboard */
SysKeyboardAImpl* newDevice;
@@ -431,7 +432,7 @@
LPDIRECTINPUTDEVICE2A iface,HWND hwnd,DWORD dwflags
) {
ICOM_THIS(IDirectInputDevice2AImpl,iface);
- FIXME("(this=%p,0x%08lx,0x%08lx): stub\n",This,(DWORD)hwnd,dwflags);
+ TRACE("(this=%p,0x%08lx,0x%08lx)\n",This,(DWORD)hwnd,dwflags);
if (TRACE_ON(dinput))
_dump_cooperativelevel(dwflags);
return 0;
@@ -507,7 +508,7 @@
ret=KEYBOARD_Driver->pGetDIData(
This->keystate, dodsize, dod, entries, flags)?DI_OK:E_FAIL;
for (i=0;i<*entries;i++) {
- dod[i].dwTimeStamp = time(NULL);
+ dod[i].dwTimeStamp = GetTickCount();
dod[i].dwSequence = evsequence++;
}
return ret;
@@ -516,15 +517,28 @@
static HRESULT WINAPI SysKeyboardAImpl_Acquire(LPDIRECTINPUTDEVICE2A iface)
{
ICOM_THIS(SysKeyboardAImpl,iface);
- TRACE("(this=%p): stub\n",This);
- return 0;
+ KEYBOARD_CONFIG no_auto;
+
+ TRACE("(this=%p)\n",This);
+ /* Save the original config */
+ KEYBOARD_Driver->pGetKeyboardConfig(&(This->initial_config));
+
+ /* Now, remove auto-repeat */
+ no_auto.auto_repeat = FALSE;
+ KEYBOARD_Driver->pSetKeyboardConfig(&no_auto, WINE_KEYBOARD_CONFIG_AUTO_REPEAT);
+
+ return DI_OK;
}
static HRESULT WINAPI SysKeyboardAImpl_Unacquire(LPDIRECTINPUTDEVICE2A iface)
{
ICOM_THIS(SysKeyboardAImpl,iface);
- TRACE("(this=%p): stub\n",This);
- return 0;
+ TRACE("(this=%p)\n",This);
+
+ /* Restore the original configuration */
+ KEYBOARD_Driver->pSetKeyboardConfig(&(This->initial_config), 0xFFFFFFFF);
+
+ return DI_OK;
}
static HRESULT WINAPI IDirectInputDevice2AImpl_QueryInterface(
@@ -760,7 +774,7 @@
{
ICOM_THIS(SysMouseAImpl,iface);
- TRACE("(this=%p,0x%08lx,0x%08lx): stub\n",This,(DWORD)hwnd,dwflags);
+ TRACE("(this=%p,0x%08lx,0x%08lx)\n",This,(DWORD)hwnd,dwflags);
if (TRACE_ON(dinput))
_dump_cooperativelevel(dwflags);