Frage

Ich habe diese ncurses-Anwendung, die das Standardrezept tut für vorübergehend Abwurf von ncurses out, läuft eine externe Herausgeber / Schale / was auch immer, und dann zurück zu ncurses fallen, wenn es fertig ist.

Das ~ fast funktioniert, mit der Ausnahme, dass die ersten Drücken von Tasten, dass ncurses wird danach offensichtlich gefälscht sind; ncurses denkt ^ [und A gesehen jeweils, wenn ich zweimal Pfeil nach oben drücken.

Wer dieses Verhalten gesehen und weiß, was die Magie incant zu fix das ist? Wenn es irgendwelche hilft, ist dies die Ruby-ncurses Bibliothek.

War es hilfreich?

Lösung

Nach rootling ein bisschen herum, fand ich eine Ladung culting Lösung: explizit Anruf Tastatur (1) nach der Shell auf stdscr raus. Ich habe keine Ahnung, warum das funktioniert, aber es funktioniert. Ich werde jemand andere Antwort als Ja markieren, wenn sie erklären, warum können. Die aktuelle Arbeits Theorie ist, dass Tastatur, eine Art internen Puffers berührt und löscht es.

Scratch, dass:

NCURSES_EXPORT(int)
keypad(WINDOW *win, bool flag)
{
    T((T_CALLED("keypad(%p,%d)"), win, flag));

    if (win) {
        win->_use_keypad = flag;
        returnCode(_nc_keypad(SP, flag));
    } else
        returnCode(ERR);
}

Andere Tipps

Ja. Ohne Tastatur ncurses nicht Escape-Codes für Sie. Von der Tastatur-man-Seite:

   The keypad option enables the keypad of the user's  terminal.   If  en-
   abled (bf is TRUE), the user can press a function key (such as an arrow
   key) and wgetch returns a single value representing the  function  key,
   as in KEY_LEFT.  If disabled (bf is FALSE), curses does not treat func-
   tion keys specially and the program has to  interpret  the  escape  se-
   quences  itself.   If the keypad in the terminal can be turned on (made
   to transmit) and off (made to work locally),  turning  on  this  option
   causes  the terminal keypad to be turned on when wgetch is called.  The
   default value for keypad is false.

Oft das erste, was ich in einem ncurses Programm tue Anruf Tastatur (stdscr, true) schöne Tastaturbelegung zu aktivieren.

Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top