https://invisible-island.net/ncurses/man/
curs_insch(3x) Library calls curs_insch(3x)
insch, winsch, mvinsch, mvwinsch - insert a curses character in a window
#include <curses.h> int insch(chtype ch); int winsch(WINDOW * win, chtype ch); int mvinsch(int y, int x, chtype ch); int mvwinsch(WINDOW * win, int y, int x, chtype ch);
winsch inserts the curses character ch 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 addch(3x), winsch 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.
insch, mvinsch, and mvwinsch 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. SVr4 describes a successful return value only as "an integer value other than ERR".
SVr2 (1984) introduced these functions.
curs_ins_wch(3x) describes comparable functions in the wide-character curses configuration. curses(3x), terminfo(5) ncurses 6.5 2025-03-08 curs_insch(3x)