[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]
{ > how do I get the f11 and f12 keys? }
Program ReadF11F12Keys;
{ Written by Andrew Eigus of 2:5100/33@fidonet.org }
{ SWAG donation... }
const
F11 = #$85;
F12 = #$86;
Function ReadKey : char; assembler;
Asm
mov ah,08h
int 21h
End; { ReadKey }
var
Ch : char;
Extended : boolean;
Begin
Write('Press F11 or F12 to quit... ');
repeat
Ch := ReadKey;
if Ch = #0 then
begin
Extended := True;
Ch := ReadKey
end else Extended := False;
until (Ch in [F11,F12]) and Extended;
WriteLn('Done.')
End.
{
> ALSO! What is bit 8 in that address?
Two bytes at address 0:0417 and 0:0418 identify the status of the keyboard
shift keys and keyboard toggles. INT 16H returns the first byte in AL.
ÖÄ7ÂÄ6ÂÄ5ÂÄ4ÂÄ3ÂÄ2ÂÄ1ÂÄ0· Perform INT 16H Fn 02H
ºI ³C ³N ³S ³a ³c ³sL³sRº or fetch AL=byte at 0:0417
ÓÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒ½ bit
º º º º º º º ÈÍ 0: alpha-shift (right side) DOWN (AL & 01H)
º º º º º º ÈÍÍÍÍ 1: alpha-shift (left side) DOWN (AL & 02H)
º º º º º ÈÍÍÍÍÍÍÍ 2: Ctrl-shift (either side) DOWN (AL & 04H)
º º º º ÈÍÍÍÍÍÍÍÍÍÍ 3: Alt-shift (either side) DOWN (AL & 08H)
º º º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍ 4: ScrollLock state (AL & 10H)
º º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 5: NumLock state (AL & 20H)
º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 6: CapsLock state (AL & 40H)
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 7: Insert state (AL & 80H)
ÖÄ7ÂÄ6ÂÄ5ÂÄ4ÂÄ3ÂÄ2ÂÄ1ÂÄ0·
ºi ³c ³n ³s ³ ³sy³aL³cLº fetch AL=byte at 0:0418
ÓÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒ½ bit
º º º º º º º ÈÍ 0: Ctrl-shift (left side) DOWN (AL & 01H)
º º º º º º ÈÍÍÍÍ 1: Alt-shift (left side) DOWN (AL & 02H)
º º º º º ÈÍÍÍÍÍÍÍ 2: SysReq DOWN (AL & 04H)
º º º º ÈÍÍÍÍÍÍÍÍÍÍ 3: hold/pause state (AL & 08H)
º º º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍ 4: ScrollLock DOWN (AL & 10H)
º º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 5: NumLock DOWN (AL & 20H)
º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 6: CapsLock DOWN (AL & 40H)
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 7: Insert DOWN (AL & 80H)
Notes: Bits 0-2 of 0:0418 are defined only for the 101-key enhanced keyboard.
The 101-key BIOS INT 16H Fn 12H returns AL as with Fn 02, but AH is
returned with the following bit-flag layout:
ÖÄ7ÂÄ6ÂÄ5ÂÄ4ÂÄ3ÂÄ2ÂÄ1ÂÄ0·
ºsy³c ³n ³s ³aR³cR³aL³cLº Perform INT 16H Fn 12H (101-key BIOS only)
ÓÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒ½ bit
º º º º º º º ÈÍ 0: Ctrl-shift (left side) DOWN (AH & 01H)
º º º º º º ÈÍÍÍÍ 1: Alt-shift (left side) DOWN (AH & 02H)
º º º º º ÈÍÍÍÍÍÍÍ 2: Ctrl-shift (right side) DOWN (AH & 04H)
º º º º ÈÍÍÍÍÍÍÍÍÍÍ 3: Alt-shift (right side) DOWN (AH & 08H)
º º º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍ 4: ScrollLock DOWN (AH & 10H)
º º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 5: NumLock DOWN (AH & 20H)
º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 6: CapsLock DOWN (AH & 40H)
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 7: SysReq DOWN (AH & 80H)
Some older programs change the values of NumLock and CapsLock state
bits (at 0:0417) to force a known status. This is unwise because
modern keyboards have indicator lights which will get out of sync with
the status. See AT Keyboard for more information on the lock-key LEDs.
PCjr status bytes at 0:0488 are omitted for lack of interest [mineÄDR].
}
[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]