Erste raw-input von Konsole mit C oder C++

/* Initialize new terminal i/o settings */
static struct termios old, new1;
void initTermios(int echo) {
    tcgetattr(0, &old); /* grab old terminal i/o settings */
    new1 = old; /* make new settings same as old settings */
    new1.c_lflag &= ~ICANON; /* disable buffered i/o */
    new1.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
    tcsetattr(0, TCSANOW, &new1); /* use these new terminal i/o settings now */
}

/* Restore old terminal i/o settings */
void resetTermios(void) {
    tcsetattr(0, TCSANOW, &old);
}

Wie bekomme ich die Pfeil-Schlüssel, die als Eingabe (möglicherweise als ein einzelnes Zeichen), den aktuellen code funktioniert gut für alle anderen Dinge, die ich brauche... Bitte keine Lösung mit ncurses

  • new1.c_lflag &= echo ? ECHO : ~ECHO ist das wirklich Arbeit? Ich denke, es sollte mehr entlang den Linien von new1.c_lflag = echo ? new1.c_lflag | ECHO : new1.c_lflag & ~ECHO
  • es funktioniert perfekt, give it a shot
  • Fiktik hat völlig Recht, sieht aus wie Sie nur ausgeschaltet echo und nie getestet einschalten.
  • tut mir Leid, dass ich nie wirklich getestet für echo, my bad
  • Danke an alle, landete um was ich hatte... habe 3 char als input ausgewählt, bestimmt die Richtung (Pfeil)
InformationsquelleAutor Shawn | 2011-07-14
Schreibe einen Kommentar