If you wish to support a type of terminal that does not have an entry in vvtermcap, you will have to create one and add it to the vvtermcap file. The best way to do this is to modify an existing termcap or vvtermcap entry.
This section describes how to create a new vvtermcap entry for a different type of terminal. Here, we assume that you do not wish to support any commands beyond those already provided in the default vvtermcap interface. If you want to support fields other than those listed in Table 58.1, you will have to read further in this chapter.
Step 1: Select a terminal entry to modify.
UNIX and XENIX users can check to see if your terminal is defined in the /etc/termcap file supplied with your version of UNIX/XENIX. If your terminal is defined in the termcap file, copy that entry to vvtermcap using any text editor.
VMS users and UNIX/XENIX users who do not find the terminal in termcap should copy the definition closest to your terminal from vvtermcap.
Step 2: Make sure all needed vvtermcap fields are present.
Note: This section only lists the fields you will need to include in your vvtermcap entry. You should consult the terminal manual for more information about the control sequences and values to use for each field and the capabilities available on the terminal.
In addition to the name field, three other fields are required for Vermont Views to be operational. They are listed in Table 58.4.
Table 58.4: Mnemonic Fields Required in vvtermcap
| Name | Type | Description |
| cm | TDF_STR | Cursor motion |
| co | TDF_INT | Number of columns on the screen |
| li | TDF_INT | Number of lines on the screen |
The three required fields provide minimal functionality for a Vermont Views application. You will not be able to specify video attributes other than NORMAL, and the application will not be able to recognize many of the keys used in interactive processing.
Generally, to achieve full functionality, you should include fields for all the mnemonics listed in Table 58.1. Specifically, you should include the fields controlling video attributes and the fields that generate the keycodes used in your application.
Table 58.5 lists the monochrome and color attributes and the mnemonics that you will need to include to support those video attributes.
Table 58.5: Fields to Include to Support Different Attributes
| Terminal Attribute | Mnemonic Set, Reset |
| REVERSE | so, se |
| HIGH_INT | HS, HR |
| BLINK | BB, BR |
| UNDERLINE | us, ue |
| COLOR# | scl#, rcl# |
For key assignments, you should review your application to determine what keycodes you will be needing in your interactive processes. Then, you should ensure that these keycodes are defined in the vvtermcap entry. Table 58.6 lists the keycodes used in all keytables as provided in Vermont Views and the mnemonics for the fields that define them. In the default vvtermcap files, we have mapped keys available in PCDOS and not available on terminal keyboards to available terminal keys or key combinations. Check your vvtermcap file for the key assignments for your terminal.
It is not necessary to delete any extraneous information from the entry you copied from termcap, although parsing will speed up with fewer fields. Some of these extra entries may define several of the optional commands that Vermont Views can use, for example, setting various video attribute modes. The extra entries are not strictly necessary, but you may want to keep them for future use.
Step 3: Ensure proper initialization of the terminal.
Note: This step is recommended.
Vermont Views assumes that the terminal starts out in the NORMAL video mode. There is no guarantee that this will occur automatically. The terminal should be set to NORMAL by specifying an initialization string in vvtermcap. The mnemonic for the initialization string field is "is".
In addition to setting the terminal to NORMAL, you may wish to initialize other aspects of the terminal. If the initialization in vvtermcap is not satisfactory, or the terminal is not in vvtermcap, you will need the terminal documentation to determine the definitions for specific initializations.
Here is an initialization string for the VT100 that may be appropriate for Vermont Views:
|
The initialization string performs the following actions:
|
Table 58.6: Keycodes That Should Be Defined in vvtermcap
| Keycode | Mnemonic to include in vvtermcap | Label Mnemonic |
| KEY_HOME | kh | L_kh |
| KEY_CHOME | SXU | L_SXU |
| KEY_END | EN | L_EN |
| KEY_CEND | SXD | L_SXD |
| KEY_UP | ku | L_ku |
| KEY_DN | kd | L_kd |
| KEY_PGUP | PU | L_PU |
| KEY_CPGUP | SPU | L_SPU |
| KEY_PGDN | PD | L_PD |
| KEY_CPGDN | SPD | L_SPD |
| KEY_LEFT | kl | L_kl |
| KEY_CLEFT | PL | L_PL |
| KEY_RIGHT | kr | L_kr |
| KEY_CRIGHT | PR | L_PR |
| KEY_ESC | ESC | L_ESC |
| KEY_INS | ki | L_ki |
| KEY_DEL | DL | L_DL |
| KEY_BACK | bc | L_bc |
| KEY_STAB | bt | L_bt |
| KEY_F1 | k0 | L_k0 |
| KEY_AF1 | ZM | L_ZM |
| KEY_F2 | k1 | L_k1 |
| KEY_CF2 | Ck1 | L_Ck1 |
| KEY_AF2 | Akf1 | L_Akf1 |
| KEY_F3 | k2 | L_k2 |
| KEY_SF3 | Sk2 | L_Sk2 |
| KEY_F4 | k3 | L_k3 |
| KEY_CF4 | Ck3 | L_Ck3 |
| KEY_SF4 | Sk3 | L_Sk3 |
| KEY_F5 | k4 | L_k4 |
| KEY_CF5 | Ck4 | L_Ck4 |
| KEY_AF5 | Akf4 | L_Akf4 |
| KEY_F6 | k5 | L_k5 |
| KEY_SF6 | Sk5 | L_Sk5 |
| KEY_CF6 | Ck5 | L_Ck5 |
| KEY_F7 | k6 | L_k6 |
| KEY_SF7 | Sk6 | L_Sk6 |
| KEY_F8 | k7 | L_k7 |
| KEY_SF8 | Sk7 | L_Sk7 |
| KEY_F9 | k8 | L_k8 |
| KEY_CF9 | Ck8 | L_Ck8 |
| KEY_F10 | k9 | L_k9 |
| KEY_CF10 | Ck9 | L_Ck9 |
| KEY_CA | Cka | L_Cka |
| KEY_CB | Ckb | L_Ckb |
| KEY_CC | Ckc | L_Ckc |
| KEY_CD | Ckd | L_Ckd |
| KEY_CE | Cke | L_Cke |
| KEY_CF | Ckf | L_Ckf |
| KEY_CL | Ckl | L_Ckl |
| KEY_CO | Cko | L_Cko |
| KEY_CP | Ckp | L_Ckp |
| KEY_CR | Ckr | L_Ckr |
| KEY_CS | Cks | L_Cks |
| KEY_CT | Ckt | L_Ckt |
| KEY_CV | Ckv | L_Ckv |
| KEY_CW | Ckw | L_Ckw |
| KEY_CX | Ckx | L_Ckx |
| KEY_CZ | Ckz | L_Ckz |
| KEY_AA | Aka | L_Aka |
| KEY_AB | Akb | L_Akb |
| KEY_AC | Akc | L_Akc |
| KEY_AD | Akd | L_Akd |
| KEY_AE | Ake | L_Ake |
| KEY_AF | Akf | L_Akf |
| KEY_AG | Akg | L_Akg |
| KEY_AH | Akh | L_Akh |
| KEY_AI | Aki | L_Aki |
| KEY_AJ | Akj | L_Akj |
| KEY_AK | Akk | L_Akk |
| KEY_AL | Akl | L_Akl |
| KEY_AM | Akm | L_Akm |
| KEY_AN | Akn | L_Akn |
| KEY_AO | Ako | L_Ako |
| KEY_AP | Akp | L_Akp |
| KEY_AQ | Akq | L_Akq |
| KEY_AR | Akr | L_Akr |
| KEY_AS | Aks | L_Aks |
| KEY_AT | Akt | L_Akt |
| KEY_AU | Aku | L_Aku |
| KEY_AV | Akv | L_Akv |
| KEY_AW | Akw | L_Akw |
| KEY_AX | Akx | L_Akx |
| KEY_AY | Aky | L_Aky |
| KEY_AZ | Akz | L_Akz |
| KEY_A0 | Ak0 | L_Ak0 |
| KEY_A1 | Ak1 | L_Ak1 |
| KEY_A2 | Ak2 | L_Ak2 |
| KEY_A3 | Ak3 | L_Ak3 |
| KEY_A4 | Ak4 | L_Ak4 |
| KEY_A5 | Ak5 | L_Ak5 |
| KEY_A6 | Ak6 | L_Ak6 |
| KEY_A7 | Ak7 | L_Ak7 |
| KEY_A8 | Ak8 | L_Ak8 |
| KEY_A9 | Ak9 | L_Ak9 |