Interacció amb el teclat
El teclat obre un ventall de possibilitats interactives: des de prémer tecles per canviar colors fins a controlar personatges o crear instruments musicals visuals. Domina keyPressed(), key i keyCode.
Per què utilitzar el teclat en art interactiu?
Mentre el ratolí controla la posició i els clics, el teclat permet ordres discretes: activar modes, disparar accions, introduir dades. En art generatiu i interactiu, el teclat serveix per:
- Canviar entre eines de dibuix (llapis, pinzell, goma).
- Modificar paràmetres en temps real (velocitat, nombre d'elements, opacitat).
- Activar o desactivar efectes visuals (mostrar/amagar capes, iniciar/aturar animacions).
- Crear jocs i narratives interactives (moviment de personatges, selecció d'opcions).
key i keyCode
p5.js proporciona dues variables globals per saber quina tecla s'ha premut:
key— conté el caràcter de la tecla premuda (ex: 'a', 'B', '3', ' '). És un string.keyCode— conté el codi numèric de la tecla, útil per a tecles especials com fletxes, ENTER, SHIFT, etc.keyIsPressed— booleà que éstruesi qualsevol tecla està premuda en aquest moment.
Exemple bàsic: mostrar la tecla premuda al llenç.
let ultimaTecla = '';
function draw() {
background(245);
text('Prem una tecla: ' + ultimaTecla, width/2, 70);
}
function keyPressed() {
ultimaTecla = key; // key conté el caràcter premut
}
keyPressed() vs keyIsPressed
Tenim dues maneres de respondre al teclat:
function keyPressed() { ... }— s'executa un sol cop quan es prem una tecla. Ideal per a accions discretes.keyIsPresseddins dedraw()— éstruementre es manté premuda una tecla. Ideal per a moviment continu.
function draw() {
background(245);
if (keyIsPressed) {
if (keyCode === LEFT_ARROW) x -= 2;
if (keyCode === RIGHT_ARROW) x += 2;
if (keyCode === UP_ARROW) y -= 2;
if (keyCode === DOWN_ARROW) y += 2;
}
ellipse(x, y, 30, 30);
}
Detectar tecles concretes
Podem preguntar per una tecla concreta comparant key amb un caràcter, o keyCode amb una constant.
function keyPressed() {
if (key === 'r' || key === 'R') colorFons = color(255, 200, 200);
if (key === 'g' || key === 'G') colorFons = color(200, 255, 200);
if (key === 'b' || key === 'B') colorFons = color(200, 200, 255);
if (key === ' ') colorFons = 0;
}
Combinacions de tecles: SHIFT, CONTROL, ALT
Podem detectar si una tecla modificadora està premuda alhora que una altra amb keyIsDown(keyCode).
function draw() {
background(245);
if (keyIsDown(SHIFT)) {
mida = 60; // Shift premut: cercle gran
} else {
mida = 30; // sense Shift: cercle petit
}
ellipse(width/2, height/2, mida, mida);
}
Exemples creatius pas a pas
Pinzell amb tecles de color
Dibuixa amb el ratolí i canvia de color prement tecles numèriques (1-5).
let colors = [color(255,0,0), color(0,255,0), color(0,0,255), color(255,255,0), color(0)];
function keyPressed() {
if (key >= '1' && key <= '5') {
let index = int(key) - 1;
colorActual = colors[index];
}
}
Màquina d'escriure visual
Cada lletra premuda apareix al llenç en una posició aleatòria amb un color diferent.
let lletres = [];
function keyPressed() {
if (key.length === 1 && key.match(/[a-zA-Z0-9]/)) {
lletres.push({
car: key,
x: random(width),
y: random(height),
col: color(random(255), random(255), random(255))
});
}
}
Consells per a la interacció amb teclat
- Diferencia majúscules i minúscules:
key === 'a'no detecta 'A'. Utilitzakey.toLowerCase() === 'a'per a ambdues. - Evita conflictes amb el navegador: tecles com F5 (refrescar) o Ctrl+S (desar) tenen funcions pròpies.
- Utilitza
keyCodeper a fletxes i tecles especials: LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, ENTER, ESCAPE, TAB, BACKSPACE, DELETE. - Combina ratolí i teclat: per exemple, mantenir SHIFT mentre es dibuixa per fer traços rectes.
Exercicis per practicar
- Fes que un personatge (cercle o rectangle) es mogui per la pantalla amb les fletxes (WASD o cursors).
- Crea un sistema de capes: prement '1', '2', '3' es mostren o s'amaguen diferents conjunts de formes al llenç.
- Implementa un comandament de velocitat: amb les tecles '+' i '-' augmenta o redueix la velocitat d'una animació.
- Dissenya un generador de formes aleatòries activat per la barra espaiadora: cada cop que es prem, apareixen 5 noves formes en posicions aleatòries.
- Repte: Crea un Paint controlat per teclat: les tecles numèriques seleccionen el color, les fletxes amunt/avall canvien la mida del pinzell, la tecla 'G' activa la goma, i la tecla 'C' neteja el llenç.
Reflexió artística
El teclat és un instrument de precisió. Amb ell, pots donar ordres exactes, navegar per menús conceptuals, o fins i tot escriure poesia visual lletra a lletra. En l'art interactiu, el teclat permet una connexió diferent a la del ratolí: és rítmic, seqüencial, gairebé musical. Pensa en les possibilitats narratives: un visitant que escriu el seu nom i el veu transformar-se en una constel·lació. Un joc on les decisions es premen amb tecles. Una performance on el codi s'escriu en directe i cada lletra genera un so o una imatge. Combina el teclat amb el ratolí per crear interfícies riques i accessibles. El teu sketch ja no és només una imatge: és una aplicació interactiva.
Mini-projecte del Tema 13
Crea un "Instrument de dibuix musical" amb les següents característiques:
- Utilitza almenys 8 tecles diferents (ASDFGHJK o números 1-8) per seleccionar colors o formes.
- Implementa moviment continu d'algun element amb les fletxes o WASD.
- Incorpora combinacions de tecles: per exemple, mantenir SHIFT mentre es prem una tecla de color aplica aquell color al fons.
- Utilitza
keyPressed()per a accions discretes ikeyIsPressedper a accions contínues.