Why doesn't processing recognize the key? (keyReleased)

Hi guys,
why doesn’t Processing recognize the ‘e’ key when the ‘s’ and ‘d’ or ‘w’ and ‘d’ keys are already pressed?

// Click on the image to give it focus,
// and then press any key.

int value = 0;

void draw() {
  fill(value);
  rect(25, 25, 50, 50);
}

void keyReleased() {
  if (value == 0) {
    value = 255;
  } else {
    value = 0;
  }
}
// processing example

https://landing.coolermaster.com/faq/anti-ghosting/

1 Like

The number of simultaneous key press / releases that your system will detect is hardware specific. In general, most consumer keyboards are not designed to signal certain key combinations – in particular, a cluster of two neighboring keys on a row plus a neighbor directly above or below seldom works.

This isn’t a limitation of Processing – your keyboard is literally not generating an “e” signal when you hold down s+d first.

I can test this on macOS by opening my OS keyboard viewer, holding down s and d (they light up) then pressing e (it doesn’t light up). Holding down any two keys on the home row and then typing a key above or below seems to fail.

3 Likes

See also “rollover”:

https://en.wikipedia.org/wiki/Rollover_(key)#:~:text=Certain%20high-end%20keyboards%20have,held%20down%20at%20the%20time.