Comment bloquer certaines clés en C++ avec NCurses
Question
Je suis nouveau en C/C++ et je crée une interface utilisateur texte simple avec NCurses
.
Chaque fois que je fais défiler vers le haut/bas avec la molette de la souris ou que j'appuie sur les touches fléchées, la console fait écho à des caractères tels que :
"[[A^[[C^[[B^[[D"
pour me montrer que j'ai appuyé sur les touches.
Je voudrais empêcher ceux-ci de faire écho et ne faire écho qu'aux touches de base (ponctuation et lettres).
Voici ma boucle principale.Je veux essentiellement que ce soit ma propre console avec les commandes que je crée.
string input;
char inputArr[80];
while (input != "q" && input != "quit" && input != "exit" && input != "leave") {
printw(" > ");
refresh();
getstr(inputArr);
input = inputArr;
if (input.substr(0, 3) != "someCommand") {
printw("\n ~ %s\n\n", inputArr);
refresh();
} else
execCmd();
}
quit();
Pour la plupart, je crois que c'est du C++ mais j'ai une fonction C (qui utilise libCurl).
De plus, n'existe-t-il pas un moyen plus propre de lire des chaînes avec NCurses ?Je n'aime pas vraiment utiliser des tableaux de caractères (je suis habitué à Java).
La solution
Appel noecho()
quelque part près de initscr()
.
Cela évitera d’encombrer votre écran avec des entrées indésirables.Si vous souhaitez que vos utilisateurs voient ce qu'ils tapent plus tard, vous devrez appeler echo()
avant pourtant.