Referenz - MULTIKEY
Syntax: MULTIKEY (Scancode)
Typ: Funktion
Kategorie: Benutzereingabe
MULTIKEY reagiert auf (multiple) Tastendrücke. Diese Funktion zeigt an, ob die angegebene Taste gerade gedrückt wird.
- 'Scancode' ist der DOS-Hardware Scancode der Taste, auf die die Anfrage stattfinden soll.
- Der Rückgabewert (vom Typ LONG) ist -1, wenn die angegebene Taste gerade gedrückt wird. Ansonsten ist das Ergebnis 0.
- Der Tastaturpuffer wird nicht geleert, wenn MULTIKEY verwendet wird; jede gedrückte Taste wird gespeichert, bis sie z. B. durch INKEY abgefragt wird. Damit kein Überlauf im Tastaturpuffer stattfindet, müssen Sie diesen selbständig leeren; es empfiehlt sich daher, MULTIKEY in Kombination mit INKEY zu verwenden.
Das Arbeiten mit MULTIKEY ist komfortabler als der alleinige Einsatz von INKEY; da das gleichzeitige Drücken zweier Tasten mit einer einfachen AND-Verknüpfung geschehen kann:
IF MULTIKEY(&h01) AND _
(MULTIKEY(&h2A) OR MULTIKEY(&h36)) THEN ...
Der Code hinter THEN würde ausgeführt, wenn Escape (Code &h01) und gleichzeitig (AND) die linke Shifttaste (Code &h2A) oder (OR) die rechte Shifttaste (Code &h36) gedrückt sind. Mit INKEY dagegen wäre eine Unterscheidung zwischen linker und rechter Shifttaste gar nicht möglich. Da MULTIKEY den Tastaturpuffer nicht leert, bietet es sich an, in Schleifen die Bedingung zum Verlassen der Schleife mit INKEY zu prüfen, während alle anderen Tastatureingaben bequem mit MULTIKEY ausgewertet werden. Ist dies nicht möglich, kann der Tastaturpuffer mit diesem Code leer gehalten werden:
WHILE LEN(INKEY) : WEND
Beispiel:
DIM AS INTEGER work_page, x, y
'Grafikfenster 640x480x8 mit zwei Seiten initialisieren
SCREENRES 640, 480, ,2
COLOR 2, 15
work_page = 0
x = 320
y = 240
DO
SLEEP 1
' Eine Seite beschreiben, während die andere angezeigt wird
SCREENSET work_page, work_page XOR 1
' Überprüfe die Pfeiltasten und aktualisiere die Koordinaten
' x, y entsprechend.
IF MULTIKEY(&h4D) AND x < 639 THEN x += 1
IF MULTIKEY(&h4B) AND x > 0 THEN x -= 1
IF MULTIKEY(&h50) AND y < 479 THEN y += 1
IF MULTIKEY(&h48) AND y > 0 THEN y -= 1
CLS
CIRCLE(x, y), 30, , , , ,F
' Seite wechseln
work_page = work_page XOR 1
LOOP UNTIL INKEY = CHR(27) ' Bis ESC gedrückt wird weitermachen
' Setze aktive und sichtbare Bildschirmseite wieder auf 0
SCREENSET
PRINT "Beliebige Taste zum Beenden druecken."
SLEEP
Anmerkung: Sämtliche Keyboard-Scancodes sind in der Datei fbgfx.bi als Symbole mit verständlichen Namen definiert. Indem Sie diese Datei mit INCLUDE einbinden, ersparen Sie sich beim Programmieren das Nachsehen, welcher Code für welche Taste steht.
Beispiel:
#INCLUDE "fbgfx.bi"
IF MULTIKEY(FB.SC_F1) THEN PRINT "F1 wurde gedrückt."
IF MULTIKEY(FB.SC_LEFT) THEN PRINT "Linke Pfeiltaste wurde gedrückt."
IF MULTIKEY(FB.SC_RIGHT) THEN PRINT "Rechte Peiltaste wurde gedrückt."
'...
Sollte die Datei fbgfx.bi sich nicht in Ihrem Include-Verzeichnis befinden, können Sie den Code verwenden, der unter DOS Keyboard Scancodes der Referenz hinterlegt ist.
Unterschiede zu QB: neu in FreeBASIC
Plattformbedingte Unterschiede:
Die Unterstützung von MULTIKEY im Konsolenfenster ist möglicherweise nicht unter allen Plattformen gewährleistet.
Unterschiede zu früheren Versionen von FreeBASIC:
- Seit Version v0.15 können die erweiterten Scancodes auch in der DOS-Version abgefragt werden.
- Seit Version v0.14 kann MULTIKEY auch im Konsolen-Modus eingesetzt werden.
Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht MUKTIKEY nicht zur Verfügung und kann nur über __MULTIKEY aufgerufen werden.
Siehe auch:
INKEY, DOS Keyboard Scancodes, Benutzereingaben
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|