5.4. Cómo se construye un Termcap para un terminal
Para realizar el Termcap de una pantalla consulte la descripción de secuencias que se indica a continuación. Con ella podrá obtener la representación y significado de cada una de las teclas en el Termcap.
| Nombre | Descripción |
| ae | Final de juego de caracteres alternativos. |
| al | Añadir una línea en blanco. |
| am | Márgenes automáticos para el terminal. |
| as | Comienza el juego de caracteres alternativos. |
| bc | Backspace en caso de no ser ^H (Ctrl-H). |
| be | Final de parpadeo. |
| BE | Carácter de sonido de la campana. |
| bo | Principio de parpadeo. |
| BS | Secuencia enviada por Backspace (si no existe bc). |
| bt | Tabulador hacia atrás. |
| cd | Limpia hasta el final del display. |
| ce | Limpia hasta el final de la línea. |
| CF | Cursor off. |
| cl | Limpia toda la pantalla. |
| cm | Movimiento del cursor. |
| CN | Secuencia enviada por la tecla Cancel. |
| co | Número de columnas por línea. |
| CO | Cursor on. |
| cr | Retorno de carro, por defecto ^M (Ctrl-M). |
| cs | Cambia la región de scrolling (VT-100), como cm. |
| dc | Carácter de borrado. |
| dl | Borrado de una línea. |
| DL | Secuencia enviada por la tecla DELETE (borrado carácter destructivo). |
| D1-D9 | Caracteres gráficos con trazado doble. |
| do | Bajar una línea. |
| ei | Final del modo de inserción. ":ei=:" con ic. |
| EN | Secuencia enviada por la tecla END. |
| eu | Borra todo lo desprotegido y posiciona el cursor en home. |
| F1-F9 | Secuencia enviada por las teclas de función F11 a F19. |
| G1 | Carácter gráfico de la esquina superior derecha. |
| G2 | Carácter gráfico de la esquina superior izquierda. |
| G3 | Carácter gráfico de la esquina inferior izquierda. |
| G4 | Carácter gráfico de la esquina inferior derecha. |
| GD | Carácter tick-abajo. |
| GE | Final del modo gráfico. |
| GH | Carácter gráfico que representa la barra horizontal. |
| GL | Carácter tick-izquierda. |
| GR | Carácter tick-derecha. |
| GS | Comienzo del modo gráfico. |
| GU | Carácter tick-arriba. |
| GV | Carácter de barra vertical. |
| HM | Secuencia enviada por la tecla HOME (si no está kh). |
| ho | Movimiento del cursor a home (si no existe cm). |
| HP | Secuencia enviada por la tecla HELP. |
| ic | Insertar un carácter. |
| if | Nombre del fichero de inicialización de las teclas de función. |
| im | Comienzo del modo inserción. ":im=:q" con ic. |
| is | Secuencia de inicialización del terminal. |
| k1-ka | Secuencia enviada por las teclas de función F1-F9. |
| kb | Secuencia enviada por la tecla backspace. |
| kd | Secuencia enviada por la flecha abajo. |
| ke | Final de transmisión del keypad. |
| kh | Secuencia enviada por la tecla HOME. |
| kl | Secuencia enviada por la flecha izquierda. |
| kr | Secuencia enviada por la flecha derecha. |
| ks | Comienzo de la transmisión del keypad. |
| ku | Secuencia enviada por la flecha arriba. |
| LD | Secuencia enviada por la tecla de borrado de línea. |
| LF | Secuencia enviada por la tecla linefeed. |
| li | Número de líneas en pantalla. |
| LK | Secuencia enviada por flecha izquierda (si no existe kl). |
| ll | Movimiento a primera columna de la última línea (si no existe cm). |
| MN | Secuencia enviada por la tecla signo menos. |
| nd | Movimiento del cursor a la derecha no destructivo. |
| nl | Carácter de nueva línea (por defecto \n). |
| PD | Secuencia enviada por la tecla página abajo. |
| pe | Atributo de protección, conectando la media intensidad. |
| PL | Secuencia enviada por la tecla página izquierda. |
| po | Atributo de protección, desconectando la media intensidad. |
| PR | Secuencia enviada por la tecla página derecha. |
| PS | Secuencia enviada por la tecla signo más. |
| PU | Secuencia enviada por la tecla página arriba. |
| RT | Secuencia enviada por la tecla return. |
| se | Final de alta intensidad. |
| sf | Scroll arriba (forward). |
| sg | Número de caracteres en blanco dejados por so y se. |
| so | Principio de alta intensidad. |
| sr | Scroll abajo (backward). |
| TB | Secuencia enviada por la tecla TAB. |
| te | String para finalizar programas que utilicen cm. |
| tf | Final de impresión transparente a impresora esclava. |
| ti | String para inicializar programas que utilicen cm. |
| to | Inicio de impresión transparente a impr. esclava. |
| ue | Final del modo subrayado. |
| ug | Número de caracteres en blanco dejados por us y ue. |
| UK | Secuencia enviada por la flecha arriba. |
| up | Movimiento de subir una línea. |
| us | Inicio del modo subrayado. |
Por último, existe una entrada en el fichero Termcap que permite independizar el TransTOOL del set de caracteres empleado por su terminal. El TransTOOL graba en disco toda su información utilizando el GCS#2 de IBM (Graphic Character Set #2), pero permite utilizar un filtro para aquellos terminales que no dispongan de este set de caracteres. Este filtro se detalla en la entrada "mp" del fichero Termcap. Su estructura es la siguiente:
mp = K1 J1 K2 J2 ........... Kn Jn
Donde:
Kx y Jx deberán expresarse en términos de Termcap.
Por ejemplo, en un terminal HP-722 los códigos correspondientes a las "ñ" y vocales acentuadas en código octal son:
| HP-722 | GCS#2 | |
| á | 341 | 240 |
| é | 351 | 202 |
| í | 355 | 241 |
| ó | 363 | 242 |
| ú | 372 | 243 |
| ñ | 361 | 244 |
| Ñ | 321 | 245 |
Con lo cual, la entrada en "mp" para el terminal HP-722 deberá ser:
mp=\0240\0341\0202\0351\0241\0355\0242
\0363\0243\0372\0244\0361\0245\0321
Tenemos que comprender muy bien la diferencia entre la secuencia de control que envía una tecla y la secuencia de control que debe utilizar la pantalla para realizar una acción.
Por ejemplo, si quisiésemos programar la tecla <flecha arriba>. Los pasos a realizar para indicar esta tecla en el Termcap serían:
Ejecutar el comando de la shell que nos devuelva la secuencia de control que reproduce dicha tecla. El comando es el siguiente:
$ od -cb
Este comando espera el código de una
tecla, y al pulsar <Ctrl-d> aparece la secuencia de control que la
reproduce.
Siguiendo con nuestro ejemplo, pulsando la tecla <flecha arriba>:
U<Ctrl-d>
0000000 035 U \0
035 125 000
<Ctrl-d>
$
Las representaciones dentro del fichero Termcap para esta tecla serán las siguientes:
ku=\035U:up=^Z\
Esta secuencia significa que la tecla <flecha arriba> envía un \035U, y que la pantalla, para subir una línea, debe utilizar la secuencia <Ctrl-Z>.
Todas las teclas de edición, de movimiento del cursor, de función, etc., deberemos especificarlas en el Termcap de la misma forma que en el ejemplo anterior, pero cada una con sus caracteres de representación.
En caso de que las teclas de función no estén programadas, deberemos crear un fichero de inicialización de las teclas de función. La forma de crearlo se explica más adelante.
En el momento que el trans aparezca legible en la pantalla, deberemos abandonar este apartado y vigilar el setup del terminal.
Al acabar la especificación de un terminal en el Termcap deberemos configurar los siguientes ficheros:
Estos ficheros, que se explican más adelante, tienen como extensión el valor de la variable de entorno TERM. Por tanto, en nuestro ejemplo, deberíamos tener dichos ficheros con la extensión vt220.
El problema más común detectado por el setup del terminal es la representación de los caracteres de 8 bits. A su vez, los caracteres gráficos son tratados como tales, por lo que la configuración mínima del terminal debe ser la siguiente:
| Datos: | 8 bits. |
| Paridad: | No. |
| Bit de Parada: | 1 bit. |
| Emulación: | Depende del terminal. |