Gerer clavier C
Fermé
didy_gwatinik
Messages postés
352
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
30 mars 2010
-
15 oct. 2008 à 16:30
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 - 16 oct. 2008 à 22:26
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 - 16 oct. 2008 à 22:26
A voir également:
- Gerer clavier C
- Telecharger clavier arabe تنزيل لوحة المفاتيح العربية - Télécharger - Divers Web & Internet
- Comment taper / sur clavier - Guide
- Changer clavier qwerty en azerty - Guide
- Télécharger clavier arabe samsung - Télécharger - Bureautique
- Clavier+ - Télécharger - Personnalisation
5 réponses
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
16 oct. 2008 à 22:23
16 oct. 2008 à 22:23
En C si tu veux pouvoir gérer les touches directionnelles (tout comme n'importe quelle autre touche). Tu n'as qu'à inclure windows.h qui te permet de manipuler différentes fonctions dont GetKeyState()
Elle prend comme paramètre un BYTE, en gros, le code de la touche dont tu veux récupérer son état (ça peut aussi être le code d'un clic), ce code s'appelle virtual-key code. (tu peux en avoir la liste ici : https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms927178(v=msdn.10)?redirectedfrom=MSDN
Attention : le fonctionnement de GetKeyState() est particulier ! Quand la touche (de code voulu) est pressé, la fonction retourne -127 ou -128 une fois sur 2 ; quand la touche n'est pas pressée la fonction retourne 0 ou 1 une fois sur 2.
Explication :
Si l'état de la touche est à 1.
Quand tu la presses son état passe à -128.
Ensuite quand tu la relâche son état passe à 0.
Ensuite si tu la represse son état passe à -127.
Ensuite quand tu la relâche son état repasse à 1.
etc.
Si tu veux t'en rendre compte (ou même si tu veux tester un VK code particulier) :
#include <stdio.h>
#include <windows.h>
int main()
{
while(1) {
printf("%d \r", GetKeyState(0x27)); //0x27 est le VK code de la flèche droite
Sleep(10); //pour ne pas bouffer 99% de l'UC
}
}
L'astuce est donc de se faire une petite fonction pour retourner 1 quand c'est pressé, 0 quand ça ne l'est pas.
Comme ça :
#include <stdio.h>
#include <windows.h>
int get_key_state(BYTE a) {
return (GetKeyState(a) < -1); // si -127 ou -128 => faux donc retour 0, si 0 ou 1 )> vrai donc retourne 1
}
int main()
{
while(1) {
printf("%d \r", get_key_state(0x27)); //0x27 est le VK code de la flèche droite
Sleep(10); //pour ne pas bouffer 99% de l'UC!
}
}
Elle prend comme paramètre un BYTE, en gros, le code de la touche dont tu veux récupérer son état (ça peut aussi être le code d'un clic), ce code s'appelle virtual-key code. (tu peux en avoir la liste ici : https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms927178(v=msdn.10)?redirectedfrom=MSDN
Attention : le fonctionnement de GetKeyState() est particulier ! Quand la touche (de code voulu) est pressé, la fonction retourne -127 ou -128 une fois sur 2 ; quand la touche n'est pas pressée la fonction retourne 0 ou 1 une fois sur 2.
Explication :
Si l'état de la touche est à 1.
Quand tu la presses son état passe à -128.
Ensuite quand tu la relâche son état passe à 0.
Ensuite si tu la represse son état passe à -127.
Ensuite quand tu la relâche son état repasse à 1.
etc.
Si tu veux t'en rendre compte (ou même si tu veux tester un VK code particulier) :
#include <stdio.h>
#include <windows.h>
int main()
{
while(1) {
printf("%d \r", GetKeyState(0x27)); //0x27 est le VK code de la flèche droite
Sleep(10); //pour ne pas bouffer 99% de l'UC
}
}
L'astuce est donc de se faire une petite fonction pour retourner 1 quand c'est pressé, 0 quand ça ne l'est pas.
Comme ça :
#include <stdio.h>
#include <windows.h>
int get_key_state(BYTE a) {
return (GetKeyState(a) < -1); // si -127 ou -128 => faux donc retour 0, si 0 ou 1 )> vrai donc retourne 1
}
int main()
{
while(1) {
printf("%d \r", get_key_state(0x27)); //0x27 est le VK code de la flèche droite
Sleep(10); //pour ne pas bouffer 99% de l'UC!
}
}
didy_gwatinik
Messages postés
352
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
30 mars 2010
80
16 oct. 2008 à 21:30
16 oct. 2008 à 21:30
Quelle libraire faudrait-il que j'ajoute?
Utilisateur anonyme
16 oct. 2008 à 21:41
16 oct. 2008 à 21:41
ça dépend de ta motivation. Sur le site du zero tu as un excellent cours pour apprendre à coder avec Qt4 mais c'est du C++
didy_gwatinik
Messages postés
352
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
30 mars 2010
80
16 oct. 2008 à 21:42
16 oct. 2008 à 21:42
Ok j'avais vu pour le C , je vais y jeter un coup d'oeil et me motiver un maximum. Merci pour tout
Utilisateur anonyme
16 oct. 2008 à 21:13
16 oct. 2008 à 21:13
Ce n'est pas possible sans librairie appropriée. Si tu code en C avec juste stdlib et stdio, tu ne peux pas utiliser tes flèches directionnelles.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
16 oct. 2008 à 21:35
16 oct. 2008 à 21:35
Je ne sais pas vraiment pour la console, désolé
didy_gwatinik
Messages postés
352
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
30 mars 2010
80
16 oct. 2008 à 21:40
16 oct. 2008 à 21:40
Ok merci quand même
Juste une petite question comme ça, est ce très dur de faire une application en fenêtre?
Juste une petite question comme ça, est ce très dur de faire une application en fenêtre?
16 oct. 2008 à 22:26