Inserer un raccourci clavier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Inserer un raccourci clavier

Une question

par Phil93 » 27 févr. 2007, 19:08

Je poursuis avec une question (que je ne voulais pas noyer dans la masse de mon dernier mail…)

Un problème dont je n'ai pas encore réussi à trouver la solution :

J'arrive à « prévenir le comportement » de certains événements à l'aide des
e.preventDefaut() et e.stopPropagation() traditionnels, mais je ne suis pas parvenu à le faire sur les raccourcis tels que :

Pomme + N (je suis sur mac, peut-être que le problème est le même sur PC avec Control+N, mais je n'ai jamais essayé)
Pomme + O,
… et autres raccourcis qu'on trouve partout.

J'ai bien essayé de prévenir le comportement sur tous les onkeydown et autre onkeyup, mais sans résultat jusqu'à aujourd'hui…

Quelqu'un connaîtrait-il la solution (sans trifouiller, si possible, dans les components de Firefox — mais bon, si c'est obligé…)

Serait-il possible, au chargement du fichier, de définir une fois pour toute le comportement par défaut d'une combinaison ? Il me semble qu'il existe une fonction native de l'événement (une fonction du genre "defineDefault()" ou autre), mais je n'ai pas encore trouvé comment l'utiliser.

Merci pour toute personne qui pourra me donner de l'aide là-dessus…

Bien à vous tous,

Phil

Les touches de contrôles zet autres

par Phil93 » 27 févr. 2007, 19:01

Pour ajouter une suite, on peut récupérer plein de choses à l'intérieur de la fonction nommée checkKeycode(e) par Ryle.

Pour celle que j'utilise très souvent :

e.metaKey : qui dit si la touche méta est pressée (lors de l'appui sur la touche)
e.altKey : qui est true si la touche alt (option) est pressée (idem)
e.ctrlKey : qui est true si la touche control est pressée (idem)
e.shiftKey : qui est true si la touche Majuscule est pressée (idem)

Cela permet tout un tas de combinaisons qui permettent de faire du « tout clavier » très facilement.

Personnellement, je me suis fait un module spécial pour simplifier la détection des touches (pour avoir un version plus humaine). Peut-être que ça peut intéresser (j'ai mis ça dans un fichier js que je charge systématiquement dans toutes mes app) :

Code : Tout sélectionner

/* e.keyCode donne : */ const Key_A = 65 ; const Key_B = 66 ; const Key_C = 67 ; const Key_D = 68 ; /* devient 16 avec Ctrl+Command — utiliser constante cf. ci-dessous */ const Key_D_CtrlMeta = 16 ; const Key_E = 69 ; const Key_F = 70 ; const Key_G = 71 ; const Key_H = 72 ; const Key_I = 73 ; const Key_J = 74 ; const Key_K = 75 ; const Key_L = 76 ; const Key_M = 77 ; const Key_N = 78 ; const Key_O = 79 ; const Key_P = 80 ; const Key_Q = 81 ; const Key_R = 82 ; const Key_S = 83 ; const Key_T = 84 ; const Key_U = 85 ; const Key_V = 86 ; const Key_W = 87 ; const Key_X = 88 ; const Key_Y = 89 ; const Key_Z = 90 ; /* Les flèches Je ne me rappelle jamais si j'écris en anglais ou en français, donc FLECHEB (flèche vers le bas) est égal à ARROWD (arrow down) */ const Key_FLECHEB = 40 ; const Key_ARROWD = 40 ; const Key_FLECHEH = 38 ; const Key_ARROWU = 38 ; const Key_FLECHEG = 37 ; const Key_ARROWL = 37 ; const Key_FLECHED = 39 ; const Key_ARROWR = 39 ; const Key_ESCAPE = 27 ; const Key_RETURN = 13 ; const Key_ENTREE = 13 ;
Ensuite, il me suffit donc de faire :

Code : Tout sélectionner

window.onkeydown = function ( e ) { switch ( e.keyCode ) { case Key_A : /* Fait ça si la touche « A » est pressée : */ //…… /* On peut aussi ajouter les tests sur les touches contrôle au besoin avec des (if ( e.shiftKey) etc.) */ break ; case Key_B : /* Fait ça si la touche « B » est pressée : */ //…… break ; // etc. } }
En espérant que ça servira…

Bien à vous tous,

Phil

par Ryle » 27 févr. 2007, 16:43

C'est parce que ne sachant pas ce que tu voulais récupérer ou ce que tu voulais en faire, je n'ai pas fait de comparaison et t'ai simplement indiqué comment récupérer la touche pressée par l'utilisateur et afficher le code associé :)

Quant aux accolades, elles permettent de grouper un ensemble d'instruction. Les instructions if(), for(), while() ... s'appliquent sur l'instruction qui les suivent immédiatement. S'il n'y a qu'une seule instruction, pas besoin d'accolades (qui selon moi surchargent inutilement le code et l'indentation le rend tout aussi lisible), si en revanche il y a plusieurs instructions à exécuter, les accolades sont obligatoires :

Code : Tout sélectionner

if(...) uneSeuleInstruction(); else { unePremiereInstruction(); uneAutreInstruction(); }

par orgerix » 27 févr. 2007, 14:24

Finallement j'ai trouvé tout seul
<script for="document" event="onkeydown()" language="JScript" type="text/jscript">
 {
  if(window.event.keyCode==13)
  {window.location.replace("actualiserfrance.php");}
 }
</script>

par orgerix » 27 févr. 2007, 14:07

Ben, je sais que je suis nul en Javascript, mais il y a plusieurs truc que je comprend pas...

Lors de la déclaration de la fonction, un argument est utilisé. Or, lors de l'appel de la fonction, l'argument n'est pas indiqué.
Ensuite, dans les opérateurs, il n'y a aucun opérateur de comparaison.
Enfin, il me semblais que les instructions d'un bloc conditionnel se metais entre accolades...

par Ryle » 27 févr. 2007, 13:18

Il te faut pour cela détecter sur toute ta page l'événement (touche enfoncée par exemple) et récupérer le keyCode (code ascii) de la touche enfoncée. Il te suffit alors de tester si celui-ci correspond à celui attendu pour lancer ou non une action :)
document.onkeydown = checkKeycode // lorsqu'une touche est pressée, on appel la fonction

function checkKeycode(e) {
  var keycode; // code de la touche pressée
  if (window.event) keycode = window.event.keyCode; 
  else if (e) keycode = e.which;

  // pour voir le code utilisé, on peut utiliser une simple alert
  alert("Touche pressée : " + keycode);
}
Reste plus qu'à trouver les codes qui t'interessent :)
touche "entrée" c'est 13
touche "a" c'est 65
...

Inserer un raccourci clavier

par orgerix » 27 févr. 2007, 11:22

Bonjour,

J'aimerai savoir comment faire pour appeler une page à l'aide d'une touche.

Il me semble qu'il faut utiliser onkeypress ou onkeyclick, mais je ne sais pas comment indiquer la touche voulu...