Comment faire des ctrl + ... ?

Fermé
khalil - 9 juil. 2020 à 16:20
 Court - 10 juil. 2020 à 08:52
Bonjour,
je me demandait si on pouvait "controler" le clavier ca serait plus simple de faire un ctrl + a plutot que execommand
Si il ya un code pour le faire lequel ?
Sinon merci quand même
Cordialement,

2 réponses

Panth33ra Messages postés 19275 Date d'inscription mercredi 8 juillet 2020 Statut Non membre Dernière intervention 19 avril 2024 1 747
9 juil. 2020 à 16:23
Bonjour !
Sans doute que oui. Quelle est la marque de ton clavier ou est-ce un PC portable ?
0
Salut,
qu'appelez vous contrôler le clavier?
que voulez vous faire exactement?

Votre question étant sur le JavaScript cela semble concerner une page web et une page web affichée dans le navigateur.
Hors ctrl+a est déjà un raccourci qui est utilisé(ou pomme+a) dans le navigateur puisque qu'il permet de sélectionner un texte. Cela voudrait dire que vous supprimer une fonctionnalité de base qui est utile à l'utilisateur et c'est jamais une bonne chose.

Pour ce qui est de gérer l'interactivité JavaScript sait faire cela très bien. Ce sont les écouteurs du clavier ou plus généralement la programmation événementielle(un événement déclenche une action ou fonction).

Voici un exemple avec le clavier:

https://www.w3schools.com/jsref/event_key_keycode.asp

et les équivalent de keyCode en touche du clavier:
http://www.javascriptkeycode.com/


Pour déclencher une action/fonction avec une combinaison de touche vous devez utiliser une variable qui va stocker l'état des touches enfoncées.
Si la combinaison de touches correspond alors vous déclencher la fonction.

Concrètement pour ctrl+a
/* un objet (en notation JSON) qui contient 2 attributs indiquant l'état de la touche : enfoncée(true) ou relâchée(false)*/
let keyboardInputsStates={
toucheCtrl:false,
toucheA:false
}
/* une fonction qui permet de changer l'état des touches*/
let inputStateChange = function(evt){
console.log('event type = '+evt.type+' , keyCode = '+evt.keyCode);
if(evt.keyCode==17){
   if(evt.type=='keydown'){
/* la touche ctrl est enfoncée on met sa variable à true, pour le type de l'objet event voir ici : https://www.w3schools.com/jsreF/event_type.asp*/
     keyboardInputsStates.toucheCtrl=true;
   }
 if(evt.type=='keyup'){
     keyboardInputsStates.toucheCtrl=false;/* même chose mais si la touche est relâchée on met sa valeur à false*/
 }
}
//-- code similaire pour la touche A du clavier
if(evt.keyCode==65){
  if(evt.type=='keydown'){keyboardInputsStates.toucheA=true;}
  if(evt.type=='keyup'){keyboardInputsStates.toucheA=false;}
  }
}

/* ajout des écouteurs d'événement clavier */
/** touche clavier enfoncée*/
document.addEventListener('keydown', function(e){
   inputStateChange(e);
console.log('States : Ctrl = '+keyboardInputsStates.toucheCtrl+' , a ='+keyboardInputsStates.toucheA);
   
      if(keyboardInputsStates.toucheCtrl && keyboardInputsStates.toucheA){
     alert('Ctrl+a sont enfoncés');
   }
   
});
/** touche clavier relâchée*/
document.addEventListener('keyup', function(e){
   inputStateChange(e);
console.log('States : Ctrl = '+keyboardInputsStates.toucheCtrl+' , a ='+keyboardInputsStates.toucheA);
});


Tout ceci peut être optimisé et adapté à ce que vous voulez faire bien sûr.
Par exemple ici ça va bloquer sur un message d'alerte ou la résolution de la condition tant que les touches sont enfoncées. Il faut désactiver les écouteurs(avec removeEventListener) pour les réactiver une fois l'action exécutée ou améliorer l'algorithme pour pas boucler l'action tant que les touches sont enfoncées.
0
une autre solution (ce n'est pas limité)serait de détecter l'événement que pour le champ input que vous utilisez puis de perdre le focus lors de la résolution de l'action.
Dans cet exemple on peut voir que l'événement n'est détecté que si le curseur est dans le champ texte:
https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_event_key_keycode
Mieux vaut utiliser addEventListener pour bien des raisons que l'attribut(keyPress/keyup) dans la balise directement.
0
Je pense que tu ne m'as pas très bien compris je ne veux pas detecter qu'il appuie sur ctrl a mais au contraire c'est moi qui va«appuyer» sur ctrl a
0
Court > khalil
10 juil. 2020 à 08:52
Pas très bien expliqué non plus ...et ça ne l'est toujours pas:
Que voulez vous faire??? exactement et dans quel contexte?

Si vous parlez d'un script serveur ou d'un script shell ou DOS le JavaScript n'a pas vraiment de rapport et si c'est un script pour le navigateur c'est assez spécifique il faut voir direct avec l'extension que vous utilisez(comme seamonkey pour Firefox).

C'est évidemment impossible qu'une page Internet contrôle l'ordinateur de l'utilisateur et plutôt un problème de sécurité si c'est le cas dans un autre contexte.
Quel rapport avec vous appuyant sur son clavier?
On parle bien d'une page web donc de réseau (Internet) et de JavaScript?

Ceci peut vous aider
https://www.commentcamarche.net/infos/25857-charte-de-commentcamarche-net-conseils-d-ecriture/#description-du-probleme
0