curs\_ins\_wch(3X) Library calls curs\_ins\_wch(3X)

# [NAME](#NAME)

**ins\_wch**, **wins\_wch**, **mvins\_wch**, **mvwins\_wch** - insert a *curses* complex character in a window

# [SYNOPSIS](#SYNOPSIS)

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

```
int ins_wch(const cchar_t * wch);
int wins_wch(WINDOW * win, const cchar_t * wch);
int mvins_wch(int y, int x, const cchar_t * wch);
int mvwins_wch(WINDOW * win, int y, int x, const cchar_t * wch);
```

# [DESCRIPTION](#DESCRIPTION)

**wins\_wch** inserts the *curses* complex character *wch* at the cursor position in the window *win*. The character previously at the cursor and any to its right move one cell to the right; the formerly rightmost character on the line is discarded. Unlike [**add\_wch**(3X)](/man/os/ncurses/add_wch.3X), **wins\_wch** does not advance the cursor. [**ncurses**(3X)](/man/os/ncurses/ncurses.3X) describes the variants of this function.

# [RETURN VALUE](#RETURN_VALUE)

These functions return **OK** on success and **ERR** on failure.

In *ncurses*, they return **ERR** if

- the *curses* screen has not been initialized, or
- (for functions taking a *WINDOW* pointer argument) *win* is a null pointer.

Functions prefixed with “mv” first perform cursor movement and fail if the position (*y*, *x*) is outside the window boundaries.

# [NOTES](#NOTES)

**ins\_wch**, **mvins\_wch**, and **mvwins\_wch** may be implemented as macros.

*curses* does not necessarily employ the terminal's **insert\_character** (**ich1**) capability to achieve insertion.

# [PORTABILITY](#PORTABILITY)

X/Open Curses Issue 4 describes these functions. It specifies no error conditions for them.

# [HISTORY](#HISTORY)

X/Open Curses Issue 4 (1995) initially specified these functions. The System V Interface Definition Version 4 of the same year specified a function named *winswch* (and the usual variants). This was a later addition to SVr4.*x*, not appearing in the first SVr4 (1989). It differed from X/Open's later *wins\_wch* in that it took an argument of type *chtype* instead of *cchar\_t*.

# [SEE ALSO](#SEE_ALSO)

[**curs\_insch**(3X)](/man/os/ncurses/curs_insch.3X) describes comparable functions in the non-wide-character *curses* configuration.

[**curses**(3X)](/man/os/ncurses/curses.3X), [**terminfo**(5)](/man/os/ncurses/terminfo.5)

2025-10-20 ncurses 6.6

---

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