Utilidades de Terminal (I/O)
Archivo: src/terminal.rs (238 líneas)
¿Por qué existe?
Proporciona operaciones de terminal en modo raw para programas Forja que necesitan entrada de teclado avanzada (teclas individuales sin esperar Enter) y detección del tamaño de la terminal. Es la base para aplicaciones TUI (Terminal User Interface) en Forja.
Implementación multi-plataforma
- Unix (Linux/macOS/BSD): Usa
tcsetattr/tcgetattrpara modo raw yioctl(TIOCGWINSZ)para tamaño de terminal, viaextern "C" - Windows: Usa
SetConsoleMode/GetConsoleScreenBufferInfoviaextern "system"
API Pública
| Función | Descripción |
|---|---|
modo_raw() | Activa el modo raw en la terminal (desactiva buffering de línea, eco, etc.) |
modo_normal() | Restaura la terminal a su modo normal |
tamano_terminal() | Retorna (filas, columnas) del tamaño actual de la terminal |
leer_tecla() | Lee una tecla individual sin esperar Enter |
Uso desde Forja
Estas funciones se exponen a través del módulo terminal.fa de la stdlib, que provee funciones como modo_raw, modo_normal, tamano_terminal, y leer_tecla.
Ejemplo de uso (TUI básica)
// Ejemplo conceptual: leer teclas individuales
importar terminal
escribir("Presioná cualquier tecla (ESC para salir)...")
variable tecla = terminal.leer_tecla()
mientras (tecla != "\x1b") &brace;
escribir("Tecla: " + tecla)
tecla = terminal.leer_tecla()
} 💡 Relación con ANSI: El módulo
terminal se complementa con ansi.fa de la stdlib, que provee códigos ANSI para colores, movimientos de cursor y estilos de texto.