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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top