curses es una biblioteca de control de terminal para sistemas tipo Unix , que permite la creación de aplicaciones con 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 curses clásico de 4.4BSD .
Descripción general
Mediante curses, los programadores pueden escribir aplicaciones basadas en texto sin necesidad de programar directamente para un tipo de terminal específico. La biblioteca curses del sistema ejecutable envía los caracteres de control adecuados según el tipo de terminal. Proporciona una abstracción de una o más ventanas que se muestran en la pantalla del terminal. Cada ventana se representa mediante una matriz de caracteres. El programador configura la apariencia deseada de cada ventana y, a continuación, indica al paquete curses que actualice la pantalla. La biblioteca determina el conjunto mínimo de cambios necesarios para actualizar la visualización y 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 que define cómo debería verse la pantalla y deja que curses se encargue del resto.
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 terminales. La mayoría de las implementaciones utilizan terminfo ; algunas utilizan termcap . Curses tiene la ventaja de ser retroportable a terminales de celdas de caracteres y de ser simple. Para una aplicación que no requiere gráficos de mapa de bits ni múltiples fuentes, una implementación de interfaz que utilice curses generalmente será mucho más simple y rápida que una que utilice un kit de herramientas X.
Historia
La primera biblioteca curses fue escrita por Ken Arnold y lanzada originalmente con BSD UNIX, donde se utilizó para varios juegos, sobre todo Rogue . [ 4 ] [ 5 ] [ 6 ] En la década de 1990 se realizaron algunas mejoras a la biblioteca BSD como curses "4.4BSD", por ejemplo, para proporcionar más de un tipo de resaltado de vídeo. Sin embargo, estas mejoras no se utilizan ampliamente.
El nombre "curses" es un juego de palabras con " cursor optimization" (optimización del cursor) . [ 7 ] A veces se afirma erróneamente que curses fue utilizado por el editor vi ; en realidad, el código de curses que optimiza el movimiento del cursor 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 añadiéndoles otras. [ 8 ] Unos años más tarde, Mary Ann Horton , quien había mantenido el código fuente de vi y termcap en Berkeley , se unió a AT&T Corporation y creó una versión diferente utilizando terminfo , que pasó a formar parte de UNIX System III y UNIX System V. Debido a las restricciones de licencia de esta última, las versiones de la biblioteca para BSD y AT&T se desarrollaron de forma independiente. Además de la mejora de termcap/terminfo, se realizaron otras mejoras en la versión de AT&T:
- Vídeo resaltado (negrita, subrayado)
- La versión BSD solo admitía elementos destacados .
- dibujo lineal
- La versión BSD ofrecía poco soporte en este aspecto.
- bandera
- Esto no era compatible con la versión BSD.
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 , declaró oficialmente obsoleta la biblioteca curses en favor de ncurses . [ 10 ] El desarrollo de ncurses y PDCurses continúa. Una versión de curses de BSD sigue manteniéndose en el sistema operativo NetBSD (compatibilidad con caracteres anchos, migración de termcap a terminfo, etc.).
pcurses y PDCurses
Diferentes líneas de desarrollo comenzaron imitando las maldiciones de AT&T, a partir de al menos tres implementaciones: pcurses de Pavel Curtis (iniciado en 1982), PDCurses (maldiciones de dominio público) de Mark Hessling para dar soporte a su editor THE (iniciado en 1987), así como Rexx /Curses, [ 11 ] y PC curses (versión 1.4 y anteriores de Björn Larsson, basadas en la biblioteca de Pavel Curtis antes de 1990). [ 12 ] [ 13 ]
maldiciones
ncurses (nueva versión de curses) "se originó como pcurses ... y se reeditó como ncurses 1.8.1 a finales de 1993". [ 14 ] ncurses es la implementación más conocida de curses y ha motivado el desarrollo de otras variantes, como BSD curses en el proyecto NetBSD . [ 15 ] [ 16 ]
Portabilidad
Aunque la biblioteca ncurses se desarrolló inicialmente para Linux, OpenBSD, FreeBSD y NetBSD, se ha adaptado a muchos otros sistemas UNIX ANSI/POSIX, principalmente por Thomas Dickey. PDCurses, si bien no es idéntica a ncurses, utiliza las mismas llamadas a funciones y funciona de la misma manera, con la diferencia de que PDCurses está dirigida a distintos dispositivos, como ventanas de consola para DOS , Win32 , OS/2 y X11 . La adaptación entre ambas no es difícil. Por ejemplo, el juego roguelike ADOM se escribió para Linux y ncurses, y posteriormente se adaptó a DOS y PDCurses. [ 17 ] [ 18 ]
Capturas de pantalla
Aplicaciones
Curses está diseñado para facilitar la funcionalidad de una interfaz gráfica de usuario (GUI) en un dispositivo que solo admite texto, como un PC en modo consola, un terminal ANSI de hardware, un cliente Telnet o SSH , o similar. El software basado en Curses es aquel cuya interfaz de usuario se implementa mediante la biblioteca curses o una biblioteca compatible (como ncurses ).
Los programas basados en Curses suelen tener una interfaz de usuario similar a una interfaz gráfica tradicional, con widgets como cuadros de texto y listas desplazables, en lugar de la interfaz de línea de comandos (CLI) más común en dispositivos de solo texto. Esto los hace más fáciles de usar que un programa basado en CLI, sin dejar de ser compatibles con dispositivos de solo texto. El software basado en Curses también consume menos recursos y funciona en una gama más amplia de sistemas (tanto de hardware como de software) que sus contrapartes con interfaz gráfica. Esto incluye máquinas antiguas anteriores a 1990, así como sistemas embebidos modernos con pantallas de solo texto.
Curses se asocia más comúnmente con sistemas operativos tipo Unix , aunque también existen implementaciones para Microsoft Windows .
Véase también
Referencias
- ↑ Craddock, David L. (17 de junio de 2016). "Procedural Dungeons of Doom: The Making of Rogue – Chapter 3" . Recuperado el 18 de mayo de 2023 .
- ↑ Dickey, Thomas E. "ENFERMERÍAS - Preguntas frecuentes" .
- ↑ Strang, John. Programación con maldiciones . O'Reilly. ISBN 0-937175-02-1.
- ↑ Salus, Peter H. (octubre de 1994). "La historia de Unix trata tanto de colaboración como de tecnología" . Byte.
- 1 2 Arnold, KCRC (1977). Actualización de pantalla y optimización del movimiento del cursor: un paquete de biblioteca . Universidad de California, Berkeley.
- ↑ Arnold, Kenneth CRC; Amir, Elan (diciembre de 1992). "Actualización de pantalla y optimización del movimiento del cursor: un paquete de biblioteca" .
- ↑ Dickey, Thomas E. "ENFERMERÍAS - Preguntas frecuentes" .
- ↑ Goodheart, Berny (1991). Explicación de las maldiciones de UNIX . Prentice Hall. pág. xi. ISBN 0-13-931957-3.
- ↑ "X/Open Curses, Número 4 Versión 2, Páginas de referencia" . The Open Group. 1997.
- ↑ Raymond, Eric S. (1 de septiembre de 1995). "ncurses: Manejo portátil de pantallas para Linux" . Linux Journal . Recuperado el 18 de mayo de 2023 .
- ↑ Hessling, Mark (2008). "Rexx/Curses" . Proyecto SourceForge rexxcurses . Recuperado el 10 de febrero de 2014 .
- ↑ Ellermann, F. (1993-07-26). "CURSES.NEW en pccurses.zip" . Recuperado el 2014-02-10 .
Basado en PC curses (versión 1.4) escrito por Björn Larsson.
- ↑ Larsson, Björn (1990-01-14). "README.NOW en pccurs14.zip" . Archivado del original el 23-02-2014 . Recuperado el 10-02-2014 .
PCcurses es una adaptación/reescritura del [paquete] de Pavel Curtis.
- ↑ Dickey, Thomas E. (diciembre de 1996). "NCURSES - Nuevas maldiciones" .
- ↑ Proyecto NetBSD (febrero de 2004). "CURSES_SCREEN(3), Manual de funciones de la biblioteca de NetBSD" .
- ↑ Qiu, Ruibiao (septiembre de 2005). "NetBSD-SoC: Soporte para caracteres anchos en la biblioteca curses de NetBSD" .
- ↑ Biskup, Thomas (1994–2007). "ADOM - El pasado" . Archivado del original el 10 de octubre de 2007. Recuperado el 16 de noviembre de 2007 .
- ↑ Biskup, Thomas (15 de marzo de 1996). "Nuevo juego: ADOM (solo para MS-DOS, MS-Windows y Linux)" . Grupo de noticias : rec.games.roguelike.announce . Consultado el 16 de noviembre de 2007 .
Enlaces externos
- CURSOS - Páginas del manual
- Tutorial de Curses archivado el 28/05/2005 en Wayback Machine ( formato PDF )
- Maldiciones del dominio público
- Interfaz para programadores de Rexx
- Kit de herramientas Tcl
- X/Abrir maldiciones
- Maldiciones para Python
- Página principal del manual de NetBSD Curses. Archivada el 8 de agosto de 2014 en Wayback Machine.
- X/Open Curses, número 4, versión 2 , 1996, opengroup.org
- X/Open Curses, número 7 , 2009, opengroup.org
- Curses (biblioteca de programación)
- Terminfo
- Software Unix