Tastendruck soll etwas auslösen



  • Hallo,
    ich habe eine kleine Frage, da ich noch absoluter Anfänger in C++ bin.
    Und zwar wollte ich ein Konsolenprogramm erstellen, was jedesmal, wenn ich die Taste b drücke, z.B. "Taste b wurde gedrückt" ausgibt.
    Das Problem ist, dass ich immer die enter Taste drücken muss, wenn ich cin verwende.
    Denke mal den Code kann ich mir hier sparen..
    Wie kriege ich das ohne die enter Taste hin?



  • Kinemeier schrieb:

    Wie kriege ich das ohne die enter Taste hin?

    Gar nicht. Für dein Standard C++ Programm ist die Eingabe eine Datei, und wann da rein geschrieben wird entscheidet dein Betriebssystem. Du kannst allerdings Betriebssystemfunktionen dafür nutzen, wenn du uns sagst welches OS du hast, dann können wir den Thread dahin verschieben.

    Mal gleich für Windows (WinAPI): GetKeyState, GetAsyncKeyState.



  • http://www.c-plusplus.net/forum/39320

    Kurz durchgeguckt sieht gut aus. Unter Linux müsstes du dann nur einfach die getch funktion selbst einfügen .



  • Ja, also wie bereits gesagt, kannst du dir folgendes Basteln:

    #include <iostream>
    #include <conio.h>
    
    int main()
    {
        for(char a(getch());;a = getch())
            std::cout << "Folgende Taste wurde gedrückt: " << a << '\n';
    }
    

    Ungetestet.
    Die Funktionen von SeppJ cooky451 (^^) sind aus der WINAPI, allerdings nicht was du suchst, da sie nicht warten/blockieren.



  • Funktioniert, sogar die Sonderzeichen erkennt er.
    Gut, die Entf Taste nicht so richtig, aber darauf kann ich verzichten.
    Danke.

    Cho++ schrieb:

    Unter Linux müsstes du dann nur einfach die getch funktion selbst einfügen.

    Wenn ich mir die Datei conio.h angucke... verstehe ich noch nichts. Plattformunabhängig wäre schon gut, aber alles zu seiner Zeit.


Log in to reply