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);
These functions insert the curses character ch 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.
insch, mvinsch, and mvwinsch 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 curses describes a successful return value only as "an integer value other than ERR".
SVr2 (1984) introduced winsch.
curs_ins_wch(3x) describes comparable functions in the wide-character curses configuration. curses(3x), terminfo(5) ncurses 6.5 2024-07-27 curs_insch(3x)