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, InKey und MultiKey, 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 Tabelle 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.