[Back to KEYBOARD SWAG index]  [Back to Main SWAG index]  [Original]

{  Return Extended keys for 101 Keyboard including F11/F12.
   If key is extended, the BOOLEAN = TRUE.  This is needed as Home key will
   return the same character value as 'G' }

USES DOS;

VAR Ch : Char;
    Ext : BOOLEAN;

function ExReadKey(VAR Extended : BOOLEAN) : char;
var Regs : registers;
begin
  Regs.AX := $1000;
  Intr($16,Regs);
  Extended := (Regs.AL = 0) OR (Regs.AL > 127);
  IF Extended THEN ExReadKey  := Chr(Regs.AH)
  ELSE ExReadKey := Chr(Regs.AL);
end;

function ReadKey : char;
{ This function adds 128 to char if it is extended }
var Regs : registers;
begin
  Regs.AX := $1000;
  Intr($16,Regs);
  IF (Regs.AL = 0) OR (Regs.AL > 127) THEN
  ReadKey  := Chr(Regs.AH + 128) ELSE ReadKey := Chr(Regs.AL);
end;

Begin
Repeat
ch := ReadKey;
WriteLn(ch,' ',Ext,' ',ORD(Ch));
Until Ch = #27;
END.

[Back to KEYBOARD SWAG index]  [Back to Main SWAG index]  [Original]