Referenz - MULTIKEY
Syntax: MULTIKEY(Scancode)
Typ: Funktion
Kategorie: Eingabe
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 (Siehe
DOS Keyboard Scancodes.) - Der Rückgabewert (vom Typ
INTEGER) ist entweder -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 durch
INKEY abgefragt wird. Damit kein Überlauf im Tastaturpuffer stattfindet, müssen Sie diesen selbstständig leeren; es empfiehlt sich daher, MULTIKEY in Kombination mit
INKEY zu verwenden.
MULTIKEY kann erst seit Version v0.14 im Konsolen-Modus eingesetzt werden; in früheren Versionen von FreeBASIC war der Einsatz von MULTIKEY auf Grafikmodi beschränkt. 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) entweder 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 Shift- Taste 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, wie in diesem Beispiel. 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."
GETKEY
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
Unterschiede zu früheren Versionen von FreeBASIC:
- Seit Version v0.15 können die erweiterten Scan Codes auch in der DOS-Version abgefragt werden.
- Seit Version v0.14 kann MULTIKEY auch im Konsolen-Modus eingesetzt werden.
Siehe auch:
INKEY,
SCREENRES,
DOS Keyboard Scancodes
| Zusätzliche Informationen und Funktionen | ||||
|---|---|---|---|---|
|
||||




FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Versionen