В симуляторе
У клавиатуры нет своего протокола: нажатая клавиша соединяет провод строки с проводом столбца, а опрашивает матрицу сама библиотека — по очереди опускает столбцы и читает строки, подтянутые вверх. Модель клавиатуры (с 1.8.12) изображает именно контакты, а не вызовы библиотеки, поэтому одинаково работают и Keypad, и опрос, написанный руками, в какую бы сторону он ни сканировал.
Клавиша на схеме держится, пока держат кнопку мыши, но не короче 120 мс модельного времени — иначе быстрый щелчок проскочил бы между двумя опросами. getKey() сообщает о нажатии один раз; повтор при удержании — это getState() и HOLD, как на настоящей клавиатуре.
Отбрасывание дребезга у библиотеки — 10 мс по умолчанию (setDebounceTime). Вызывайте getKey() часто: delay() в loop() делает клавиатуру глухой на всё своё время.