https://invisible-island.net/ncurses/man/
curs_ins_wch(3x) Library calls curs_ins_wch(3x)
ins_wch, wins_wch, mvins_wch, mvwins_wch - insert a curses complex character in a window
#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);
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.
These functions return OK on success and ERR on failure. In ncurses, they return ERR if o the curses screen has not been initialized, or o (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.
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.
X/Open Curses Issue 4 describes these functions. It specifies no error conditions for them.
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.
curs_insch(3x) describes comparable functions in the non-wide-character curses configuration. curses(3x), terminfo(5) ncurses 6.5 2025-03-08 curs_ins_wch(3x)