équivalent kbhit() et getxkey()

ethan31

Membre confirmé
1 Février 2009
47
0
Toulouse
Bonjour,
j'avais un programme C++ dévellopé sur dev-cpp et je suis entrain de l'adapter sur le logiciel xcode sur mac. Le problème est que je n'arrive pas à trouver les équivalent de kbhit() et de getxkey() qui peuvent fonctionner sur mac.

kbhit() : fonction qui retourne vrai si une touche est appuyé

getxkey() : donne le code ascii de la touche appuyé.
on l'utilise souvent de cette manière :

//**********************
char code_ascii;

if (kbhit())
{
code_ascii = getxkey();
}
//**********************

Si vous connaissez un site avec des docs qui donne plusieurs noms de fonction et se qu'elles sont censé faire sa me serai bien utile car j'ai un autre exemple :
j'utilisé avant une fonction qui s'appelle gotoxy() qui me permétait de me positionné à un endroit particulier dans la console (sous windows) et sur mac elle marche pas.

merci d'avance , (si possible docs en francais).
 
Si vous connaissez un site avec des docs qui donne plusieurs noms de fonction et se qu'elles sont censé faire sa me serai bien utile car j'ai un autre exemple :
j'utilisé avant une fonction qui s'appelle gotoxy() qui me permétait de me positionné à un endroit particulier dans la console (sous windows) et sur mac elle marche pas.
La doc c'est la norme ANSI C++ que ne semble pas toujours connaître M$ :rateau:
La gestion du terminal dépend par contre de chaque système, sous Mac OSX elle se fera de la même manière que sous les autres UNIX. Mais je n'ai pas de lien à te donner, ça fait des années que je ne programme plus d'applications tournant dans le terminal. Va voir du côté de Google.
 
Bonjour,
j'avais un programme C++ dévellopé sur dev-cpp et je suis entrain de l'adapter sur le logiciel xcode sur mac. Le problème est que je n'arrive pas à trouver les équivalent de kbhit() et de getxkey() qui peuvent fonctionner sur mac.

kbhit() : fonction qui retourne vrai si une touche est appuyé

getxkey() : donne le code ascii de la touche appuyé.
on l'utilise souvent de cette manière :

//**********************
char code_ascii;

if (kbhit())
{
code_ascii = getxkey();
}
//**********************

Si vous connaissez un site avec des docs qui donne plusieurs noms de fonction et se qu'elles sont censé faire sa me serai bien utile car j'ai un autre exemple :
j'utilisé avant une fonction qui s'appelle gotoxy() qui me permétait de me positionné à un endroit particulier dans la console (sous windows) et sur mac elle marche pas.

merci d'avance , (si possible docs en francais).

bonjour voila je ne m'etais jamais interresse a la question en gros il m'a fallu 15 minutes
pour trouver une parade, en faite cela creer une pause, mais il y a d'autre outils sous ton term pour faire ca: utilise ncurse

Bloc de code:
#include <sys/select.h>
#include <stdio.h>

int kbhit(void) {
    struct timeval tv;
    fd_set fd;
    
    tv.tv_sec = 0;
    tv.tv_usec = 0;
    FD_ZERO(&fd);
    FD_SET(0, &fd);
    
    if(-1 != select(1, &fd, NULL, NULL, &tv)) {
        if(FD_ISSET(0, &fd)) {
            return 1;
        }
        
    }
    
    return 0;
}

char code_ascii;

int main(int argc, char *argv[]) {
    while (!kbhit()) {
        code_ascii = getchar();
        putchar(code_ascii);
    }
    
    return 0;
}
:p
 
ok , merci pour votre aide , et pour le temps passer mais il y a juste un petit souci (sauf erreur de ma part). En fait ton code est bloquant alors qu'il me faudrait un truc non bloquant. Dans le genre :

//**********************
char code_ascii;

int main ()
{
while (1)
{
if (kbhit())
{
code_ascii = getxkey();
cout << code_ascii;
}
/* Suite du code ... */
}
}
//**********************

Et en fait getxkey () me donne le code ascii de la touche qui a déclenché kbhit().

C'est sans t'obliger à te pencher à nouveau sur le code , c'est aussi à moi de chercher un peu non ?!