curses es una biblioteca de control de terminal para sistemas tipo Unix , que permite la construcción de aplicaciones de interfaz de usuario de texto (TUI).
El nombre es un juego de palabras con el término " optimización del cursor ". Es una biblioteca de funciones que gestionan la visualización de una aplicación en terminales de celdas de caracteres (por ejemplo, VT100 ). [2]
ncurses es el reemplazo aprobado para los curses clásicos 4.4BSD .
Al utilizar curses, los programadores pueden escribir aplicaciones basadas en texto sin escribir directamente para ningún tipo de terminal específico. La biblioteca de curses en el sistema en ejecución envía los caracteres de control correctos según el tipo de terminal. Proporciona una abstracción de una o más ventanas que se asignan a la pantalla del terminal. Cada ventana está representada por una matriz de caracteres. El programador configura la apariencia deseada de cada ventana y luego le dice al paquete curses que actualice la pantalla. La biblioteca determina un conjunto mínimo de cambios necesarios para actualizar la pantalla y luego los ejecuta utilizando las capacidades y secuencias de control específicas del terminal.
En resumen, esto significa que el programador crea una matriz de caracteres de cómo debería verse la pantalla y deja que curses se encargue del trabajo.
La API de curses se describe en varios lugares. [3] La mayoría de las implementaciones de curses utilizan una base de datos que puede describir las capacidades de miles de terminales diferentes. Hay algunas implementaciones, como PDCurses, que utilizan controladores de dispositivos especializados en lugar de una base de datos de terminal. La mayoría de las implementaciones utilizan terminfo ; algunos usan termcap . Curses tiene la ventaja de la portabilidad a terminales de células de caracteres y la simplicidad. Para una aplicación que no requiere gráficos de mapa de bits o múltiples fuentes, una implementación de interfaz usando curses generalmente será mucho más simple y rápida que una que usa un kit de herramientas X.
La primera biblioteca de curses fue escrita por Ken Arnold y originalmente lanzada con BSD UNIX, donde se usó para varios juegos, sobre todo Rogue . [4] [5] [6] Se realizaron algunas mejoras a la biblioteca BSD en la década de 1990 como cursos "4.4BSD", por ejemplo, para proporcionar más de un tipo de resaltado de vídeo. [ cita necesaria ] Sin embargo, no se utilizan ampliamente.
El nombre "curses" es un juego de palabras con optimización del cursor . [7] A veces se afirma incorrectamente que el editor vi utilizó maldiciones . De hecho, el código en curses que optimiza el movimiento del cursor de un lugar a otro en la pantalla fue tomado de vi, que es anterior a curses. [5]
Según Goodheart, la implementación original de curses de Ken Arnold comenzó reutilizando funciones de la biblioteca termcap y agregándolas. [8] Unos años más tarde, Mary Ann Horton , que había mantenido las fuentes vi y termcap en Berkeley , fue a AT&T Corporation e hizo una versión diferente usando terminfo , que pasó a formar parte de UNIX System III y UNIX System V. Debido a restricciones de licencia para este último, las versiones BSD y AT&T de la biblioteca se desarrollaron de forma independiente. Además de la mejora de termcap/terminfo, se realizaron otras mejoras en la versión de AT&T:
El desarrollo de curses de AT&T parece haberse detenido a mediados de la década de 1990, cuando se definió X/Open Curses. [9] En 1995, el mantenedor de BSD, Keith Bostic , desaprobó oficialmente la biblioteca curses en favor de ncurses . [10] [ dudoso – discutir ] El desarrollo de ncurses y PDCurses continúa. Se sigue manteniendo una versión de BSD curses en el sistema operativo NetBSD (amplia compatibilidad con caracteres, migración de termcap a terminfo, etc.).
Diferentes líneas de desarrollo comenzaron imitando los curses de AT&T, a partir de al menos tres implementaciones: pcurses de Pavel Curtis (iniciado en 1982), PDCurses (Public Domain curses) de Mark Hessling para apoyar a su editor THE (iniciado en 1987), así como Rexx. /Curses, [11] y PC curses (versión 1.4 y anteriores de Bjorn Larsson, basada en la biblioteca de Pavel Curtis antes de 1990). [12] [13] [ discutir ]
ncurses (nuevas maldiciones) "se originó como pcurses ... y fue reeditado como ncurses 1.8.1 a finales de 1993". [14] ncurses es la implementación más conocida de curses y ha motivado un mayor desarrollo de otras variaciones, como los curses BSD en el proyecto NetBSD . [15] [16]
Aunque la biblioteca ncurses se desarrolló inicialmente bajo Linux, OpenBSD, FreeBSD y NetBSD, ha sido portada a muchos otros sistemas ANSI/POSIX UNIX, principalmente por Thomas Dickey. PDCurses, aunque no es idéntico a ncurses, utiliza las mismas llamadas a funciones y funciona de la misma manera que ncurses, excepto que PDCurses apunta a diferentes dispositivos, por ejemplo, consolas de Windows para DOS , Win32 , OS/2 y X11 . La transferencia entre los dos no es difícil. Por ejemplo, el juego roguelike ADOM fue escrito para Linux y ncurses, y luego portado a DOS y PDCurses. [17] [18]
Curses está diseñado para facilitar una funcionalidad similar a una GUI en un dispositivo de solo texto, como una PC que se ejecuta en modo consola, un terminal ANSI de hardware, un cliente Telnet o SSH , o similar. El software basado en Curses es software cuya interfaz de usuario se implementa a través de la biblioteca curses o una biblioteca compatible (como ncurses ).
Los programas basados en Curses suelen tener una interfaz de usuario que se asemeja a una interfaz gráfica de usuario tradicional, incluyendo ' widgets ' como cuadros de texto y listas desplazables, en lugar de la interfaz de línea de comandos (CLI) que se encuentra más comúnmente en dispositivos de solo texto. Esto puede hacerlos más fáciles de usar que un programa basado en CLI, y al mismo tiempo poder ejecutarse en dispositivos de solo texto. El software basado en Curses también puede ocupar menos recursos y operar en una gama más amplia de sistemas (tanto en términos de hardware como de software) que sus homólogos basados en GUI. Esto incluye máquinas antiguas anteriores a 1990 junto con sistemas integrados modernos que utilizan pantallas de sólo texto.
Curses se asocia más comúnmente con sistemas operativos tipo Unix , aunque también existen implementaciones para Microsoft Windows .
{{cite journal}}
: Citar diario requiere |journal=
( ayuda )basado en PC curses (versión 1.4) escrito por Bjorn Larsson[ enlace muerto permanente ]
PCcurses es una adaptación/reescritura del [paquete] de Pavel Curtis