ON KEY (TSB)

Aus C64-Wiki
Zur Navigation springenZur Suche springen
ON KEY (TSB)
Format: ON KEY <string>: <befehl>
Parameter
string: Tasten, die abgefangen werden sollen
befehl: z.B. GOTO 10000
Einordnung
Typ: Anweisung
Kontext: Strukturkontrolle
Aufgabe: Schaltet die Tastatur-Kontrolle ein
Abkürzung: oN oder on K
Verwandte Befehle
DISABLE - RESUME


Dieser Artikel beschreibt das Schlüsselwort ON KEY (TSB).
Das entsprechende Simons'-Basic-Schlüsselwort lautet ebenfalls ON KEY.

Typ: Anweisung
Syntax: ON KEY <string>: <befehl>

TSB kann beliebige Tastendrücke unabhängig vom laufenden Programm abfangen. Wenn eine solche Taste gedrückt wird, verzweigt der Interpreter in eine dafür vorzusehende Tastatur-Kontrollroutine innerhalb des Programms, in der dieser Tastendruck behandelt wird. Alle von der Tastatur aus erreichbaren Zeichen sind zulässig (und auch nur sinnvoll). Die zuletzt gedrückte Taste wird in der Speicherstelle $c5ec festgehalten und kann dort abgefragt werden.

Ein Zeichen spielt dabei eine besondere Rolle. Die schließende eckige Klammer ("]") veranlasst den Interpreter dazu, die Kontrollroutine permanent selbsttätig aufzurufen, was für Countdowns, Zeitzähler u.ä. verwendet werden könnte.

ON KEY dient hauptsächlich dazu, Hotkeys in menügeführten Programmen zu ermöglichen, z.B. könnte man auf Druck der Tastenkombination "C=b" aus jeder Programmsituation heraus ins Menü "Bearbeiten" wechseln.

Beachten: Da das in Simons' Basic notwendige Komma nach dem Kontrollstring hier nicht mehr erforderlich ist, müssen SB-Programme, die ON-KEY-Befehle enthalten, angepasst werden.

Beispiel: 

10 ON KEY "abc": GOTO 10000

... langes Programm ...

10000 DISABLE
10010 tt$ = CHR$(PEEK($c5ec))
10020 IF tt$ = "a" THEN PRINT AT(35,0)"ah! "
10030 IF tt$ = "b" THEN PRINT AT(35,0)"beh!"
10040 IF tt$ = "c" THEN PRINT AT(35,0)"zeh!"
10050 RESUME

(wenn der Benutzer "a", "b" oder "c" drückt, springt der Interpreter in die BASCIC-Zeile 10000)