URL: https://linuxfr.org/forums/programmation-c--2/posts/souris-trop-bavarde-avec-ncurses Title: Souris trop bavarde avec Ncurses Authors: sobriquet Date: 2024年05月07日T09:53:21+02:00 License: CC By-SA Tags: ncurses et xterm Score: 3 Bonjour, Je travaille sur un programme Ncurses avec lequel on peut interagir avec la souris. Je souhaite en particulier pouvoir suivre les mouvements de souris même lorsque l'on n'appuie sur aucun bouton. Pour ça, j'utilise une séquence de contrôle XTerm qui active le tracking de tous les évènements de la souris :> printf("033円[?1003h\n"); ([documentation](https://invisible-island.net/xterm/ctlseqs/ctlseqs.pdf)) Je teste avec le programme suivant, qui affiche la position de la souris, ainsi que les évènements de la souris (bstate) :> //gcc -o bstates bstates.c -lncurses -Wall> \#include \> \#include \> > int main()> {> initscr();> cbreak();> keypad(stdscr, TRUE);> mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, NULL);> printf("033円[?1003h\n"); // Active le tracking de tous les évènements de la souris, y compris les mouvements> addstr("Echap pour quitter\n");> > int c = 0; > while (c != 27) { > c = wgetch(stdscr);> > char buffer[512];> size_t max_size = sizeof(buffer);> if (c == ERR)> snprintf(buffer, max_size, "Rien");> > else if (c == KEY_MOUSE) {> MEVENT event;> if (getmouse(&event) == OK)> snprintf(buffer, max_size, "ligne = %02d, colonne = %03d, bstate = 0x%028b",> event.y, event.x, event.bstate);> else> snprintf(buffer, max_size, "Erreur");> }> else> snprintf(buffer, max_size, "Touche %d (%s)", c, keyname(c));> > move(0, 0);> insertln();> addstr(buffer);> clrtoeol();> }> > printf("033円[?1003l\n"); // Désactive le tracking> endwin();> return 0;> } Les mouvements sont suivis convenablement, mais après avoir testé une gamme étendue de clics ou Ctrl/Alt/Maj + clic, des évènements fantômes apparaissent : je vois les bits de poids faible s'allumer et s'éteindre sans faire autre chose que bouger la souris. Je voudrais que, lorsque je bouge simplement la souris, tous les bits soient à 0, ou au moins qu'ils arrêtent de bouger. Quelqu'un saurait m'aiguiller pour comprendre ce qui se passe et comment corriger le problème ? J'utilise Gnome Terminal en version 3.44, et Ncurses en version 6.3.

AltStyle によって変換されたページ (->オリジナル) /