Ich vermisse da in deinem Code irgendwie die Prüfung auf die Art der Meldung, die geschickt wurde...
Delphi-Quellcode:
with TMsg(Pointer(lParam)^) do
{->} if (Message = WM_KEYDOWN) or (Message = WM_KEYUP) then
begin
if wParam = VK_ADD then wParam := VK_TAB;//Kill := True;
end;