ON KEY
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.
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE