Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - MULTIKEY

Referenz-Navigation

 

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.

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 BefehlsreferenzeintragINCLUDE 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:

Unterschiede unter den FB-Dialektformen:
In der Dialektform Befehlsreferenzeintrag-lang qb steht MUKTIKEY nicht zur Verfügung und kann nur über __MULTIKEY aufgerufen werden.

Siehe auch:
BefehlsreferenzeintragINKEY, BefehlsreferenzeintragDOS Keyboard Scancodes, BefehlsreferenzeintragBenutzereingaben


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 21.07.2007 von AdministratorSebastian angelegt.
  • Die aktuellste Version wurde am 31.05.2023 von Redakteurnemored gespeichert.
  Versionen Versionen