Keycode : quelle touche à été pressée ?

Soyez le premier à donner votre avis sur cette source.

Snippet vu 59 066 fois - Téléchargée 26 fois

Contenu du snippet

C'est le source de scylla qui m'a inspiré ce qui suit.
Le but est de pouvoir détecter quelle touche est frappée sur le clavier.
L'affichage dans un champs texte en fait un outil de recherche de valeur pour le keycode,
mais n'est pas indispensable pour un script sur le web

Source / Exemple :


<script language="JavaScript">
function process_keypress() {
// si nous avons un évênement clavier
if (window.event.type == "keypress" & window.event.keyCode > 0) {
        // on sauve la valeur dans le champs texte identifié "moi" 
	document.getElementById("moi").value = window.event.keyCode ;
	}
	return true;
}
document.onkeypress = process_keypress;
</script>
<form name="x" action ="" method="get">
<input type="text" id= "moi">
</form>

Conclusion :


limitations:
Ne gère pas les touches de fonction ou de déplacement
Ne fonctionne pas sous Netscape

A voir également

Ajouter un commentaire

Commentaires

Messages postés
15
Date d'inscription
mercredi 3 mai 2006
Statut
Membre
Dernière intervention
20 octobre 2008

bizard!!! j'ai copié ton code mais il ne marche pas sous firefox... savez vous ce qu'il faut modifier pour qu'il soit compatible??
Messages postés
3
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
27 février 2010

function process_keypress() {
// si nous avons un évênement clavier
if (window.event.type == "keypress" & window.event.keyCode > 0) {
alert(String.fromCharCode(window.event.keyCode)); // sous forme compréhensible
}
return true;
}

document.onkeypress = process_keypress;

au cas où ça intéresserait quelqu'un
Messages postés
15
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
12 juin 2006

ok merci
Messages postés
3
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
22 février 2006

pour ce faire utilise onkeydown et onkeyup plutot:

onkeypress détecte que tu as pressé une touche. Point barre.

onkeydown indique que tu viens d'enfoncer une touche et onkeyup que tu viens de la relacher:

essaies ceci pour comprendre ou je veux en venir:

<html>
<head>
</head>


<script>
UP=false;
DOWN=false;
LEFT=false;
RIGHT=false;
function keyUpdate()
{
code=""
if (UP) code+="En haut
";
if (DOWN) code+="En bas
";
if (LEFT) code+="A gauche
";
if (RIGHT) code+="A droite
";
document.getElementById("result").innerHTML=code;
}
function keyManager(e,down)
{
switch(e.keyCode)
{
case 38:
UP=down;
keyUpdate();
break;
case 37:
LEFT=down;
keyUpdate();
break;
case 39:
RIGHT=down;
keyUpdate();
break;
case 40:
DOWN=down;
keyUpdate();
break;
}
}

document.onkeydown=function(e)
{
if(!e) e=window.event;
keyManager(e,true);
}

document.onkeyup=function(e)
{
if(!e) e=window.event;
keyManager(e,false);
}
</script>

</html>


Il faut remplacer le contenu de keyUpdate par ton gestionnaire de touche après...

Bonne chance... côté serveur tu télécommande ta voiture comment? (en 2 mots parceque ce n'est pas le lieu pour parler côté serveur :p)
Messages postés
15
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
12 juin 2006

salut!!! en fin de compte ça fonctionne, mais je voudrais pouvoir associer deux touches. faire la touche 8 et 4 en simultanée. j'ai essayé avec keycode==56 && keycode==52 mais apparemment, le keycode refuse les touches simultanées. j'ai donc pensé faire une tempo.
si touche 8 presser
{
voiture avance
tempo 1 milliseconde
si touche 4 presser
{
voiture avance et tourne à gauche
}
}

mais je bloque avec la tempo. si quelqu'un peu m'aider? merci
Afficher les 18 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.