---
name: "ins_wch"
section: "3x"
platform: "linux"
package: "ncurses"
version: "6.6-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/curs_ins_wch/3x"
---

# ins\_wch(3x)

insert a curses complex character in a window

Part of [curs\_ins\_wch(3x)](/curs_ins_wch/3x.md).

## NAME

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

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

**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),** **wins\_wch** **does not advance the cursor.** **ncurses(3X) describes the variants of this function.**

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

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

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

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

**curs\_insch(3X) describes comparable functions in the** **non-wide-character** *curses* **configuration.**

**curses(3X),** **[terminfo(5)](/terminfo/5.md)**
