From 89a93a892dd470f7315b5e3f3fd705ca9b63324c Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 4 Dec 2011 22:35:18 +0000 Subject: [PATCH] [Win32k] - Fix crash in shutdown, see bug 6714. svn path=/trunk/; revision=54595 --- .../subsystems/win32/win32k/ntuser/keyboard.c | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/reactos/subsystems/win32/win32k/ntuser/keyboard.c b/reactos/subsystems/win32/win32k/ntuser/keyboard.c index 87d0efceafa..f10c1108a67 100644 --- a/reactos/subsystems/win32/win32k/ntuser/keyboard.c +++ b/reactos/subsystems/win32/win32k/ntuser/keyboard.c @@ -841,7 +841,7 @@ ProcessKeyEvent(WORD wVk, WORD wScanCode, DWORD dwFlags, BOOL bInjected, DWORD d !IS_KEY_DOWN(gafAsyncKeyState, VK_CONTROL) && (wVk == VK_ESCAPE || wVk == VK_TAB)) { - TRACE("Alt-Tab/Esc Pressed wParam %x\n",Msg.wParam); + TRACE("Alt-Tab/Esc Pressed wParam %x\n",wVk); } /* If we have a focus queue, post a keyboard message */ @@ -1065,6 +1065,17 @@ IntTranslateKbdMessage(LPMSG lpMsg, LARGE_INTEGER LargeTickCount; BOOL bResult = FALSE; + switch(lpMsg->message) + { + case WM_KEYDOWN: + case WM_KEYUP: + case WM_SYSKEYDOWN: + case WM_SYSKEYUP: + break; + default: + return FALSE; + } + pWnd = UserGetWindowObject(lpMsg->hwnd); if (!pWnd) // Must have a window! { @@ -1073,7 +1084,14 @@ IntTranslateKbdMessage(LPMSG lpMsg, } pti = pWnd->head.pti; - pKbdTbl = pti->KeyboardLayout->spkf->pKbdTbl; + + if (!pti->KeyboardLayout) + { + pti->KeyboardLayout = W32kGetDefaultKeyLayout(); + pKbdTbl = pti->KeyboardLayout->spkf->pKbdTbl; + } + else + pKbdTbl = pti->KeyboardLayout->spkf->pKbdTbl; if (!pKbdTbl) return FALSE;