Terminal capabilities

From Wikipedia, the free encyclopedia

Template:Short description In computing and telecommunications, the capabilities of a terminal are various terminal features, above and beyond what is available from a pure teletypewriter, that host systems (and the programs that run on them) can make use of. They are (mainly) control codes and escape codes that can be sent to or received from the terminal. The escape codes sent to the terminal perform various functions that a CRT terminal (and software terminal emulators) is capable of, but that a teletypewriter is not; such as moving the terminal's cursor to positions on the screen, clearing and scrolling all or parts of the screen, turning on and off attached printer devices, programming programmable function keys, changing display colours and attributes (such as reverse video), and setting display title strings. The escape codes received from the terminal signify things such as function key, arrow key, and other special key (home key, end key, help key, PgUp key, PgDn key, insert key, delete key, and so forth) keystrokes.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.

Unix and POSIX: termcap, terminfo, et al.

In Unix and other POSIX-compliant systems that support the POSIX terminal interface, these capabilities are encoded in databases that are configured by a system administrator and accessed from programs via the terminfo library (which supersedes the older termcap library), upon which in turn are built libraries such as the curses and ncurses libraries, by which applications programs use the terminal capabilities to provide textual user interfaces with windows, dialogue boxes, buttons, labels, input fields, menus, and so forth.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found. The intention is that this allows applications programs to be independent of actual terminal characteristics. They don't need to hardwire any control codes or escape sequences into their code, and so don't have problems being used on a range of terminals with a range of capabilities.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.

termcap

Script error: No such module "Labelled list hatnote". The Page Template:Mono/styles.css has no content.termcap (for "terminal capabilities") library was developed for BSD systems. It uses a database stored in the file Page Template:Mono/styles.css has no content./etc/termcap. This database consists of a series of records (each of which consists of one or more lines in the file, joined by backslash characters at the ends of each line that continues onto a following one) each of which represents the capabilities of a particular terminal. The fields of the record comprise the terminal type name, or names, followed by a sequence of capabilities, separated by colons.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found. The capability fields themselves fall into three groups:

characteristics of the terminal
These comprise such things as the (nominal) number of rows and columns the terminal's display has, whether output automatically wraps onto the next line when it reaches the end of a line, and so forth.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.
control sequences sent as output to the terminal
These comprise the control codes and escape sequences sent to the terminal in order for it to perform some action (not necessarily a display action). An example of one of the simplest is the output sequence to clear the screen, which may be the form feed (ASCII Page Template:Kbd/styles.css has no content.FF) character on some types of terminal but may, say, be the escape sequence Page Template:Kbd/styles.css has no content.␛2J on a terminal that requires ANSI escape sequences.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.
control sequences sent as input by the terminal
These comprise the control codes and escape sequences that the terminal sends to the host to represent various actions and events, such as function keys and arrow keys being pressed.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.

terminfo

Script error: No such module "Labelled list hatnote". The terminfo ("terminal information") library was developed for System V systems. It uses a database stored in multiple files within a directory, which can be variously (on different Unices and POSIX-compatible systems) Page Template:Mono/styles.css has no content./usr/lib/terminfo, Page Template:Mono/styles.css has no content./usr/share/terminfo, or even Page Template:Mono/styles.css has no content./usr/share/lib/terminfo.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found. (Its location isn't even uniform across different distributions of Linux.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.)

Unlike the termcap database, the terminfo database is compiled, a machine-readable database that is constructed from a human-readable source file format by a utility program, Page Template:Mono/styles.css has no content.tic. They can be decompiled from machine-readable form back to human-readable form by another utility program, Page Template:Mono/styles.css has no content.infocmp.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found. The command to output the human-readable form of the "vt100" terminal definition, for example, is:Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.

infocmp vt100

The use of a machine-readable format was to avoid the unnecessary overhead, in applications programs using systems such as the termcap library, of repeatedly parsing the database content to read the fields of a record. The use of multiple files was to avoid the similar overhead of parsing the database content to find the database record for the target terminal type. The terminal type name index is, effectively, the Unix/POSIX filesystem's ordinary directory structure. Originally, Unix had severe performance problems with large directories containing many files, and thus terminfo uses a two-level structure, dividing up the directory entries by first letter into a series of subdirectories. More recent filesystem formats used on Unix systems don't suffer as much from such problems (because their on-disc directory structures are no longer simple arrays of entries, but are organized into trees or hash tables) and so the necessity for this design element, that still exists in modern terminfo implementations, has since disappeared.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.

Utility programs to exercise terminal capabilities

Script error: No such module "labelled list hatnote".

On Unix systems, the Page Template:Mono/styles.css has no content.tput command is used to look up a specific capability in the system's database, and output it to the command's standard output (which is, presumably, the terminal by which the function denoted by the capability is to be performed).Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found. One of the simplest operations is clearing the screen. The name of the database field that stores the output sequence for this is clear, so the command arguments to the Page Template:Mono/styles.css has no content.tput program to clear the screen are Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.

tput clear

Another operation is initializing or resetting the terminal to a known default state (of character attributes, fonts, colours, and so forth). The commands for this are:Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.

tput init

and

tput reset

Normally the Page Template:Mono/styles.css has no content.tput command uses the terminal type specified by the TERM environment variable, one of the controlling environment variables of the POSIX terminal interface. This can be overridden, however, to force Page Template:Mono/styles.css has no content.tput to look up a different terminal type in the database, with a command-line option to the command.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found. So, for example, to issue the reset sequence appropriate for the type of terminal named "vt100" in the database (usually a DEC VT100 terminal), irrespective of terminal type specified in environment variables, the command is:

tput -T vt100 reset

References

What supports what

Page Template:Reflist/styles.css has no content.

Sources used

Page Template:Refbegin/styles.css has no content.

Further reading