---
name: "terminfo_variables"
section: "3ncurses"
platform: "linux"
package: "ncurses-doc"
version: "6.5+20250216-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/terminfo_variables"
---

# terminfo\_variables(3ncurses)

terminfo global variables

## NAME

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

## 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

**This page summarizes variables provided by the** *curses* **library's lower-level** *terminfo* **interface.** **Locate a more complete description in the terminfo(3NCURSES) manual** **page.**

**Depending on** *ncurses*'s **build-time configuration,** **these may be actual variables,** **or macros** **(see threads(3NCURSES))** **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

**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

**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(3NSES) and** **delscreen(3NCURSES).**

**It is possible to save a value of** **cur\_term** **for subsequent use as a parameter to set\_term(3NSES)** **for switching between screens.** **Alternatively,** **one can save the return value from newterm(3NCURSES) or** **setupterm(3NCURSES) to reuse in set\_term(3NSES).**

### *terminfo* Lookup Tables

**The [tic(1)](/tic/1.md) and [infocmp(1)](/infocmp/1.md) 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)](/terminfo/5.md) catalogs these.**

### 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(3NCURSES) 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(3NCURSES).**

**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(3NCURSES) 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

**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

**ncurses(3NCURSES),** **terminfo(3NCURSES),** **threads(3NCURSES),** **[terminfo(5)](/terminfo/5.md)**
