program TestKBD;
{$X+}

{$IFNDEF OS2}
 Sorry, this code is for OS/2 only...
{$ENDIF}

uses
{$IFDEF FPC}
 KbdCalls;
{$ELSE}
 {$IFDEF VIRTUALPASCAL}
 Os2Base;
 {$ELSE}
  {$IFDEF SPEED}
 BseSub;
  {$ELSE}
 Os2Subs;
  {$ENDIF}
 {$ENDIF}
{$ENDIF}

function ExtKeyPressed: boolean;       (* 'key' is here as well e.g. a shift *)
var
{$IFNDEF VER70} (* patched Borland Pascal *)
 KI: KbdKeyInfo;
 K: KbdInfo;
{$ELSE}
 KI: TKbdKeyInfo;
 K: TKbdInfo;
{$ENDIF}
 B: boolean;
begin
 B := false;
 K.cb := SizeOf (K);
 KbdGetStatus (K, 0);
 KbdPeek (KI, 0);
 if (KI.fbStatus and $FE <> 0) or (K.fsState and $FF0F <> 0) then
 begin
  ExtKeyPressed := true;
  if KI.fbStatus and $FE <> 0 then KbdCharIn (KI, IO_NOWAIT, 0);
 end else ExtKeyPressed := false;
end;

begin
 repeat until not (ExtKeyPressed);
 WriteLn (#13#10'Press _any_ key to continue (including shifts etc.) ...');
 repeat until ExtKeyPressed;
end.
