---
name: "curs_slk"
section: "3x"
platform: "macos"
package: "ncurses"
version: "79"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/curs_slk/3x"
---

# curs\_slk(3x)

curses soft label routines

## NAME

**slk\_init**, **slk\_set**, **slk\_wset**, **slk\_refresh**, **slk\_noutrefresh**, **slk\_label**, **slk\_clear**, **slk\_restore**, **slk\_touch**, **slk\_attron**, **slk\_attrset**, **slk\_attroff**, **slk\_attr\_on**, **slk\_attr\_set**, **slk\_attr\_off**, **slk\_attr**, **slk\_color** - **curses** soft label routines

## SYNOPSIS

**#include \<curses.h\>**

**int slk\_init(int fmt);**\
 **int slk\_set(int labnum, const char \*label, int fmt);**\
 **int slk\_refresh(void);**\
 **int slk\_noutrefresh(void);**\
 **char \*slk\_label(int labnum);**\
 **int slk\_clear(void);**\
 **int slk\_restore(void);**\
 **int slk\_touch(void);**\
 **int slk\_attron(const chtype attrs);**\
 **int slk\_attroff(const chtype attrs);**\
 **int slk\_attrset(const chtype attrs);**\
 **int slk\_attr\_on(attr\_t attrs, void\* opts);**\
 **int slk\_attr\_off(const attr\_t attrs, void \* opts);**\
 **int slk\_attr\_set(const attr\_t attrs, short color\_pair, void\* opts);**\
 **attr\_t slk\_attr(void);**\
 **int slk\_color(short color\_pair);**\
 **int slk\_wset(int labnum, const wchar\_t \*label, int fmt);**\

## DESCRIPTION

The slk\* functions manipulate the set of soft function-key labels that exist on many terminals. For those terminals that do not have soft labels, **curses** takes over the bottom line of **stdscr**, reducing the size of **stdscr** and the variable **LINES**. **curses** standardizes on eight labels of up to eight characters each. In addition to this, the ncurses implementation supports a mode where it simulates 12 labels of up to five characters each. This is useful for today's PC-like enduser devices. ncurses simulates this mode by taking over up to two lines at the bottom of the screen; it does not try to use any hardware support for this mode.

The **slk\_init** routine must be called before **initscr** or **newterm** is called. If **initscr** eventually uses a line from **stdscr** to emulate the soft labels, then *fmt* determines how the labels are arranged on the screen:

- **0**

  indicates a 3-2-3 arrangement of the labels.

- **1**

  indicates a 4-4 arrangement

- **2**

  indicates the PC-like 4-4-4 mode.

- **3**

  is again the PC-like 4-4-4 mode, but in addition an index line is generated, helping the user to identify the key numbers easily.

The **slk\_set** routine (and the **slk\_wset** routine for the wide-character library) has three parameters:

- *labnum*

  is the label number, from **1** to **8** (12 for *fmt* in **slk\_init** is **2** or **3**);

- *label*

  is be the string to put on the label, up to eight (five for *fmt* in **slk\_init** is **2** or **3**) characters in length. A null string or a null pointer sets up a blank label.

- *fmt*

  is either **0**, **1**, or **2**, indicating whether the label is to be left-justified, centered, or right-justified, respectively, within the label.

The **slk\_refresh** and **slk\_noutrefresh** routines correspond to the **wrefresh** and **wnoutrefresh** routines.

The **slk\_label** routine returns the current label for label number *labnum*, with leading and trailing blanks stripped.

The **slk\_clear** routine clears the soft labels from the screen.

The **slk\_restore** routine restores the soft labels to the screen after a **slk\_clear** has been performed.

The **slk\_touch** routine forces all the soft labels to be output the next time a **slk\_noutrefresh** is performed.

The **slk\_attron**, **slk\_attrset**, **slk\_attroff** and **slk\_attr** routines correspond to **attron**, **attrset**, **attroff** and **attr\_get**. They have an effect only if soft labels are simulated on the bottom line of the screen. The default highlight for soft keys is A\_STANDOUT (as in System V curses, which does not document this fact).

The **slk\_color** routine corresponds to **color\_set**. It has an effect only if soft labels are simulated on the bottom line of the screen.

## RETURN VALUE

These routines return **ERR** upon failure and OK (SVr4 specifies only "an integer value other than **ERR**") upon successful completion.

X/Open defines no error conditions. In this implementation

- **slk\_attr**

  returns the attribute used for the soft keys.

- **slk\_attroff**, **slk\_attron**, **slk\_clear**, **slk\_noutrefresh**, **slk\_refresh**, **slk\_touch**

  return an error if the terminal or the softkeys were not initialized.

- **slk\_attrset**

  returns an error if the terminal or the softkeys were not initialized.

- **slk\_attr\_set**

  returns an error if the terminal or the softkeys were not initialized, or the color pair is outside the range 0..COLOR\_PAIRS-1, or opts is not null.

- **slk\_color**

  returns an error if the terminal or the softkeys were not initialized, or the color pair is outside the range 0..COLOR\_PAIRS-1.

- **slk\_init**

  returns an error if the format parameter is outside the range 0..3.

- **slk\_label**

  returns **NULL** on error.

- **slk\_set**

  returns an error if the terminal or the softkeys were not initialized, or the *labnum* parameter is outside the range of label counts, or if the format parameter is outside the range 0..2, or if memory for the labels cannot be allocated.

## NOTES

Most applications would use **slk\_noutrefresh** because a **wrefresh** is likely to follow soon.

## PORTABILITY

The XSI Curses standard, Issue 4, describes these functions. It changes the argument type of the attribute-manipulation functions **slk\_attron**, **slk\_attroff**, **slk\_attrset** to be **attr\_t**, and adds **const** qualifiers. The format codes **2** and **3** for **slk\_init()** and the function **slk\_attr** are specific to ncurses.

## SEE ALSO

**curses**(3X), **curs\_attr**(3X), **curs\_initscr**(3X), **curs\_refresh**(3X), **curs\_variables**(3X).
