Wie KEY_ESC aktivieren (ncurses.h - linux/input.h)?



  • Ich beschaeftige miich gerade mit Konstanten a'la KEY_RIGHT, KEY_LEFT etc.. Ich hoffe, ich habe mich da richtig ausgedrueckt ...

    Wenn ich das richtig sehe, dann sind diese Konstanten z. B. in ncurses.h definiert, welches ich mit

    #include <ncurses.h>
    

    einbinde. Was ich dort vermisse ist ein KEY_ESC oder so aehnlich.

    Nun habe ich irgendwo glesen, ich solle die linux/input.h mit

    #include <linux/input.h>
    

    einbinden, dort waeren die Konstanten ebenfals definiert (oder sagt man deklariert?).

    Es funktioniert bis auf KEY_ESC auch wunderbar, allerdings nur wenn ich die <linux/input.h> vor der <ncurses.h> einbinde.

    Dazu habe ich zwei Fragen:

    1. Gibt es keine Probleme wenn ich beide Dateien gleichzeitig einbinde, die Konstanten also doppelt deklariert werden?

    2. Wie kann ich KEY_ESC aktivieren? Wenn ich nur die ncurses einbinde, dann kennt der Compiler (Linker?) KEY_ESC nicht, die auch in der ncurses.h tatsaechlich nicht auftaucht. Wenn ich zusaetzlich die linux/input.h einbinde - dort gibt es KEY_ESC -,dann kriege ich zwar keine Fehlermeldung mehr, aber die Taste funktioniert dennoch nicht.

    Das ganzes spielt sich uebrigens unter Fedora Core 6 und gcc/g++ ab.

    Und wieder mal ein grosses DANKESCHOEN im voraus.

    Gruss

    Guenther



  • man getch schrieb:

    Use of the escape key by a programmer for a single character function
    is discouraged, as it will cause a delay of up to one second while the
    keypad code looks for a following function-key sequence.

    warum sie die jetzt gleich ganz weggelassen haben weiß ich auch nicht.

    Statt dem linux-include kannst du auch machen:

    #define KEY_ESCAPE 27



  • DrGreenthumb schrieb:

    Statt dem linux-include kannst du auch machen:
    #define KEY_ESCAPE 27

    Jo, das klappt, DANKE ...... 🙂



  • gboelter schrieb:

    DrGreenthumb schrieb:

    Statt dem linux-include kannst du auch machen:
    #define KEY_ESCAPE 27

    Jo, das klappt, DANKE ...... 🙂

    Mist, klappt doch nicht so richtig. Zwar reagiert mein Programm jetzt auf ESC, aber leider auch hier mit besagter Sekunde Verzoegerung im Vergleich zu anderen Tasten.

    Ist aber kein Problem, denn ich kann da problemlos auf eine andere Tastenkombination ausweichen. Hauptsache ist, dass ich Dank Deiner Hilfe jetzt das Prinzip dahinter verstanden ...

    Gruss

    Guenther



  • @ gboelter:

    Beiträge zu ncurses in Zukunft bitte in Unix/Linux stellen. Wir sind der Meinung, dass sie dort besser aufgehoben sind. Hier geht es ja nur um ANSI C. Danke 🙂



  • Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Tim schrieb:

    @ gboelter:
    Beiträge zu ncurses in Zukunft bitte in Unix/Linux stellen. Wir sind der Meinung, dass sie dort besser aufgehoben sind.

    Sorry, stimmt, werde ich zukuenftig drauf achten ....

    Tim schrieb:

    Hier geht es ja nur um ANSI C. Danke 🙂

    Na ja, eigentlich nicht. Bei der Frage ging es eigentlich schon um ein reines ANSI C Problem, naemlich um die Definition von Symbolischen Konstanten mit #define. Das war aber aus der Ueberschrift wirklich nicht gleich erlennbar.

    Aber auch da werde ich zukuenftig drauf achten.

    Sorry again ... 🙄

    Gruss

    Guenther


Anmelden zum Antworten