getch()-Äquivalent, das auf Linux UND Windows verlässlich funktioniert?



  • Hi,

    ich hab ne Programmierübung zu machen, bei der ein Tastendruck registriert wird und unmittelbar eine Aktion auslöst.

    Ich kenne getch() unter Win aus der conio und weiss, dass aus der ncurses entsprechende Funktionen unter Linux verwendet werden können.

    Ich möchte aber nun ein Programm schreiben, das in jedem Fall unter beiden Betriebssystemen genau gleich abläuft.

    Also im besten Fall sollte das ganze mit nativen Bibliotheken durchführbar sein, die auf beiden OSen standardmäßig verfügbar sind.

    Ist das machbar?

    Gruß und danke

    Jochen


  • Mod

    Ganz spontan würde ich dann sowas in der Art machen:

    #ifdef WINDOWS
     #include "conio.h"
     #define AUF_TASTENDRUCK_WARTEN getch();
    #elif defined(LINUX)
     #include "ncurses.h"
     #define AUF_TASTENDRUCK_WARTEN wie auch immer man das mit ncurses macht;
    #elif
    //Unbekanntes System, es wird nicht gewartet
     #define AUF_TASTENDRUCK_WARTEN
    #endif
    


  • #define AUF_TASTENDRUCK_WARTEN getch();
    wieso auch ne fkt nehmen, wenn mans auch schön hässlich mit makros kann ;P


  • Mod

    unskilled schrieb:

    #define AUF_TASTENDRUCK_WARTEN getch();
    wieso auch ne fkt nehmen, wenn mans auch schön hässlich mit makros kann ;P

    Oh, da war ich schon zu sehr in Makros vertieft um überhaupt an die Möglichkeit zu denken 🙂 . Du hast natürlich recht, so ist's besser:

    void auf_tastendruck_warten(){
    #ifdef WINDOWS
     getch();
    #elif defined(LINUX)
     wie auch immer man das mit ncurses macht;
    #endif
    }
    


  • Fein, ich danke euch. War ja schnell getan.

    Gruß

    Jochen


Log in to reply