From 8cac55a8ebd32a445279fc8452813efc56dbd3e3 Mon Sep 17 00:00:00 2001 From: Spoike Date: Tue, 24 Aug 2010 02:18:42 +0000 Subject: [PATCH] in_rawinput_keyboard should be functional now. git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3601 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/client/in_win.c | 22 +++++++++++++++++----- engine/client/keys.c | 2 +- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/engine/client/in_win.c b/engine/client/in_win.c index 1c345fc65..bc6e4f973 100644 --- a/engine/client/in_win.c +++ b/engine/client/in_win.c @@ -278,6 +278,8 @@ cvar_t in_rawinput_rdp = SCVAR("in_rawinput_rdp", "0"); void IN_RawInput_MouseDeRegister(void); int IN_RawInput_MouseRegister(void); +void IN_RawInput_KeyboardDeRegister(void); +int IN_RawInput_KeyboardRegister(void); void IN_RawInput_DeInit(void); #endif @@ -396,11 +398,20 @@ static void IN_ActivateMouse (void) #ifdef USINGRAWINPUT if (rawmicecount > 0) { - if (IN_RawInput_MouseRegister()) { + if (IN_RawInput_MouseRegister()) + { Con_SafePrintf("Raw input: unable to register raw input for mice, deinitializing\n"); IN_RawInput_MouseDeRegister(); } } + if (rawkbdcount > 0) + { + if (IN_RawInput_KeyboardRegister()) + { + Con_SafePrintf("Raw input: unable to register raw input for keyboard, deinitializing\n"); + IN_RawInput_KeyboardDeRegister(); + } + } #endif if (mouseparmsvalid) @@ -818,7 +829,7 @@ int IN_RawInput_KeyboardRegister(void) RAWINPUTDEVICE Rid; Rid.usUsagePage = 0x01; - Rid.usUsage = 0x00; + Rid.usUsage = 0x06; Rid.dwFlags = RIDEV_NOLEGACY | RIDEV_APPKEYS | RIDEV_NOHOTKEYS; // fetch everything, disable hotkey behavior (should cvar?) Rid.hwndTarget = NULL; @@ -979,6 +990,7 @@ void IN_RawInput_Init(void) continue; rawkbd[rawkbdcount].handles.rawinputhandle = pRawInputDeviceList[i].hDevice; + rawkbd[rawkbdcount].playerid = rawmicecount; rawkbdcount++; break; default: @@ -1751,8 +1763,8 @@ void IN_RawInput_KeyboardRead(void) return; down = !(raw->data.keyboard.Flags & RI_KEY_BREAK); - wParam = raw->data.keyboard.VKey; - lParam = (-down) & 0xC0000000; + wParam = (-down) & 0xC0000000; + lParam = MapVirtualKey(raw->data.keyboard.VKey, 0)<<16; pnum = cl.splitclients; if (pnum < 1) @@ -1762,7 +1774,7 @@ void IN_RawInput_KeyboardRead(void) else pnum = rawkbd[i].playerid % pnum; - IN_TranslateKeyEvent(wParam, lParam, down, pnum); + IN_TranslateKeyEvent(wParam, lParam, down, pnum); } void IN_RawInput_Read(HANDLE in_device_handle) diff --git a/engine/client/keys.c b/engine/client/keys.c index 82214915c..447f2d29d 100644 --- a/engine/client/keys.c +++ b/engine/client/keys.c @@ -1643,7 +1643,7 @@ void Key_Event (int pnum, int key, unsigned int unicode, qboolean down) } else { - sprintf (cmd, "+p%i %s\n", pnum+1, kb+1, key+oldstate*256); + sprintf (cmd, "p%i %s\n", pnum+1, kb, key+oldstate*256); Cbuf_AddText (cmd, bindcmdlevel[key][keystate]); } }