IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Curses - Toujours avec la souris


Sujet :

Linux

  1. #1
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut Curses - Toujours avec la souris
    Bonjour,

    J'apprends encore à gérer la souris sous ncurses, me basant sur des exemples, j'ai écris le code ci-dessous.

    Hélas, pour une raison qui m'est inconnue, le résultat est sans appel sous Cygwin :
    Mouse Supported
    mais
    Mous mask failed et no mask returned !

    Si un développeur pouvez tester le code sur un unix natif, car je ne suis pas sûr que le problème soit uniquement dans le code.

    j'ai mal configuré cygwin, may be :

    Merci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    #include <curses.h>
    #ifdef NCURSES_MOUSE_VERSION
    #define Mouse "Mouse supported"
    #else
    #define Mouse "Mouse not supported"
    #endif
    #include <signal.h>
     
    int main() {
      int c,line=0,result = 0;
      int mx,my;
     
        (void) initscr();      // initialize the curses library 
        keypad(stdscr, TRUE);  // enable keyboard mapping 
        (void)immedok(stdscr,TRUE);
        (void)scrollok(stdscr,TRUE);
     
      mvaddstr(line++,0,Mouse);
     
       mmask_t Mask; 	
       getmaxyx(stdscr,my,mx);
       if (!mousemask(ALL_MOUSE_EVENTS, &Mask)) {
          mvaddstr(line++,0,"Mouse mask failed");
          if (Mask != NULL)
          	mvaddstr(line++,0,"Mouse mask returned");
          else 
            mvaddstr(line++,0,"No mouse mask returned");
       }
     
       do {
       	mvaddstr(line++,5,"Waiting mouse events");
       	c = wgetch(stdscr);
       	if ( c == KEY_MOUSE)
       	    mvaddstr(mx-1,my-1,"Mouse event detected");
       	else 
       	    mvaddstr(line++,5,"No event");
       } while (c != 'q');
      return 0;
    }
    Ps : le code compile, ily a seulement un warning, qui n'est pas vital.

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut Re: [CURSES] Toujours avec la souris
    Bonjour,
    Citation Envoyé par Caine
    Ps : le code compile, ily a seulement un warning, qui n'est pas vital.
    Un warning n'est jamais anodin!
    Citation Envoyé par Caine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mvaddstr(line++,0,Mouse);
     
       mmask_t Mask; 	
       getmaxyx(stdscr,my,mx);
    En C, les variables doivent être déclarée au début du bloc!

  3. #3
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Et hop ! (quelques modifs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    include <curses.h>
    #ifdef NCURSES_MOUSE_VERSION
    #define Mouse "Mouse supported"
    #else
    #define Mouse "Mouse not supported"
    #endif
    #include <signal.h>
     
    int main() {
      int c,line=0;    /* ,result = 0; => inutilisee */
      int mx,my;
      mmask_t Mask;
     
      (void) initscr();     /*  initialize the curses library */
      keypad(stdscr, TRUE);  /* enable keyboard mapping */
      (void)immedok(stdscr,TRUE);
      (void)scrollok(stdscr,TRUE);
     
      mvaddstr(line++,0,Mouse);
     
     
      getmaxyx(stdscr,my,mx);
      if (!mousemask(ALL_MOUSE_EVENTS, &Mask)) {
        mvaddstr(line++,0,"Mouse mask failed");
     
      /*   if (Mask != NULL) */
        if (Mask != 0)  /* Mask n est pas un pointeur... */
          mvaddstr(line++,0,"Mouse mask returned");
        else
          mvaddstr(line++,0,"No mouse mask returned");
      }
     do {
        mvaddstr(line++,5,"Waiting mouse events");
        c = wgetch(stdscr);
        if ( c == KEY_MOUSE)
          mvaddstr(mx-1,my-1,"Mouse event detected");
        else
          mvaddstr(line++,5,"No event");
      } while (c != 'q');
      return 0;
    }
    => Quand, meme, pour info:
    $gcc test_mouse.c
    test_mouse.c: Dans la fonction « main »:
    test_mouse.c:25: attention : comparaison entre un pointeur et un entier
    test_mouse.c:10: attention : unused variable `result'
    La comparaison entre Mask et NULL...

    En tout cas, pour moi, ca fonctionne apres cette modif...

    ++
    Pouic

  4. #4
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Heu, je me suis mal exprimer pardon,
    à l'affichage vous obtenez quelles chaînes?

    Je tente de savoir si les évènements souris sont pris en compte

    Encore merci.

  5. #5
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Citation Envoyé par Caine
    Heu, je me suis mal exprimer pardon,
    à l'affichage vous obtenez quelles chaînes?

    Je tente de savoir si les évènements souris sont pris en compte

    Encore merci.
    Oups, sorry, alors...

    Ben quand je fais mumuse avec les boutons et la molette, ca m affiche
    "Waiting mouse events"
    pour chaque action...
    Quand je touche au clavier:
    "No event"
    voila voila

    ++
    Pouic
    [/quote]

  6. #6
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Est ce que tu as la string "mouse mask failed" qui s'affiche?

    Si je me souviens bien tu es sur un linux natif?

    Bon, ça tend à pouver que c'est bien le code qui initialise mal la souris, mais va savoir pourquoi

    Merci

  7. #7
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Citation Envoyé par Caine
    Est ce que tu as la string "mouse mask failed" qui s'affiche?
    Non.
    Si je me souviens bien tu es sur un linux natif?
    Oui.
    Merci
    Y a pas de quoi. Bon courage

    ++
    Pouic

  8. #8
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Ha,
    Si tu n'as pas cette chaîne qui s'affiche contrairement à moi, c'est que j'ai un problème de configuration avec Cygwin, c'est à l'initialisation des évènements que ça coince.

    Encore Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Déplacer un composant avec la souris
    Par GéniuS77 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 07/04/2011, 23h12
  2. Déplacer un panel avec la souris
    Par Harry dans le forum Delphi
    Réponses: 14
    Dernier message: 05/06/2006, 19h18
  3. Déplacer une TImage avec la souris
    Par Ingelishome dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/03/2005, 14h16
  4. cliquer avec la souris
    Par delfare dans le forum OpenGL
    Réponses: 2
    Dernier message: 23/01/2005, 11h22
  5. comment tourner la vue avec la souris
    Par delfare dans le forum OpenGL
    Réponses: 13
    Dernier message: 12/09/2004, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo