Accueil > Forum > > > > clavier : detection de plusieurs touches simultannées
clavier : detection de plusieurs touches simultannées
mercredi 17 septembre 2008 à 03:47:31 |
clavier : detection de plusieurs touches simultannées

WolfSpirit
|
Bonjour, Je m'amuse à coder un petit jeu de rythme type guitar hero. J'ai donc besoin d'un traitement clavier très réactif, et de + il faut souvent détecter des appuis sur + de 3 touches à la fois. J'ai bien essayé avec getAsyncKeyState mais à priori cette commande est obsolète quand il y a + de 3 touches appuyées à la fois ... et il semble que quand je change très vite de touches appuyées le traitement ne suit pas. voici comment je procède : if(GetAsyncKeyState(VK_F1) & 0x8000) button[0] = true; else button[0] = false; if(GetAsyncKeyState(VK_F2) & 0x8000) button[1] = true; else button[1] = false; if(GetAsyncKeyState(VK_F3) & 0x8000) button[2] = true; else button[2] = false; if(GetAsyncKeyState(VK_F4) & 0x8000) button[3] = true; else button[3] = false; if(GetAsyncKeyState(VK_F5) & 0x8000) button[4] = true; else button[4] = false; if(GetAsyncKeyState(VK_SPACE) & 0x8000) button[5] = true; else button[5] = false; if(GetAsyncKeyState(VK_RETURN) & 0x8000) button[6] = true; else button[5] = false;il me suffit après de tester les booléens button[x]... mais comme je l'ai dit plus haut lorsque j'appuis sur + de 3 touches à la fois ça ne marche pas, comment pourrais-je faire ? et sinon existe-t-il une lib spécialisée dans les traitements lourds du clavier ? Merci. 
|
|
mercredi 17 septembre 2008 à 11:26:16 |
Re : clavier : detection de plusieurs touches simultannées

DeAtHCrAsH
|
Salut, Essayes plutôt de passer par un hook clavier, tu auras surement un meilleures résultats. Tu trouveras de nombreuses sources sur ce site.
Shell
|
|
mercredi 17 septembre 2008 à 12:08:44 |
Re : clavier : detection de plusieurs touches simultannées

WolfSpirit
|
Merci, j'ai essayé d'utiliser un hook mais le problème c'est que j'ai fait ce jeu en SDL et je ne trouve pas comment récupérer le hInstance qui est demandé dans la fonction SetWindowsHookEx avec SDL... quelqu'un a une idée ?
|
|
mercredi 17 septembre 2008 à 15:24:32 |
Re : clavier : detection de plusieurs touches simultannées

DeAtHCrAsH
|
Pour rappel, ton hook doit se faire dans une dll. Le paramètre hMod (HINSTANCE) sera mis à NULL car rattaché au thread appellant, soit ton jeu sdl.
|
|
mercredi 17 septembre 2008 à 15:31:35 |
Re : clavier : detection de plusieurs touches simultannées

WolfSpirit
|
Oula, ça m'a l'air compliqué pour un petit jeu de rythme quand même ... :p Y'a pas un moyen plus simple avec DirectInput par exemple de savoir si + de 3 touches sont enfoncées ? sans parler forcemment de hook, parce que je trouve que là ça commence à partir loin pour ce que c'est :p J'ai recodé tout le coeur du jeu en DirectX, donc je peux maintenant l'utiliser, seul hic je viens de me rendre compte que lui aussi dès qu'on a plus de 3 touches enfoncées il ne compte pas la 4eme ... Alors, y'a moyen concretement sans hook ou pas ?
|
|
mercredi 17 septembre 2008 à 15:43:07 |
Re : clavier : detection de plusieurs touches simultannées

WolfSpirit
|
Bon je viens de vérifier dans un autre jeu de rythme, c'est pareil, quand j'appuie sur plus de 3 touches à la fois il comprend pas, c'est pas dû à mon programme spécialement ^^ je vais donc me débrouiller comme ça, en tout cas en recodant en DX au lieu de SDL j'ai gagné une énorme rapidité sur la gestion du clavier ! donc tant mieux :) merci pour l'aide en tout cas DeAtHCrAsH ;)
|
|
mercredi 17 septembre 2008 à 22:04:53 |
Re : clavier : detection de plusieurs touches simultannées

racpp
|
Salut, Pour lire l'état courant de toutes les touches du clavier il existe GetKeyboardState(). Cette fonction copie l'état actuel du clavier dans un tableau de 256 octets. Les codes virtuels (VK_xxx) seront utilisés comme indexes du tableau pour tester l'état d'une seule touche ou d'un groupe de touches. Puisque l'état des touches est exprimé sous forme de bits, on peut créer une petite fonction qui retourne, dans un autre tableau, les codes virtuels de toutes les touches enfoncées actuellement. Pour le hook clavier, tu peux te passer de DLL sous Windows 2000, XP ou Vista. Tu trouveras, parmi mes codes sources, un exemple à ce sujet. Pour la réactivité, je pense que tu ne trouveras pas mieux que DirectInput.
|
|
jeudi 18 septembre 2008 à 12:47:10 |
Re : clavier : detection de plusieurs touches simultannées

WolfSpirit
|
Ouais merci :) je savais pour le GetKeyboardState, mais le problème vient de mon clavier je pense, c'est simple, quand j'appuie par exemple sur F1 + F2 + F3, il ne détecte que F1 et F2 enfoncées, pourtant si je fais F2 + F3 + F4 là ça passe ... ça dépend de quelles touches j'enfonce à la fois... et pour 4 ou 5 touches à la fois j'oublie c'est même pas la peine. Par contre, j'ai branché un périphérique qui a remplacé mon clavier sur mon ordi (une WiiGuitar) et là, quand j'appuie sur les 5 frettes à la fois, j'ai bien les 5 touches qui s'allument. Le problème viendrait donc, à priori, du clavier. Mais c'est bisarre car j'ai testé sur 2 claviers différents, même problème. Enfin bon, ça ne me dérange pas trop pour la suite donc ça va. Et puis j'ai tout passé de SDL à DX, j'ai donc gagné énormément en performances, et ça me permet d'utiliser DInput aussi :)
|
|
Cette discussion est classée dans : button, getasynckeystate, vk, if, 0x8000
Répondre à ce message
Sujets en rapport avec ce message
Programme Trop Lent [ par Lemng ]
Bonjour tout le monde,voici mon problème : j'utilise la SDL pour programmer un jeu se jouant a l'aide du clavier et de la souris de la manière suivant
snack grandi quand il mange (winapi) [ par dyroj ]
salut a tous,qui peut me trouver un algorithme sur le sujet suivant:je suis en train de créer un snack mais je narrive pas a faire grandir quand il ma
[OpenGL] Diriger mon cube a gauche et a droite et sans rotation (pour l'instant) [ par FPSQuentin ]
Bonjour a tous. J'ai réussi a faire un cube en 3D et j'arrive à faire avancer et reculer mon cube mais se que je n'arrive pas à faire, c'est que l'on
décompte multiclic [ par cghes ]
bonjour à tous!Je sonne la tirette d'aide car après plus d'un essai je ne arrive pas...voila je viens de mettre en place un systeme de ptc ( pay to cl
radiobutton dans groupebox [ par dyroj ]
Mes salutation a touse,Je voudrais grouper des radiobutton dans un groupebox de maniere a ce que quand je click sur un radiobutton il se coché celui q
Petit probleme avec injection de dll [ par ghostichou ]
Tout d'abord je tiens à vous préciser que j'ai deja regarder les autres sujets parlant de ça sur code sources mais même en les relisant je n'arrive pa
Calculateur 32bits ... problème de débordement !!! [ par boguista ]
j'ai à coder le calcul suivant :S= c. [(a.b + (a+b).2^15 + 2^30)/2^32] sachant que a, b et c sont sur 16 bitsAvez vous un algorithme précis qui puisse
gestion evenement en sdl [ par jilou2008 ]
bonjour j ai creer un petit programme en c++ avec sdl , j utilise le joystick pour deplacer une image sur l ecran et la coller ensuite seulement pour
char* dans un destructeur [ par pepsidrinker ]
Premierement, merci de lire ce post, et merci a tous ceux qui veulent maider. Jai le probleme suivant: Jassigne des char* avec 'new[]' dans le constru
comparaison de 2 fichiers texte à l'aide d'un programme C [ par Yanis1973 ]
Bonjour tt le monde, Si quelqu'in pourrait m'aider sur un ce probleme , je serais tiré d'affaire. merci d'avance. Voila j'ai un programme en c qui per
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|