'============================================================================
' (p)'23/02/2003 by East-Power-Soft
'
' Tipp 7: Abfrage und Ändern des Tastaturstatus.
'============================================================================

'============================================================================
' Bitverteilung im Tastaturstatusbyte.
'============================================================================

'---> Bit0 = Rechte Shift (1)
'---> Bit1 = Linke Shift (2)
'---> Bit2 = Strg (4)
'---> Bit3 = Alt (8)
'---> Bit4 = Rollen (16)
'---> Bit5 = Num-Lock (32)
'---> Bit6 = Caps-Lock (64)
'---> Bit7 = Einfügen (128)

DEF SEG = &H40
ORG = PEEK(&H17): '---> Anfangsstatus merken
DEF SEG

'============================================================================
' Beispiel
'============================================================================
CLS
PRINT "Manchmal ist es notwendig, oder wünschenswert, den Status der Tastatur zu"
PRINT "erfahren oder zu ändern. Um dies zu erreichen muß man lediglich das"
PRINT "Tastaturstatusregister, PEEK(&H17) im Segment &H40, abfragen bzw. neu"
PRINT "beschreiben. Wenn Du jetzt auf Deine Tastatur siehst, sollten die LED's"
PRINT "für Num-Lock, Caps-Lock und Rollen blinken. So wie die Lampen blinken, ändert"
PRINT "sich auch deren Status. Anderst läßt sich dieses Beispiel leider nicht erklären."
PRINT "Hier hilft nur ausprobieren.";
COLOR 14: PRINT "Ende mit RETURN."

DEF SEG = &H40

DO
FOR P = 0 TO 80000: NEXT
POKE &H17, 16 + 32 + 64  '---> Hier wird der neue Status gesetzt
A$ = INKEY$              '---> damit er wirksam wird, muá die Tastatur
IF A$ = "" THEN          '---> einmal abgefragt werden.
FOR P = 0 TO 80000: NEXT
POKE &H17, 0
A$ = INKEY$
ELSE
EXIT DO
END IF
LOOP

POKE &H17, ORG AND NOT (15) '---> Anfangswert wiederherstellen
DEF SEG                     '---> aber die Bit's 0-3 ausschalten
A$ = INKEY$