diff --git a/core/src/processing/core/PApplet.java b/core/src/processing/core/PApplet.java index d96784a3f..e88b07f16 100644 --- a/core/src/processing/core/PApplet.java +++ b/core/src/processing/core/PApplet.java @@ -2635,8 +2635,17 @@ public class PApplet implements PConstants { keyPressed = true; keyPressed(keyEvent); } - case KeyEvent.RELEASE -> { - pressedKeys.remove(((long) keyCode << Character.SIZE) | key); + case KeyEvent.RELEASE -> { + List hashesToRemove = new ArrayList<>(); + for (Long hash : pressedKeys) { + int storedKeyCode = (int)(hash >> Character.SIZE); + if (storedKeyCode == keyCode) { + hashesToRemove.add(hash); + } + } + + pressedKeys.removeAll(hashesToRemove); + keyPressed = !pressedKeys.isEmpty(); keyReleased(keyEvent); }