GLUT touche vers le bas et la touche sur la touche CTRL

J'ai trouvé beaucoup d'informations sur l'utilisation de la SURABONDANCE de détecter si le Ctrl touche est pressée à l'aide de la GLUT_ACTIVE_CTRL macro. Cette macro ne fonctionne que, apparemment, à l'intérieur d'un clavier ou de la souris fonction de rappel. J'ai besoin de savoir si oui ou non le Ctrl touche à un point dans ma boucle principale, mais GLUT_ACTIVE_CTRL ne semble pas fonctionner dans ce contexte.

Alors, est-il un moyen de détecter les clés et principaux événements sur l' Ctrl clé (sans toutes les autres clés tapés) dans une plate-forme indépendante de GLUT-ish?

EDIT: Le clavier de rappel n'est pas déclenché (au moins pour une installation par défaut) lorsque l' Ctrl touche est enfoncée. C'est le problème de base, que je ne peux vérifier si le Ctrl clé est ou n'est pas pressé lorsqu'une autre touche est pressée et donc de déclencher le clavier de rappel.

Mon installation est quelque chose comme:

//... in main function:
glutKeyboardFunc(keyboard);

//later in the code: 

void keyboard(unsigned char key, int _x, int _y)
{
    printf("keydown \n");

    if (glutGetModifiers() == GLUT_ACTIVE_CTRL) {
            printf("control key is pressed.\n");
    }
    //etc.

Lorsque j'appuie sur le fonctionnement normal de caractère "keydown" est affichée sur la sortie standard. Quand j'ai appuyer sur la touche Ctrl clé, rien ne se passe. Si j'appuie sur Ctrl+C, "keydown touche contrôle enfoncée." est imprimé.

Cependant, dans ma boucle principale, j'ai ajouté:

if (glutGetModifiers() == GLUT_ACTIVE_CTRL) {
    printf("Control key down.\n");
} else {
    printf("Control key up.\n");
}

et il y a toujours des tirages "de la clé de Contrôle." peu importe si je suis appuyer sur la touche Ctrl ou pas.

OriginalL'auteur John | 2010-08-26