Pfeiltasten einlesen



  • Hallo miteinander!

    Ich suche nach eine möglichkeit die Pfeiltasten einzulesen,
    bei mir will das einfach nicht funktionieren.

    Das heißt, das Programm soll erst dann weitermachen wenn die Pfeiltaste bsw. rechts gedrückt wird.

    Vielen Dank!

    sadway



  • Mittels termios sollte es funktionieren http://www.c-plusplus.net/forum/viewtopic.php?t=39509



  • Vielen Dank!

    Leider verstehe ich da nur Bahnhof... 😞

    Gibt es eigentlich so was wie selfhtml oder so,
    indem alle möglichen Befehle und die Benötigten headerdateien aufgelistet sind... vielleicht mit nen paar Beispielen?

    sadway



  • probier die getch Funktion aus dem Beispiel in dem Link und werte den Rückgabewert aus.



  • Irgendwie gibt es für alle Pfeiltasten die Zahl 27 aus...
    Habe ich vielleicht etwas falsch gemacht?

    Aber schon mal vielen vielen Dank für die Hilfe!!!

    sadway

    #include <iostream>
    #include <termios.h>
    using namespace std;
    
    int getch();
    
    int main()
    {
      int test;
      test = getch(); 
      cout << test;
    }
    
    int getch() 
    {
      static int ch = -1, fd = 0;
      struct termios neu, alt;
      fd = fileno(stdin);
      tcgetattr(fd, &alt);
      neu = alt;
      neu.c_lflag &= ~(ICANON|ECHO);
      tcsetattr(fd, TCSANOW, &neu);
      ch = getchar();
      tcsetattr(fd, TCSANOW, &alt);
      return ch;
    }
    


  • sadway schrieb:

    Irgendwie gibt es für alle Pfeiltasten die Zahl 27 aus...
    Habe ich vielleicht etwas falsch gemacht?

    Aber schon mal vielen vielen Dank für die Hilfe!!!

    sadway

    #include <iostream>
    #include <termios.h>
    using namespace std;
    
    int getch();
     
    int main()
    {
      int test;
      test = getch(); 
      cout << test;
    }
    
    int getch() 
    {
      static int ch = -1, fd = 0;
      struct termios neu, alt;
      fd = fileno(stdin);
      tcgetattr(fd, &alt);
      neu = alt;
      neu.c_lflag &= ~(ICANON|ECHO);
      tcsetattr(fd, TCSANOW, &neu);
      ch = getchar();
      tcsetattr(fd, TCSANOW, &alt);
      return ch;
    }
    

    wenn du folgendes program mal startest, dann bekommst du unterschiedlich Zahlen raus.

    int main()
    {
      int test;
      (void) getch();
      (void) getch()
      test = getch(); 
      cout << test;
      return 0;
    }
    

    Also, bei dem Druck auf eine Pfeil-Taste werden drei Werte erzeugt. Der 1. 27, der 2. 91 und der 3. haegt von der gedruckten Taste ab.



  • Danke!

    Jetzt funktioniert es! 🙂


Anmelden zum Antworten