[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]