term\_variables(3X) Library calls term\_variables(3X)

# [NAME](#NAME)

**SP**, **acs\_map**, **boolcodes**, **boolfnames**, **boolnames**, **cur\_term**, **numcodes**, **numfnames**, **numnames**, **strcodes**, **strfnames**, **strnames**, **ttytype** - *terminfo* global variables

# [SYNOPSIS](#SYNOPSIS)

```
#include <curses.h>
#include <term.h>
```

```
chtype acs_map[];
```

```
SCREEN * SP;
```

```
TERMINAL * cur_term;
```

```
char ttytype[];
```

```
NCURSES_CONST char * const boolcodes[];
NCURSES_CONST char * const boolfnames[];
NCURSES_CONST char * const boolnames[];
```

```
NCURSES_CONST char * const numcodes[];
NCURSES_CONST char * const numfnames[];
NCURSES_CONST char * const numnames[];
```

```
NCURSES_CONST char * const strcodes[];
NCURSES_CONST char * const strfnames[];
NCURSES_CONST char * const strnames[];
```

# [DESCRIPTION](#DESCRIPTION)

This page summarizes variables provided by the *curses* library's lower-level *terminfo* interface. Locate a more complete description in the [**curs\_terminfo**(3X)](/man/os/ncurses/curs_terminfo.3X) manual page.

Depending on *ncurses*'s build-time configuration, these may be actual variables, or macros (see [**curs\_threads**(3X)](/man/os/ncurses/curs_threads.3X)) that provide read-only access to *curses*'s state. In either case, applications should treat them as read-only to avoid confusing the library.

## [Alternate Character Set Mapping](#Alternate_Character_Set_Mapping)

After initializing the *curses* or *terminfo* interfaces, the **acs\_map** array holds information used to translate cells with the **A\_ALTCHARSET** video attribute into line-drawing characters.

The encoding of the information in this array has changed periodically. Application developers need only know that it is used for the “ACS\_” constants in *curses.h*.

The comparable data for the wide-character library are not exposed as symbols in the API.

## [Current Terminal Data](#Current_Terminal_Data)

After initializing the *curses* or *terminfo* interfaces, **cur\_term** contains data describing the current terminal. It is also updated as a side effect of [**set\_term**(3X)](/man/os/ncurses/set_term.3X) and [**delscreen**(3X)](/man/os/ncurses/delscreen.3X).

It is possible to save a value of **cur\_term** for subsequent use as a parameter to [**set\_term**(3X)](/man/os/ncurses/set_term.3X) for switching between screens. Alternatively, one can save the return value from [**newterm**(3X)](/man/os/ncurses/newterm.3X) or [**setupterm**(3X)](/man/os/ncurses/setupterm.3X) to reuse in [**set\_term**(3X)](/man/os/ncurses/set_term.3X).

## *terminfo* Lookup Tables

The [**tic**(1)](/man/os/ncurses/tic.1) and [**infocmp**(1)](/man/os/ncurses/infocmp.1) programs use lookup tables for the long and short names of *terminfo* capabilities, as well as the corresponding names for *termcap* capabilities. These are available to other applications, though the hash tables used by the *terminfo* and *termcap* functions are not.

*terminfo* stores capability names in arrays with an “f” (eff) in their names: **boolfnames**, **numfnames**, and **strfnames**. It stores the briefer capability codes in arrays without the “f”: **boolnames**, **numnames**, and **strnames**. The corresponding *termcap* capability codes are stored in **boolcodes**, **numcodes**, and **strcodes**. [**terminfo**(5)](/man/os/ncurses/terminfo.5) catalogs these.

## [Terminal Type](#Terminal_Type)

A terminal description begins with one or more terminal names separated by “|” (vertical bars). On initialization of the *curses* or *terminfo* interfaces, [**setupterm**(3X)](/man/os/ncurses/setupterm.3X) copies the terminal name to the array **ttytype**.

## *terminfo* Names

In addition to the variables, *term.h* also defines a symbol for each *terminfo* capability name. These are in terms of the symbol **CUR**, which is defined

```
#define CUR ((TERMTYPE *)(cur_term))->
```

These symbols provide a faster method of accessing *terminfo* capabilities than using, for example, [**tigetstr**(3X)](/man/os/ncurses/tigetstr.3X).

The definition of **CUR** is implementation-dependent, but each *terminfo* library defines these names to point into the in-memory description of the current terminal. For example, in *ncurses*, the expressions **tigetstr("key\_dc")** and “**CUR Strings\[59]**” are equivalent.

## *terminfo* and *curses*

[**setupterm**(3X)](/man/os/ncurses/setupterm.3X) initializes the lower-level *terminfo* interface. The higher-level *curses* interface uses the *terminfo* interface internally; the symbol **SP** bridges the *curses* *SCREEN* type with the *terminfo* *TERMINAL* type.

# [PORTABILITY](#PORTABILITY)

X/Open Curses does not describe any of these symbols except for *cur\_term*. (The inclusion of *cur\_term* appears to be an oversight, since other comparable low-level information is omitted by X/Open.)

Other implementations may have comparable variables. Some implementations provide the variables in their libraries, but omit them from the header files.

All implementations that provide *terminfo* interfaces add definitions as described in the “*terminfo* Names” section above. Most, but not all, base the definition upon the *cur\_term* variable.

# [SEE ALSO](#SEE_ALSO)

[**curses**(3X)](/man/os/ncurses/curses.3X), [**curs\_terminfo**(3X)](/man/os/ncurses/curs_terminfo.3X), [**curs\_threads**(3X)](/man/os/ncurses/curs_threads.3X), [**terminfo**(5)](/man/os/ncurses/terminfo.5)

2025-11-11 ncurses 6.6

---

Document: ttytype(3x) from ncurses 6.6.20260926-r0 (Chainguard OS)
Source: https://github.com/ThomasDickey/ncurses-snapshots
