* fix fvisioncharmessage

This commit is contained in:
pierre 2002-05-28 19:12:26 +00:00
parent 6f8a05be13
commit ff8468c792
2 changed files with 76 additions and 16 deletions

View File

@ -39,6 +39,10 @@ uses
var
InputHandle : Handle;
StoredControlKeyState : longint;
lastir : INPUT_RECORD;
const
LastChar : char = #0;
const
@ -52,12 +56,12 @@ const
{ 05 unassigned } #0,
{ 06 unassigned } #0,
{ 07 unassigned } #0,
{ 08 VK_BACK } #0,
{ 08 VK_BACK } #8,
{ 09 VK_TAB } #9,
{ 0A unassigned } #0,
{ 0B unassigned } #0,
{ 0C VK_CLEAR ?? } #0,
{ 0D VK_RETURN } #0,
{ 0D VK_RETURN } #13,
{ 0E unassigned } #0,
{ 0F unassigned } #0,
{ 10 VK_SHIFT } #0,
@ -313,17 +317,35 @@ var
begin
fvisioncharmessagehandler:=0;
if (AMessage = WM_CHAR) then
exit;
begin
if LastChar<>#0 then
begin
Writeln('char ',chr(wparam and $ff),' $',hexstr(wparam,2));
Lastir.Event.KeyEvent.AsciiChar:=chr(wparam and $ff);
WriteConsoleInput(InputHandle,lastir,1,NumWritten);
LastChar:=#0;
end
else
begin
Writeln('char ',chr(wparam and $ff),' $',hexstr(wparam,2),' ignored');
end;
exit;
end;
if LastChar<>#0 then
begin
WriteConsoleInput(InputHandle,lastir,1,NumWritten);
LastChar:=#0;
end;
fillchar(ir,sizeof(ir),#0);
ir.EventType:=KEY_EVENT;
with ir.Event.KeyEvent do
begin
vKey:=WParam and $ff;
wRepeatCount:=lparam and $ffff;
IsExtended:=(lParam and (1 shl 24))<>0;
if AMessage = WM_KEYDOWN then
bKeyDown:=true;
wVirtualKeyCode:=vKey;
dwControlKeyState:=StoredControlKeyState;
AsciiChar:=KeyToAsciiCode[vKey];
if AsciiChar<>#0 then
begin
@ -331,6 +353,8 @@ begin
if ((StoredControlKeyState and SHIFT_PRESSED)=0) and
((wVirtualKeyCode>=VK_A) and (wVirtualKeyCode<=VK_Z)) then
AsciiChar:=chr(ord(AsciiChar) + ord('a')-ord('A'));
if bKeyDown then
LastChar:=AsciiChar;
end;
case vKey of
VK_SHIFT :
@ -367,9 +391,12 @@ begin
StoredControlKeyState:= StoredControlKeyState and not LEFT_ALT_PRESSED;
end;
end;
dwControlKeyState:=StoredControlKeyState;
end;
WriteConsoleInput(InputHandle,ir,1,NumWritten);
if Lastchar=#0 then
WriteConsoleInput(InputHandle,ir,1,NumWritten)
else
Lastir:=ir;
end;
{ this procedure allows to hook mouse messages }
@ -418,8 +445,11 @@ end.
{
$Log$
Revision 1.1 2002-05-24 09:35:20 pierre
Revision 1.2 2002-05-28 19:12:26 pierre
* fix fvisioncharmessage
Revision 1.1 2002/05/24 09:35:20 pierre
first commit, not fully functional yet
}
}

View File

@ -39,6 +39,10 @@ uses
var
InputHandle : Handle;
StoredControlKeyState : longint;
lastir : INPUT_RECORD;
const
LastChar : char = #0;
const
@ -52,12 +56,12 @@ const
{ 05 unassigned } #0,
{ 06 unassigned } #0,
{ 07 unassigned } #0,
{ 08 VK_BACK } #0,
{ 08 VK_BACK } #8,
{ 09 VK_TAB } #9,
{ 0A unassigned } #0,
{ 0B unassigned } #0,
{ 0C VK_CLEAR ?? } #0,
{ 0D VK_RETURN } #0,
{ 0D VK_RETURN } #13,
{ 0E unassigned } #0,
{ 0F unassigned } #0,
{ 10 VK_SHIFT } #0,
@ -313,17 +317,35 @@ var
begin
fvisioncharmessagehandler:=0;
if (AMessage = WM_CHAR) then
exit;
begin
if LastChar<>#0 then
begin
Writeln('char ',chr(wparam and $ff),' $',hexstr(wparam,2));
Lastir.Event.KeyEvent.AsciiChar:=chr(wparam and $ff);
WriteConsoleInput(InputHandle,lastir,1,NumWritten);
LastChar:=#0;
end
else
begin
Writeln('char ',chr(wparam and $ff),' $',hexstr(wparam,2),' ignored');
end;
exit;
end;
if LastChar<>#0 then
begin
WriteConsoleInput(InputHandle,lastir,1,NumWritten);
LastChar:=#0;
end;
fillchar(ir,sizeof(ir),#0);
ir.EventType:=KEY_EVENT;
with ir.Event.KeyEvent do
begin
vKey:=WParam and $ff;
wRepeatCount:=lparam and $ffff;
IsExtended:=(lParam and (1 shl 24))<>0;
if AMessage = WM_KEYDOWN then
bKeyDown:=true;
wVirtualKeyCode:=vKey;
dwControlKeyState:=StoredControlKeyState;
AsciiChar:=KeyToAsciiCode[vKey];
if AsciiChar<>#0 then
begin
@ -331,6 +353,8 @@ begin
if ((StoredControlKeyState and SHIFT_PRESSED)=0) and
((wVirtualKeyCode>=VK_A) and (wVirtualKeyCode<=VK_Z)) then
AsciiChar:=chr(ord(AsciiChar) + ord('a')-ord('A'));
if bKeyDown then
LastChar:=AsciiChar;
end;
case vKey of
VK_SHIFT :
@ -367,9 +391,12 @@ begin
StoredControlKeyState:= StoredControlKeyState and not LEFT_ALT_PRESSED;
end;
end;
dwControlKeyState:=StoredControlKeyState;
end;
WriteConsoleInput(InputHandle,ir,1,NumWritten);
if Lastchar=#0 then
WriteConsoleInput(InputHandle,ir,1,NumWritten)
else
Lastir:=ir;
end;
{ this procedure allows to hook mouse messages }
@ -418,8 +445,11 @@ end.
{
$Log$
Revision 1.1 2002-05-24 09:35:20 pierre
Revision 1.2 2002-05-28 19:12:26 pierre
* fix fvisioncharmessage
Revision 1.1 2002/05/24 09:35:20 pierre
first commit, not fully functional yet
}
}