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)