/* built with Studio Sketchpad: * https://sketchpad.cc * * observe the evolution of this sketch: * https://studio.sketchpad.cc/sp/pad/view/ro.a$KnVo-LTUA/rev.10 * * authors: * GoToLoop * * * license (unless otherwise specified): * creative commons attribution-share alike 3.0 license. * https://creativecommons.org/licenses/by-sa/3.0/ */ /** * isKeyDown() (v3.1) * by Quarks (2013/May) * mod GoToLoop (2013/Aug) * * Forum.Processing.org/topic/ * problems-with-multiple-key-presses-more-specific-getkeytext-int-does-not-work * * Forum.Processing.org/topic/the-function-getkeytext-int-does-not-exist * * Studio.ProcessingTogether.com/sp/pad/export/ro.9cfU11egvzT6G */ static final String TABULAR = "\t"; static final color FG = #FF0000, BG = -1; static final int KEYS = 0500, SMOOTH = 3; static final float FPS = 60.0, WEIGHT = 1.0; final boolean[] keysDown = new boolean[KEYS]; void setup() { size(01000, 0500); smooth(SMOOTH); frameRate(FPS); colorMode(RGB); strokeWeight(WEIGHT); stroke(BG); } void draw() { final int p = frameCount % width; line(p, 0, p, height); for (int k = 0; k < KEYS; ) if (isKeyDown(k++)) set(p, k, FG); } void keyPressed() { processKey(keyCode, true); print(keyCode + TABULAR); } void keyReleased() { processKey(keyCode, false); } void processKey(final int k, final boolean isDown) { if (k < KEYS) keysDown[k] = isDown; } boolean isKeyDown(final int k) { return keysDown[k]; }