import std.crt_raw;
Low-level Raw-Terminal-I/O: Non-blocking Tastatureingabe, Raw-Modus-Umschaltung. Erweitert std.crt um direkte Terminal-Steuerung ohne Zeilenpufferung.
Zwei der drei Funktionen sind Platzhalter (#1874, gemessen mit lyxc 1.1.14A — auch im Pseudoterminal):
*SetRawMode(true)liefert immer-1und schaltet nichts um. Der Rumpf ist einreturn -1mit dem Kommentar „requires platform-specific termios implementation„.
*KeyPressed()liefert immerfalse.
*ReadKeyRaw()arbeitet — ohne Raw-Modus aber zeilengepuffert, das Byte kommt also erst nach der Eingabetaste.
Die termios-Hüllen (tcgetattr,tcsetattr,ioctl) stehen in derselben Datei bereits; angeschlossen ist die API darüber nicht. Die Beispiele unten zeigen die vorgesehene Verwendung, kein heute laufendes Programm.
Unter LCBS kommt zweierlei dazu: die Terminal-ioctls sind nur über eine Hardware-Capability erreichbar (#1867), und fürKeyPressedfehltpoll/selectganz (#1868).
| Funktion | Signatur | Beschreibung |
|---|---|---|
SetRawMode | (enabled: bool): int64 | Vorgesehen: Terminal in den Raw-Modus schalten (kein Echo, keine Zeilenpufferung). Liefert derzeit immer -1 (#1874) |
KeyPressed | (): bool | Vorgesehen: nicht-blockierend prüfen, ob eine Taste anliegt. Liefert derzeit immer false (#1874) |
ReadKeyRaw | (): int64 | Liest ein Byte von stdin; -1 bei Fehler oder EOF |
import std.crt_raw;
fn WaitForKey(): int64 {
SetRawMode(true);
var k: int64 := ReadKeyRaw();
SetRawMode(false);
return k;
}
import std.crt_raw;
fn InputLoop(): void {
SetRawMode(true);
var running: bool := true;
while (running) {
if (KeyPressed()) {
var k: int64 := ReadKeyRaw();
if (k == 113) { running := false; } // 'q' = beenden
}
// ... restliche Spiellogik / Verarbeitung ...
}
SetRawMode(false);
}
SetRawMode und KeyPressed sind aktuell Platzhalter (-1 / false). Die vollständige termios-Implementierung ist plattformspezifisch und noch nicht integriert.@extern-Funktionen (tcgetattr, tcsetattr, select, ioctl) — erfordert dynamisches Linking mit libc.read(0, buf, 1).sys_ioctl und TCGETS/TCSETS auf dem Terminal-fd implementieren.Letzte Aktualisierung: 2026-06-06
Letzte Aktualisierung: 2026-08-30 — gegen lyxc 1.1.14A nachgemessen: SetRawMode und KeyPressed sind Platzhalter (#1874); die Seite beschrieb sie als arbeitend.