ON KEY

Aus C64-Wiki
Zur Navigation springenZur Suche springen
ON KEY
Syntax: 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
Token: $64 $37 (100 55)
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 Kontroll-String (<string>) muss gesetzt werden, obwohl es keinerlei Funktion erfüllt.


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


Beispiel[Bearbeiten | Quelltext bearbeiten]

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.