Index: C:/ROS/reactos/win32ss/user/user32/windows/accel.c =================================================================== --- win32ss/user/user32/windows/accel.c (revision 63011) +++ win32ss/user/user32/windows/accel.c (working copy) @@ -344,21 +344,36 @@ */ int WINAPI TranslateAcceleratorA(HWND hWnd, HACCEL hAccTable, LPMSG lpMsg) { - MSG mCopy = *lpMsg; - CHAR cChar; - WCHAR wChar; - NTSTATUS Status; + MSG msgW = *lpMsg; + CHAR cChar; + WCHAR wChar; + NTSTATUS Status; - if(!U32IsValidAccelMessage(lpMsg->message)) return 0; + switch (lpMsg->message) + { + case WM_KEYDOWN: + case WM_SYSKEYDOWN: + return TranslateAcceleratorW(hWnd, hAccTable, lpMsg); - Status = RtlMultiByteToUnicodeN(&wChar, sizeof(wChar), NULL, &cChar, sizeof(cChar)); - if(!NT_SUCCESS(Status)) - { - SetLastError(RtlNtStatusToDosError(Status)); - return 0; - } + case WM_CHAR: + case WM_SYSCHAR: + { + wChar = LOWORD(lpMsg->wParam); - return TranslateAcceleratorW(hWnd, hAccTable, &mCopy); + Status = RtlMultiByteToUnicodeN(&wChar, sizeof(wChar), NULL, &cChar, sizeof(cChar)); + if (!NT_SUCCESS(Status)) + { + SetLastError(RtlNtStatusToDosError(Status)); + return 0; + } + + msgW.wParam = MAKEWPARAM(wChar, HIWORD(lpMsg->wParam)); + return TranslateAcceleratorW(hWnd, hAccTable, &msgW); + } + + default: + return 0; + } } /* EOF */