Вот моя процедура которая замечательно справляется с этой проблемой (правдо на Delphi):
// Code — код клавиши
// Count — колличество нажатий
Procedure MyKeyUp(Code: Integer; Count: Integer);
var
i : Integer;
begin
for i := 1 to Count do begin
keybd_event(Code, MapVirtualKeyEx(Code, 0, GetKeyboardLayout(GetCurrentThreadId())), 0, 0);
keybd_event(Code, MapVirtualKeyEx(Code, 0, GetKeyboardLayout(GetCurrentThreadId())), KEYEVENTF_KEYUP, 0);
end;
end;