Outils pour utilisateurs

Outils du site


wiki:tutoriels:processing:processing_8:processing_8

Comment gérer une application (sketch) "multi-touches" ?

Objectif

Ce tutoriel montre comment gérer un programme Processing permettant de gérer la saisie de plusieurs touches simultanément. L'idée est de passer par un tableau de booléen représentant chaque touche. Si une touche est pressée, la valeur correspondante dans le tableau est true, sinon, la valeur est false.

Des exemples de fonctionnalités

Programme 1

Le programme suivant permet de lancer un événement lorsque des (deux au minimum) sont simultanément appuyées. L'événement cesse lorsque les touches sont relâchés.

Chaque touche correspond à un code ascii. Le plus simple est de créer un tableau de booléen dont l'indice correspond au code ascii de la touche. Par exemple, le code ascii de la touche 'A' est 65. Si la touche 'A' est pressée, alors la valeur du tableau à l'indice 65 est true.

boolean[] keys;
int SPACE = 32; // Code ascci de la touche espace
void setup() {
  keys = new boolean[512]; // Création d'un tableau linéaire de booléen. 
  // L'indice du tableau correspond au code ascii de la touche.
}
void draw() {
  // si les touches CTRL et SPACE sont appuyées, alors écrire "HELLO WORD" dans la console
  if (keys[CONTROL] && keys[SPACE]) { // CTRL + SPACE
    println("HELLO WORLD");
  }
}

void keyPressed() {
  println(keyCode); // écrire le code ascii de la touche pressée
  keys[keyCode] = true; // mettre la valeur du tableau correspondant à l'indice 'keycode' à true car la touche est pressée.
}
void keyReleased() {
  // lorsque la touche est relâchée, mettre la valeur du tableau correspondant à l'indice 'keycode' à false
  keys[keyCode] = false;
} 

Lien sur les codes ascii de chaque touches :

Programme 2

Le programme suivant permet de lancer un événement lorsque des (deux au minimum) sont simultanément appuyées. L'événement cesse lorsque qu'on appuie de nouveau sur les mêmes touches.

Chaque touche correspond à un code ascii. Le plus simple est de créer un tableau de booléen dont l'indice correspond au code ascii de la touche. Par exemple, le code ascii de la touche 'A' est 65. Si la touche 'A' est pressée, alors la valeur du tableau à l'indice 65 est true.

boolean[] keys;
int SPACE = 32; // Code ascci de la touche espace
void setup() {
  keys = new boolean[512]; // Création d'un tableau linéaire de booléen. 
  // L'indice du tableau correspond au code ascii de la touche.
}
void draw() {
  // si les touches CTRL et SPACE sont appuyées, alors écrire "HELLO WORD" dans la console
  if (keys[CONTROL] && keys[SPACE]) { // CTRL + SPACE
    println("HELLO WORLD");
  }
}

void keyPressed() {
  println(keyCode); // écrire le code ascii de la touche pressée
  // inverser la valeur du tableau correspondant à l'indice 'keycode' lorsque la touche est pressée.
  keys[keyCode] = !keys[keyCode]; 
}

Liens

wiki/tutoriels/processing/processing_8/processing_8.txt · Dernière modification: 2020/10/26 18:22 de damien.muti