ON KEY

Aus C64-Wiki
Wechseln zu: Navigation, Suche
ON KEY
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: keine
Verwandte Befehle
DISABLE - RESUME


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort ON KEY.

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

Simons' Basic 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 Systemvariablen STATUS (ST) festgehalten und kann dort abgefragt werden.

Nicht im Handbuch erwähnt: 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.

Leider verlangsamt dieser Befehl ein laufendes Programm derartig einschneidend, dass er für die gedachten Zwecke völlig ungeeignet ist. Beachten: Das Komma nach dem Kontrollstring (<string>) muss gesetzt werden, obwohl es keinerlei Funktion erfüllt.

Beispiel: 

10 ON KEY "abc",: GOTO 10000

... langes Programm ...

10000 DISABLE
10010 tt$ = CHR$(STATUS)
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)

Dieser Befehl wurde in TSB so überarbeitet, dass er nunmehr voll funktionsfähig ist, siehe ON KEY (TSB).