terminal = $terminal; } /** * Read the next key event, replaying buffered events first. */ public function read(): Key { if (!empty($this->bufferedEvents)) { return \array_shift($this->bufferedEvents); } return Key::normalized($this->terminal->readKey()); } /** * Push an event back so it is replayed on the next read. */ public function replay(Key $key): void { \array_unshift($this->bufferedEvents, Key::normalized($key)); } }