Totat Verzweifelt: Wie unter Linux auf Tasteneingabe reagieren?



  • Hallo
    Ich bin Linuxprogrammieranfänger und total verzweifelt.
    Mit welchem Befehl kann ich es erreichen, dass mein Programm
    auf Eingabe irgendeiner Taste reagiert, und nicht Enter gedrückt
    werden muss??? Welche Header Dateien einbinden?

    Ich hab schon das ganze Internet zu diesem Thema durchsucht und versucht curses.h einzubinden, aber das geht irgendwie bei mir nicht.

    Ich bitte um Hilfe, und würde mich auf Antworten freuen!!!



  • Linux Anfänger schrieb:

    Hallo
    Ich bin Linuxprogrammieranfänger und total verzweifelt.
    Mit welchem Befehl kann ich es erreichen, dass mein Programm
    auf Eingabe irgendeiner Taste reagiert, und nicht Enter gedrückt
    werden muss??? Welche Header Dateien einbinden?

    Ich hab schon das ganze Internet zu diesem Thema durchsucht und versucht curses.h einzubinden, aber das geht irgendwie bei mir nicht.

    Ich bitte um Hilfe, und würde mich auf Antworten freuen!!!

    Hast du libncurses-dev installiert? Wie sehen deine LDFLAGS aus? Steht da -lncurses in drin?



  • Ich habe SuSE 8.2 (Kernel 2.4.20)
    da gibts kein libncurses-dev aber dafür ncurses und ncurses-devel,
    die ich installiert hab.

    Was sind LDFLAGS ? und wo schau ich da nach?

    Gibts für Linux nicht einfach einen einfachen Befehl, der abfrägt ob eine
    Tastaturtaste gedrückt wurde?



  • hi, hier ist ein kleines beispiel (das hoffentlich funktionier, habs
    seit ewigkeiten nicht mehr "angefasst"):

    /* fuer alle ncurses funktionen: getch etc */
    #include <ncurses.h> 
    
    /* sonstige header (haben nichts mit ncurses zu tun) */
    #include <stdlib.h> /* fuer atexit() */
    #include <stdio.h>
    
    int main()
    {
      int taste;
    
      /* ncurses initialisieren
       * ist zwingend notwendig sonst geht nix
       */
      initscr();
    
      /* atexit( endwin ); */
    
      /* cursor in die linke obere ecke bewegen
       */
      move( 0, 0 );
    
      printw( "druecke eine taste: " );
    
      /* warte auf einen tastendruck
       */
      taste = getch();
    
      /* alle von der ncurses lib belegten resourcen freigeben
       *
       * besser per "atextit( endwin );" nach dem initialisieren
       * (siehe oben)
       */
      endwin();
    
      return 0;
    }
    

    compilieren musst du das ganze mit:
    gcc testProgramm -lncurses

    kleine anmerkung:
    das "-lncurses" sorgt dafuer, dass der linker die libncurses.a bibliothek
    mit einbindet. diese wird nicht automatisch mit eingebunden und du wuerdest
    lauter fehlermeldungen ("undefined reference .... ") erhalten.


Anmelden zum Antworten