Javascript

herve7 Messages postés 23 Statut Membre -  
 guillaume -
salut

est il possible en javascript de detecter l'appui sur les touches du clavier, et si oui comment ???

merci

1 réponse

PhP
 
Salut herve

La réponse est oui ! [:)

Voici l'adresse du site (en anglais !) où tu as un bon tutorial qui explique cela très bien :

http://www.wsabstract.com/javatutors/javascriptkey.shtml

Voici un petit ex en français si tu préféres.
Je me suis très largement inspiré du site précédemment cité ...

Ce script affiche une fenêtre avec le msg "Vous avez appuyé sur la touche R" lorsque l'utilisateur appuie effectivement sur le touche 'R' (Etonnant non ?) Attention de bien être en majuscule !

Version pour Netscape 4 ou + :
_________________________

<script language="JavaScript1.2">
<!--

// On test si le navigateur est NS 4+
if (document.layers)

// On capture l'événement KEYPRESS (donc touche appuyée) au niveau du document complet
document.captureEvents(Event.KEYPRESS)

// On créé la fct qui va servir de gestionnaire d'événement et être
// appelée à chaque fois qu'une touche va être enfoncée.
function msg_touche_R(e)
{
if(String.fromCharCode(e.which)=="R")
alert("Vous avez appuyé sur la touche R")
}

// On test si le navigateur est NS 4+
// puis on affecte à l'évenement KEYPRESS notre gestionnaire d'évènement msg_touche_R
if (document.layers)
document.onkeypress=msg_touche_R

// -->
</script>

Version pour Internet Explorer 4 ou + :
________________________________

<script language="JavaScript1.2">
<!--

// Le gestionnaire d'événement
function msg_touche_R(e)
{
if(String.fromCharCode(event.keyCode)=="R")
alert("Vous avez appuyé sur la touche R")
}

// On affecte notre gestionnaire d'événement à l'événement KEYPRESS
document.onkeypress=alert_keycode

// -->
</script>

Into the mix ... :
______________

<html>
<head>

<script language="JavaScript1.2">
<!--

// On test si le navigateur est NS 4+
// On capture l'événement KEYPRESS (donc touche appuyée)
// au niveau du document complet
if (document.layers)
{
document.captureEvents(Event.KEYPRESS)
}

// On créé la fct qui va servir de gestionnaire d'événement
// et être appelée à chaque fois qu'une touche va être enfoncée.
// Nota le paramètre "e" ne sert à rien avec IE 4
// mais n'interfère pas Ouf !
function msg_touche_R(e)
{
// tch contient le code numérique de la touche pressée
tch = (document.layers) ? e.which : event.keyCode;

if(String.fromCharCode(tch)=="R")
alert("avez appuyé sur la touche R")
}

// On affecte à l'évenement KEYPRESS notre gestionnaire d'évènement msg_touche_R
document.onkeypress=msg_touche_R;

// -->
</script>

</head>

<body>
<p>Appuyer sur la touche "R" et pas "r" pour voir le message !</p>
</body>
</html>

Reste à tester si on a un "R" majuscule ou un "r" minuscule !

Et voilà

@+
Philippe

0
herve7 Messages postés 23 Statut Membre 3
 
merci beaucoup pour ton aide, ca a fonctionné!

A+
Hervé
0
herve7 Messages postés 23 Statut Membre 3
 
tout pour emmerder le monde...

en fait, j'aurais besoin de detecter une combinaison de touches (par ex R+A)...
J'ai essayer d'additionner la valeur des touches pressees, mais ca n'a pas fonctionné. De plus je suis allé voir sur le site dont tu m'as laissé l'adresse, et je n'ai pas trouvé.
Est ce faisable?

Merci
0
PhP > herve7 Messages postés 23 Statut Membre
 
Slt RV

Une combinaison de touche de type "R"+"A" ???

Heu d'habitude c'est plutôt une combinaison du style "R"+Ctrl ou "R"+Alt !

Enfin comme tu veux ...

Non j'déconne

Donc pour scanner une série de touche il faut que tu stockes la série de touches dans un tampon. Ce buffer est tout simplement une variable JS globale.

Ce qu'il faut faire :

Définir une combinaison
Stocké uniquement les lettres "compatibles" avec le combinaison sinon vider le buffer
Réagir dès que la combinaison est rencontrée et effacer le buffer

Et voilà le prog modifié :

Into the mix ... :
______________


<html>
<head>

<script language="JavaScript1.2">
<!--

// Variables globales
var combi="HERVE"
var buffer=""


function combi_action()
{
alert("Salut HERVE : ça te convient ?")
}


if (document.layers)
{
document.captureEvents(Event.KEYPRESS)
}

function capture_touche(e)
{
// tch contient le code numérique de la touche pressée
tch = (document.layers) ? e.which : event.keyCode;

// On ajoute la dernière touche au buffer
buffer=buffer+String.fromCharCode(tch)


// On test si combi commence par les mêmes lettres que buffer
if (combi.indexOf(buffer,0) == 0)
{
// Si la séquence est complète on lance l'action ...
if (combi==buffer)
{
combi_action()
// Raz buffer car action effectuée
buffer=""
}
}
else
{
// On efface le buffer car il ne convient pas
buffer=""
}
}

document.onkeypress=capture_touche;

// -->
</script>

</head>

<body>
<p>Appuyer successivement sur les touches "H" "E" "R" "V" et "E" pour voir le message !</p>
</body>
</html>




@+
Philippe
0
herve7 Messages postés 23 Statut Membre 3 > PhP
 
Salut Philippe

Merci beaucoup pour ton aide! Ce script correspond exactement à ce qu'il me fallait.

A +

Hervé
0
guillaume > herve7 Messages postés 23 Statut Membre
 
c'est simple pour désactiver un clavier tu fait :"
tu le débranche." voila a+
0