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);
These functions insert the curses complex character wch at the cursor in the specified window win (or stdscr). The character previously at the cursor and any to its right move one cell to the right; the rightmost character on the line is discarded. The cursor does not advance.
These functions return OK on success and ERR on failure. Functions taking a WINDOW pointer argument fail if the pointer is NULL. 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. A terminal's insert_character (ich1) capability is not necessarily employed.
X/Open Curses, Issue 4 describes these functions. SVr4 describes successful return values only as "an integer value other than ERR".
These functions were initially specified by X/Open Curses, Issue 4. The System V Interface Definition, Version 4 (1995), 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 2024-07-27 curs_ins_wch(3x)