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!

Häufig gestellte Fragen (FAQ) zu FreeBASIC

Frage:

Wie kann ich prüfen, ob Pfeiltasten / ESC / Enter / der Schließen-Knopf des Fensters gedrückt wurde?

Antwort:

Um zu prüfen, ob eine bestimmte Taste gedrückt worden ist, stehen zwei Befehle, BefehlsreferenzeintragInKey und BefehlsreferenzeintragMultiKey, zur Verfügung, die unterschiedliche Stärken und Schwächen aufweisen. (Nähere Erläuterungen dazu finden sich in den verlinkten Befehlsreferenzeinträgen.)

Im Folgenden finden Sie zu beiden Befehlen jeweils ein kurzes Code-Beispiel:

Code für InKey:

Dim taste As String
Do
    taste = InKey
    If taste = Chr(13) Then Print "Enter gedrückt!"
    If taste = Chr(27) Then Print "ESCape gedrückt!"
    If taste = Chr(255, 72) Then Print "Nach-Oben gedrückt!"
    If taste = Chr(255, 75) Then Print "Nach-Links gedrückt!"
    If taste = Chr(255, 77) Then Print "Nach-Rechts gedrückt!"
    If taste = Chr(255, 80) Then Print "Nach-Unten gedrückt!"
    If taste = Chr(255, 107) Then Print "Schließen-Kopf gedrückt!"
    Sleep 1 'Auslastung verringern
Loop Until taste = Chr(27) Or taste = Chr(255, 107)
Sleep

Code für MultiKey:

Do
    If MultiKey(28) Then Print "Enter gedrückt!"
    If MultiKey(1) Then Print "ESCape gedrückt!"
    If MultiKey(72) Then Print "Nach-Oben gedrückt!"
    If MultiKey(75) Then Print "Nach-Links gedrückt!"
    If MultiKey(77) Then Print "Nach-Rechts gedrückt!"
    If MultiKey(80) Then Print "Nach-Unten gedrückt!"
    Sleep 1 'Auslastung verringern
Loop Until Multikey(1)
Sleep

Mit MultiKey ist die Überprüfung des Schließen-Knopfs leider nicht möglich.


Code für bestimmte Taste herausfinden

Wie anhand der obigen Code-Beispiele deutlich wurde, benötigen Sie zum Überprüfen, ob eine bestimmte Taste bzw. Tastenkombination gedrückt wurde, mitunter deren nummerischen Code. Je nachdem, ob Sie INKEY oder MULTIKEY (siehe oben) verwenden, ist das Vorgehen unterschiedlich.

Die Keyboard-Scancodes, wie mit MULTIKEY verwendet werden, können in einer BefehlsreferenzeintragTabelle innerhalb der Befehlsreferenz nachgeschlagen werden.

Für die ASCII-Codes von INKEY steht ebenfalls eine Tabelle zur Verfügung, die jedoch nicht die Codes von Tastenkombinationen oder einigen Steuertasten (z.B. der Pfeiltasten) enthält.
Eine Lösung bietet hier das folgende kleine Programm:

Dim As String Eingabe
Dim As Integer i
Print "Druecken Sie die Taste oder Tastenkombination, deren ASCII-Code Sie"
Print "herausfinden moechten. Mit ESC (=CHR(27)) wird das Programm beendet."
Print
Do
    Sleep 1
    Eingabe = Inkey
    if Eingabe <> "" Then
        Print "CHR(";
        For i = 1 To Len(Eingabe)
             IF i > 1 Then Print ",";
             Print Asc(Mid(Eingabe,i,1));
        Next i
        Print ")"
    End If
Loop Until Eingabe = Chr(27) '=ESCape
Print
Print "ESC gedrueckt."
End

Sie müssen das Programm lediglich compilieren, ausführen und anschließend die gesuchte Taste oder Tastenkombination drücken, um ihren ASCII-Code (CHR-Code) für INKEY herauszufinden.
Das Programm funktioniert nicht nur für alphanummerische Tasten, sondern auch für Tastenkombinationen wie STRG+PfeiltasteHoch.

[Zurück zur FAQ-Übersicht]