## MODIFIED Requirements ### Requirement: Tastatureingabe ohne Zeilenmodell `INKEY$` SHALL ohne zu blockieren die nächste anstehende Taste liefern: den leeren String bei leerem Puffer, ein Zeichen bei einer Zeichentaste, eine zwei Zeichen lange Folge mit führendem Nullzeichen bei einer Sondertaste. `INPUT$(n [, #dateinummer])` SHALL genau `n` Zeichen lesen und dabei blockieren, ohne sie am Bildschirm zu wiederholen. INPUT$ SHALL n Unicode-Codepoints liefern. Nicht verbrauchte Zeichen einer Sondertastenfolge und noch nicht gelesene Dateizeichen SHALL für Folgeaufrufe erhalten bleiben. Dateieingabe SHALL UTF-8 vor der Zeichenzählung decodieren. #### Scenario: INKEY$ bei leerem Tastaturpuffer - **WHEN** `INKEY$` ohne anstehende Taste ausgewertet wird - **THEN** liefert es den leeren String und blockiert nicht #### Scenario: Sondertaste als zwei Zeichen - **WHEN** F1 gedrückt wurde und `INKEY$` ausgewertet wird - **THEN** hat das Ergebnis die Länge 2 und beginnt mit dem Nullzeichen #### Scenario: Sondertastenfolge in zwei Reads - **WHEN** F1 ansteht und zweimal INPUT$(1) ausgeführt wird - **THEN** liefert der erste Aufruf das Nullzeichen und der zweite den Scancode, jeweils genau ein Zeichen #### Scenario: Unicode aus Datei - **WHEN** eine UTF-8-Datei mit ä beginnt und INPUT$(1,#1) aufgerufen wird - **THEN** liefert der Aufruf ä ohne Ersatzzeichen