private function display() : void
    {
        $this->draw();

        $reader = new NonCanonicalReader($this->terminal);
        $reader->addControlMappings($this->defaultControlMappings);

        while ($this->isOpen()) {
            $char = $reader->readCharacter();
            if (!$char->isHandledControl()) {
                $rawChar = $char->get();
                if (isset($this->customControlMappings[$rawChar])) {
                    $this->customControlMappings[$rawChar]($this);
                }
                continue;
            }

            switch ($char->getControl()) {
                case InputCharacter::UP:
                case InputCharacter::DOWN:
                    $this->moveSelectionVertically($char->getControl());
                    $this->draw();
                    break;
                case InputCharacter::LEFT:
                case InputCharacter::RIGHT:
                    $this->moveSelectionHorizontally($char->getControl());
                    $this->draw();
                    break;
                case InputCharacter::ENTER:
                    $this->executeCurrentItem();
                    break;
            }
        }
    }
private function display() : void
    {
        $this->draw();

        $reader = new NonCanonicalReader($this->terminal);
        $reader->addControlMappings($this->defaultControlMappings);

        while ($this->isOpen()) {
            $char = $reader->readCharacter();
            if (!$char->isHandledControl()) {
                $rawChar = $char->get();
                if (isset($this->customControlMappings[$rawChar])) {
                    $this->customControlMappings[$rawChar]($this);
                }
                continue;
            }

            switch ($char->getControl()) {
                case InputCharacter::UP:
                case InputCharacter::DOWN:
                    $this->moveSelectionVertically($char->getControl());
                    $this->draw();
                    break;
                case InputCharacter::LEFT:
                case InputCharacter::RIGHT:
                    $this->moveSelectionHorizontally($char->getControl());
                    $this->draw();
                    break;
                case InputCharacter::ENTER:
                    $this->executeCurrentItem();
                    break;
            }
        }
    }
private function display ( ) : void { $ this -> draw ( ) ; $ reader = new NonCanonicalReader ( $ this -> terminal ) ; $ reader -> addControlMappings ( $ this -> defaultControlMappings ) ; while ( $ this -> isOpen ( ) ) { $ char = $ reader -> readCharacter ( ) ; if ( ! $ char -> isHandledControl ( ) ) { $ rawChar = $ char -> get ( ) ; if ( isset ( $ this -> customControlMappings [ $ rawChar ] ) ) { $ this -> customControlMappings [ $ rawChar ] ( $ this ) ; } continue ; } switch ( $ char -> getControl ( ) ) { case InputCharacter :: UP : case InputCharacter :: DOWN : $ this -> moveSelectionVertically ( $ char -> getControl ( ) ) ; $ this -> draw ( ) ; break ; case InputCharacter :: LEFT : case InputCharacter :: RIGHT : $ this -> moveSelectionHorizontally ( $ char -> getControl ( ) ) ; $ this -> draw ( ) ; break ; case InputCharacter :: ENTER : $ this -> executeCurrentItem ( ) ; break ; } } }
Display menu and capture input
Display menu and capture input