Hook clavier en C

Fermé
frzburn - 24 déc. 2003 à 19:25
 vincent viroleau - 27 déc. 2003 à 02:43
Bonjour,
J'aimerais savoir comment faire un hook clavier global en c. Un petit exemple serait aussi le bienvenu =)
Ce que je veux c'est quelque chose de tres simple, genre quand la touche 'h' est enfoncé (peu importe à partir que quelle fenetre active) mon programme réagit.

Un peu comme:

[HOOK sur CLAVIER]

if (touche_recue_par_hook == 'h') {
ma_fonction();
}
if (touche_recue_par_hook == 'j') {
ma_fonction2();
}
.......

Merci!
A voir également:

1 réponse

vincent viroleau
27 déc. 2003 à 02:43
En gros, et si j'ai bien compris ta question, ton probleme doit pouvoir se resoudre en utilisant ioctl de la libc.
Tu empeche la fonction read d'etre blocante (passe en mode non canonique), tu fait une boucle "infinie" et tu teste si la valeurs de retour de ton read est superieur a 0, tu teste le caractere lu.

En gros ca donne pour la boucle :

while (1)
if ((a = read(0, buffer, 1)) > 0)
{
if (buffer[0] == 'j')
fct0()
...
...
...
}
else
if (a < 0)
break;
}

et pour passer en mode non cannoinique je sais pu exactement le code mais la solution se situe du cote d'une constante vmin que tu doit passer a 0, qui veut dire le nombre de caractere attendu par la fct read.

Si tu trouve vraiment pas au bout d'une recherche acharnée envoie moi un mail :)
0