Keyboard Functions
keyboard-functions.pde
/**
* Keyboard Functions
* by Martin Gomez
*
* Click on the window to give it focus and press the letter keys to type colors.
* The keyboard function keyPressed() is called whenever
* a key is pressed. keyReleased() is another keyboard
* function that is called when a key is released.
*
* Original 'Color Typewriter' concept by John Maeda.
*/
int maxHeight = 40;
int minHeight = 20;
int letterHeight = maxHeight; // Height of the letters
int letterWidth = 20; // Width of the letter
int x = -20; // X position of the letters
int y = 0; // Y position of the letters
bool newletter = false;
int numChars = 26; // There are 26 characters in the alphabet
color colors[26]; // C++ fixed-size array
void setup() {
size(640, 360);
noStroke();
colorMode(HSB, numChars);
background(numChars / 2);
// Set a hue value for each key
for (int i = 0; i < numChars; i++) {
colors[i] = color(i, numChars, numChars);
}
}
void draw() {
if (newletter == true) {
int y_pos;
if (letterHeight == maxHeight) {
y_pos = y;
rect(x, y_pos, letterWidth, letterHeight);
} else {
y_pos = y + minHeight;
rect(x, y_pos, letterWidth, letterHeight);
fill(numChars / 2);
rect(x, y_pos - minHeight, letterWidth, letterHeight);
}
newletter = false;
}
}
void keyPressed() {
// If the key is between 'A' to 'Z' or 'a' to 'z'
if ((key >= 'A' && key <= 'Z') || (key >= 'a' && key <= 'z')) {
int keyIndex;
if (key <= 'Z') {
keyIndex = key - 'A';
letterHeight = maxHeight;
fill(colors[keyIndex]);
} else {
keyIndex = key - 'a';
letterHeight = minHeight;
fill(colors[keyIndex]);
}
} else {
fill(0);
letterHeight = 10;
}
newletter = true;
// Update the "letter" position
x = x + letterWidth;
// Wrap horizontally
if (x > width - letterWidth) {
x = 0;
y += maxHeight;
}
// Wrap vertically
if (y > height - letterHeight) {
y = 0;
}
}