ncurses à coque externe et de déconner en arrière avec les touches
Question
J'ai cette ncurses demande qui fait la recette standard pour déposer temporairement sur ncurses, l'exécution d'une externe éditeur / shell / whatever, puis retomber à ncurses quand il est fait.
~ fonctionne presque, sauf que les premiers Ncurses frappes de touches devient par la suite sont évidemment fausses; ncurses pense ^ [et A sont vu respectivement si j'appuyez sur la flèche deux fois.
Tout le monde vu ce comportement avant et savoir ce que la magie INCANT pour fixer c'est? Si elle aide tout, c'est la bibliothèque Ruby ncurses.
La solution
Après rootling un peu, j'ai trouvé une solution culting cargo: appeler explicitement le clavier (1) après avoir obtenu la coquille sur stdscr. Je ne sais pas pourquoi cela fonctionne, mais il le fait. Je vais marquer la réponse de quelqu'un d'autre que oui si elles peuvent expliquer pourquoi. La théorie de travail actuelle est que le clavier touche une sorte de mémoire tampon interne et le vide.
Scratch que:
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); }
Autres conseils
Oui. Sans ncurses clavier ne traitera pas des codes d'échappement pour vous. A partir de la page de manuel du clavier:
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.
Souvent, la première chose que je fais dans un programme ncurses est le clavier d'appel (stdscr, true) pour activer le mappage du clavier agréable.
L'espoir qui aide.