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

Autres éditeurs Discussion :

getch() avec gcc


Sujet :

Autres éditeurs

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 39
    Points : 37
    Points
    37
    Par défaut getch() avec gcc
    Je n'arrive pas à utiliser un simple getch() sous linux.
    J'ai essayé pas mal de trucs, comme initscr() en début de programme, keypad(stdscr,TRUE) ,... Mais rien ne fonctionne correctement

    Quelqu'un pourrait-il m'expliquer comment faire un getch() sous linux et me fournir un petit bout de code ?

    Merci d'avance car là je désespère...

  2. #2
    Membre éprouvé
    Avatar de jérôme
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    591
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 591
    Points : 1 071
    Points
    1 071
    Par défaut
    Si je ne me gourre pas, getch(), c'est dans conio.h et conio.h c'est Win32 donc...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    j'ai eu le même pblème, et comme jérôme je pense q ce n'est qu'une fonction utilisable avec Turbo C ... je n'est pas trouvé de fonction de substitution jusqu'alors alors je me permet de remonter ce post pour que vous puissiez nous éclairer
    merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2002
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 104
    Points : 128
    Points
    128
    Par défaut
    bonjour,

    le seul getch() que je connaisse sous unix c'est avec la lib curses ou ncurses

    so : man ncurses

    ;-)

  5. #5
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Citation Envoyé par mobee
    j'ai eu le même pblème, et comme jérôme je pense q ce n'est qu'une fonction utilisable avec Turbo C ... je n'est pas trouvé de fonction de substitution jusqu'alors alors je me permet de remonter ce post pour que vous puissiez nous éclairer
    merci
    bon je vais vous éclairer et je vais vous montrer comment utiliser 1% de la libncurses. (faudrait que je la fasse cette donc compléte avec le parraléle sur la libtermcap et les terminaux et termios)


    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
     
    int main()
    {
      WINDOW *nyal;
      int i;
     
      nyal = initsrc();
      echo();
      start_color();
      i = has_colors();
    #ifdef __DEBUG__
      if (!i)
        printf("Pas de couleur possible", i);
      sleep(1);
    #endif
      cbreak();
      intrflush(nyal, FALSE);
      keypad(nyal, TRUE); /*permet de recuperer les touches fleches par exemple */
      wrefresh(nyal);
       while ((i = wgetch(nyal)) != 10)
        {
            if (i == KEY_RIGHT)
              puts("fleche droite");
         }
         return (0);
    }
    pour connaitre les touches au début, je suis aller directement dans le .h (ca va plus vite )
    il peut y avoir des erreurs. car je fais en speed la. Je ferais une doc complete quand j'aurai fini mon rapport. car je sais que la docs ncurse sont peu explicite pour la plupart des gens.

    voila

  6. #6
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Je proposerai plutôt comme code minimaliste :
    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
    #include <ncurses.h>
     
    // Fenetre principale
    WINDOW *win;
     
    int main&#40;&#41;
    &#123;
      int touche;
     
      // Initialise la librairie ncurses
      win = initscr&#40;&#41;;
     
      // Active le scrolling dans la console
      scrollok &#40;win,TRUE&#41;;
     
      // Utilise le scrolling "hardware" &#40;si disponnible&#41;
      idlok &#40;win,TRUE&#41;;
     
      // N'affiche pas la touche press�e &#40;apr�s getch par ex&#41;
      noecho &#40;&#41;;
     
      // Reconnait les touches sp�ciales par leur identifiant
      keypad &#40;win, TRUE&#41;;
      do
      &#123;
        touche = getch&#40;&#41;;
        printw &#40;"Touche = %i", touche&#41;;
        if &#40;&#40;32<=touche&#41; && &#40;touche <= 127&#41;&#41; printw &#40;" &#58; '%c'",touche&#41;;
        printw &#40;"\n"&#41;;
      &#125; while &#40;touche != 27&#41;;
     
      // Restaure l'�cran &#58; NE JAMAIS OUBLIER CA !!! SURTOUT PAS AVANT
      // UN EXIT !!!
      endwin&#40;&#41;;
     
      // Quitte, sans code d'erreur
      return 0;
    &#125;
    (nyal : Tu avais oublié endwin() !!!)

    Et surtout, ne pas oublier "-lncurses" à la ligne de compilation. Sinon ça fait plein de "/tmp/ccvhygCe.o(.text+0x8): undefined reference to `initscr'" ...

    @+ Haypo

Discussions similaires

  1. Comment linker avec odbc32.lib dans le code ? (avec gcc)
    Par _Audrey_ dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 06/11/2008, 18h40
  2. compilation avec gcc : erreurs bizard !!!
    Par CodeurNé dans le forum C
    Réponses: 2
    Dernier message: 23/09/2005, 19h09
  3. Forcer 'inline' avec GCC ou ICC
    Par Charlemagne dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 12/05/2005, 19h22
  4. define avec GCC.
    Par vagabon dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 12/06/2003, 15h04
  5. les .a avec gcc
    Par Groove dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 31/03/2003, 08h59

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