Tab statt Enter



  • Hier mein (neues) Problem:

    ich möchte bei einer Eingabe erreichen, dass der Benutzer bei Betätigung der Entertaste nur eine Tab-Entfernung weiter kommt und ansonsten auch mit der Leertaste sowie den Richtungstasten nix anfangen kann. Ich habe keinerlei idee, ob und wie man das machen kann!



  • Hi,
    dies geht soweit ich weiß nicht mit reinem ANSI-C. In der conio.h gibt es allerdings die getch()-Funktion, die dir vielleicht hilft!



  • Hallo

    Du musst den Tastendruck abfangen und dann entsprechend reagieren.

    chrische



  • Ich II. schrieb:

    Hi,
    dies geht soweit ich weiß nicht mit reinem ANSI-C. ...

    ... die Aussage ist leider nicht korrekt 😢
    Zumindest unter UNIX/Linux kann man die Konsoleingabe komplett umbiegen und muss dann aber auch alle Eingabezeichen selbst interpretieren. Für das Umbiegen gibt es entsprechende ioctl() Systemcalls. U.a. muss man z.B. ICANON deaktivieren. Darüber hinaus gibt es spezielle Zeichen, die Sonderfunktionen haben und INTR bzw. QUIT auslösen und die man ebenfalls selbst belegen kann. Ich habe so z.B. mal eine eigene Shell geschrieben, die direkt und interaktiv auf einzelne Zeichen reagiert (und nicht bis zum ENTER wartet). Funktionieren tut das problemlos ... ist halt nicht ganz einfach, die Schnittstelle so umzubiegen. Falls Bedarf im Unix/Linux-Umfeld besteht, bitte nochmals melden. Bei Windows kann ich leider nicht helfen ...



  • jox schrieb:

    Ich II. schrieb:

    Hi,
    dies geht soweit ich weiß nicht mit reinem ANSI-C. ...

    ... die Aussage ist leider nicht korrekt 😢
    Zumindest unter UNIX/Linux kann man die Konsoleingabe komplett umbiegen und muss dann aber auch alle Eingabezeichen selbst interpretieren. Für das Umbiegen gibt es entsprechende ioctl() Systemcalls. U.a. muss man z.B. ICANON deaktivieren. Darüber hinaus gibt es spezielle Zeichen, die Sonderfunktionen haben und INTR bzw. QUIT auslösen und die man ebenfalls selbst belegen kann. Ich habe so z.B. mal eine eigene Shell geschrieben, die direkt und interaktiv auf einzelne Zeichen reagiert (und nicht bis zum ENTER wartet). Funktionieren tut das problemlos ... ist halt nicht ganz einfach, die Schnittstelle so umzubiegen. Falls Bedarf im Unix/Linux-Umfeld besteht, bitte nochmals melden. Bei Windows kann ich leider nicht helfen ...

    Die Aussage ist schon korrekt. Mit "reinem ANSI C" geht das nicht. ioctl() gehört vielleicht zu POSIX (wenn überhaupt), aber sicher nicht zu ANSI/ISO C.

    So oder so, der OP sollte uns mitteilen, auf welchem System er das realisieren will. Dann kann ich ihn in das passende Forum verschieben.


Anmelden zum Antworten