En un nivel superior...

En un nivel superior...

Llevo unos días intentando buscar información. Para ser claros, mi objetivo es crear una ncursesbiblioteca C similar. soy plenamente consciente deSecuencia de escape ANSIy cómo utilizarlos. Sin embargo, quiero portabilidad, de ahí el motivo por el que estoy interesado en terminfolas bases de datos. He leído partes de documentaciones como:

Me permitió comprender la teoría y los principios, pero en la práctica no puedo encontrar ningún ejemplo de cómo acceder/interconectar la base de datos en un lenguaje de programación como C.

Actualmente, la única forma que se me ocurre sería cargar el terminfoarchivo binario de la base de datos en la memoria y acceder manualmente a él, pero parece extraño que deba crear mi propio esquema y que no exista una forma más fácil/práctica/oficial. para acceder a estas malditas bases de datos.

Respuesta1

Para acceder a la base de datos termcap en FreeBSD, hayesuna forma que viene en el sistema operativo. La biblioteca FreeBSD C tiene una API para accederbases de datos de capacidades. Entonces getcap()et al. son las funciones a llamar para acceder a la base de datos termcap en un nivel bajo. (De hecho, existen API de nivel inferior, pero no abstraen, como getcap()lo hace la API, el hecho de que las bases de datos de capacidades pueden ser archivos planos de registros de longitud variable o archivos de bases de datos binarios indexados adecuados, creados con el cap_mkdbprograma).

En un nivel superior están tgetent(), tputs(), et al. (Estos también existen en los sistemas operativos terminfo, como muchos sistemas operativos basados ​​en Linux). Sin embargo, estos son parte de la biblioteca termcap ncurses que se encuentra en la biblioteca C de FreeBSD; y estás intentando crear tu propia biblioteca "similar a ncurses". (En los sistemas operativos basados ​​en Linux, forman parte de la biblioteca terminfo ncurses).

Un ejemplo de acceso a registros de la base de datos terminfo sin pasar por la propia API terminfo de ncurses es la biblioteca unibilium. NeoVIM usa esto.

En un nivel superior...

La idea de que terminfo/termcap esmás portátilestá realmente estirado hasta el punto de ruptura y más allá en la segunda década del siglo XXI. Es casi seguro que nunca encontrará una terminal de video real que no cumpla con ECMA-48:1976, y mucho menos una terminal de papel. Y las abstracciones terminfo, que a menudo no coinciden con lo que hacen los terminales de vídeo reales, son en cierto modo unaimpedimentoa la portabilidad, ya que obligan a una forma de trabajar un tanto retorcida.

Esto es especialmente cierto en el caso deentrada terminal, que de hecho ha sido ECMA-48 (con algunas máquinas de estado para RXVT, Interix, Linux KVT y SCO Console) desde principios de la década de 1980, y para el cual el modelo termcap/terminfo de coincidencias de cadenas fijas es muy pobre adaptar. Pero las ideas de los teclados de calculadora "local"/"xmit", el "modo de direccionamiento del cursor" y sólo 3 formas de manifestación del cursor, entre otras, tampoco coinciden con la forma en que realmente funcionan los terminales.

Si ustedsonSi vamos a reinventar ncurses, entonces al menos no copie su modelo de pares de colores. Eso apenas se alinea con los sistemas de color ECMA-48 y AIXterm, y mucho menos con los mecanismos de color directo e indexado ITU T.416 que los terminales han tenido durante más de un cuarto de siglo.

Otras lecturas

información relacionada