11484 sujets

JavaScript, DOM et API Web HTML5

Bonjour.
Y a-t-il un moyen simple d'utiliser un keydown avec deux touches ?
Par exemple effectuer une action lorsque "A" et "Z" sont pressés simultanément.
Merci !
salut,
pas à ma connaissance. Tu dois d'abord stocker les touches pressées et les gérer, puis vérifier si une touche donnée figure dans les valeurs stockées.
Cela dit, ça ne reste pas fiable car difficile à gérer.
Tu peux par contre aisément savoir si les touches Ctrl ou Alt sont pressées avec l'objet Event.
ouai c'est la solution que j'avais vu sur un autre forum, j’espérais qu'ils auraient créé quelque chose de nouveau depuis.
Merci bien pour la réponse.
Modérateur
Zelalsan a écrit :
salut,
pas à ma connaissance. Tu dois d'abord stocker les touches pressées et les gérer, puis vérifier si une touche donnée figure dans les valeurs stockées.
Cela dit, ça ne reste pas fiable car difficile à gérer.
Tu peux par contre aisément savoir si les touches Ctrl ou Alt sont pressées avec l'objet Event.


Smiley hum


var keyboard = {};
window.addEventListener('keydown', function(e){
  keyboard[e.keyCode] = e.type == 'keydown';
  console.log(keyboard);
});


@Johnsonn : Je te laisse faire le reste Smiley cligne :
1. Tu vérifies qu'il y ait 2 éléments,
2. tu vérifies lesquels,
3. une fois ton traitement terminé, tu vides le "array".
Attention cette manière est dépréciée. Cependant, si tu te débrouilles bien, tu choisis des touches dont la correspondances du keyCode est optimale (bas de page)
Modifié par niuxe (14 Nov 2017 - 20:51)
@niuxe Le code que tu proposes ne gère pas les touches simultanées. Il ne fait qu'enregistrer les touches appuyées. Il suffit de presser "a", puis de presser "z" pour que la condition devienne vraie.

Crois-moi que c'est beaucoup moins simple que ça en l'air. Tu ne feras jamais une code fiable à 100%.
Ouai en effet dans la solution ils utilisait un keyup pour retirer la touche du tableau, c etait bien compliqué.
Je vais utiliser les ctrl ça sera plus simple
Modérateur
Zelalsan a écrit :
@niuxe Le code que tu proposes ne gère pas les touches simultanées. Il ne fait qu'enregistrer les touches appuyées. Il suffit de presser "a", puis de presser "z" pour que la condition devienne vraie.

Crois-moi que c'est beaucoup moins simple que ça en l'air. Tu ne feras jamais une code fiable à 100%.

Ça sent la discussion stérile....
En effet, tu as raison. Smiley lol
niuxe a écrit :

1. Tu vérifies qu'il y ait 2 éléments,
2. tu vérifies lesquels,
3. une fois ton traitement terminé, tu vides le "array".



var keyboard = {};
var len = function(obj){
  count = 0
  for(k in obj){
    if(obj.hasOwnProperty(k)) count += 1
  }
  return count;
}
window.addEventListener('keydown', function(e){
  keyboard[e.keyCode] = e.type == 'keydown';
  console.log(keyboard);
  if(len(keyboard) == 2){
    console.log('lol');
    keyboard = {};
  }
});

Modifié par niuxe (15 Nov 2017 - 12:32)
Même si c'est parfaitement faisable, c'est probablement une très mauvaise idée.

En-dehors des touches modificatrices classiques, ce n'est pas commun de demander l'appui de plusieurs touches simultanément.
Exception faite des jeux mais c'est spécifique.

L'objet event propose shiftKey|ctrlKey|altKey|metaKey pour les touches modificatrices habituelles, donc pas besoin d'implémenter son propre système potentiellement buggé.