--- wine/dlls/user/menu.c 2004-09-21 10:53:51.000000000 +0200 +++ mywine/dlls/user/menu.c 2004-09-23 18:35:42.000000000 +0200 @@ -4523,7 +4523,7 @@ if (wParam != key) return FALSE; - if (message == WM_CHAR || message == WM_SYSCHAR) + if (message == WM_CHAR) { if ( !(fVirt & FALT) && !(fVirt & FVIRTKEY) ) { @@ -4682,6 +4682,7 @@ /* YES, Accel16! */ LPACCEL16 lpAccelTbl; int i; + UINT kbdmessage; if (msg == NULL) { @@ -4704,10 +4705,16 @@ "msg->hwnd=%p, msg->message=%04x, wParam=%08x, lParam=%lx\n", hAccel,hWnd,msg->hwnd,msg->message,msg->wParam,msg->lParam); + kbdmessage = msg->message; + if( kbdmessage >= WM_SYSKEYDOWN && + !(msg->lParam & 0x20000000)) /* 0 if sent to the active window */ + /* because there is no keyboard focus */ + kbdmessage -= (WM_SYSKEYDOWN - WM_KEYDOWN); + i = 0; do { - if (translate_accelerator( hWnd, msg->message, msg->wParam, msg->lParam, + if (translate_accelerator( hWnd, kbdmessage, msg->wParam, msg->lParam, lpAccelTbl[i].fVirt, lpAccelTbl[i].key, lpAccelTbl[i].cmd)) return 1; } while ((lpAccelTbl[i++].fVirt & 0x80) == 0);