X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fcurs_kernel.3x.html;h=d8932e326a916572257701f8634ad1d521bc9d9f;hb=HEAD;hp=dcc00357e2476b499237673711236647e1329957;hpb=74433bcf4f6fe40862a28f3c00edaedcd5054b01;p=ncurses.git diff --git a/doc/html/man/curs_kernel.3x.html b/doc/html/man/curs_kernel.3x.html index dcc00357..b93fcbf4 100644 --- a/doc/html/man/curs_kernel.3x.html +++ b/doc/html/man/curs_kernel.3x.html @@ -1,6 +1,6 @@
--curs_kernel(3x) curs_kernel(3x) +curs_kernel(3x) Library calls curs_kernel(3x)
- def_prog_mode, def_shell_mode, reset_prog_mode, reset_shell_mode, - resetty, savetty, getsyx, setsyx, ripoffline, curs_set, napms - low- - level curses routines + def_prog_mode, def_shell_mode, reset_prog_mode, reset_shell_mode, + resetty, savetty, getsyx, setsyx, curs_set, mvcur, napms, ripoffline - + low-level curses routines
@@ -67,96 +67,115 @@ void getsyx(int y, int x); void setsyx(int y, int x); - int ripoffline(int line, int (*init)(WINDOW *, int)); int curs_set(int visibility); + int mvcur(int oldrow, int oldcol, int newrow, int newcol); int napms(int ms); + int ripoffline(int line, int (*init)(WINDOW *, int));
- The following routines give low-level access to various curses capabil- - ities. These routines typically are used inside library routines. + The following routines give low-level access to various curses + capabilities. These routines typically are used inside library + routines. -
+
The def_prog_mode and def_shell_mode routines save the current terminal modes as the "program" (in curses) or "shell" (not in curses) state for use by the reset_prog_mode and reset_shell_mode routines. This is done - automatically by initscr. There is one such save area for each screen + automatically by initscr. There is one such save area for each screen context allocated by newterm. -
- The reset_prog_mode and reset_shell_mode routines restore the terminal - to "program" (in curses) or "shell" (out of curses) state. These are - done automatically by endwin(3x) and, after an endwin, by doupdate, so +
+ The reset_prog_mode and reset_shell_mode routines restore the terminal + to "program" (in curses) or "shell" (out of curses) state. These are + done automatically by endwin(3x) and, after an endwin, by doupdate, so they normally are not called. -
- The resetty and savetty routines save and restore the state of the ter- - minal modes. savetty saves the current state in a buffer and resetty - restores the state to what it was at the last call to savetty. +
+ The resetty and savetty routines save and restore the state of the + terminal modes. savetty saves the current state in a buffer and + resetty restores the state to what it was at the last call to savetty.
- The getsyx routine returns the current coordinates of the virtual - screen cursor in y and x. If leaveok is currently TRUE, then -1,-1 is - returned. If lines have been removed from the top of the screen, using - ripoffline, y and x include these lines; therefore, y and x should be - used only as arguments for setsyx. + getsyx stores the coordinates of virtual screen (newscr) cursor in y + and x. If newscr's leaveok(3x) output option is TRUE, getsyx stores -1 + in both y and x. If lines have been removed from the top of the screen + using ripoffline, y includes these lines; therefore, y and x populated + by getsyx should be used only as arguments for setsyx. - Few applications will use this feature, most use getyx instead. + Few applications use this feature; most call getyx(3x) instead.
- The setsyx routine sets the virtual screen cursor to y, x. If y and x - are both -1, then leaveok is set. The two routines getsyx and setsyx - are designed to be used by a library routine, which manipulates curses - windows but does not want to change the current position of the pro- - gram's cursor. The library routine would call getsyx at the beginning, - do its manipulation of its own windows, do a wnoutrefresh on its win- - dows, call setsyx, and then call doupdate. + setsyx sets the virtual screen (newscr) cursor location to (y, x). + setsyx(-1, -1) is equivalent to leaveok(newscr, TRUE). + + getsyx and setsyx are designed to be used by a function that + manipulates curses windows but seeks to avoid changing the cursor + position. Such a function would first call getsyx, modify its windows' + content, call wnoutrefresh(3x) on them, call setsyx, then call + doupdate(3x). + + Few applications use this feature; most call wmove(3x) instead. + + +
+ The curs_set routine sets the cursor state to invisible, normal, or + very visible for visibility equal to 0, 1, or 2 respectively. If the + terminal supports the visibility requested, the previous cursor state + is returned; otherwise, ERR is returned. + - Few applications will use this feature, most use wmove instead. +
+ mvcur provides low-level cursor motion. It takes effect immediately, + rather than at the next refresh. Unlike the other low-level output + functions, which either write to the standard output stream or are + passed a function pointer to perform output, mvcur uses a file + descriptor derived from the output stream parameter of newterm(3x). + + One application of mvcur accompanies the temporary use of another + program to write to the terminal screen. For example, first call + refresh(3x) to ensure that the screen and the library's model of it is + up to date; then call reset_shell_mode; write to the screen with the + external application; call reset_prog_mode; and finally call mvcur to + set the cursor's location to where curses thinks it is, since the + library has no knowledge of how the external application moved it. + + +
+ napms sleeps for ms milliseconds. If ms exceeds 30,000 (thirty + seconds), it is capped at that value.
- The ripoffline routine provides access to the same facility that - slk_init [see curs_slk(3x)] uses to reduce the size of the screen. - ripoffline must be called before initscr or newterm is called, to pre- - pare these initial actions: + ripoffline provides access to the same facility that slk_init(3x) uses + to reduce the size of the screen. ripoffline must be called before + initscr or newterm is called, to prepare these initial actions: o If line is positive, a line is removed from the top of stdscr. o if line is negative, a line is removed from the bottom. - When the resulting initialization is done inside initscr, the routine + When the resulting initialization is done inside initscr, the routine init (supplied by the user) is called with two arguments: o a window pointer to the one-line window that has been allocated and o an integer with the number of columns in the window. - Inside this initialization routine, the integer variables LINES and - COLS (defined in <curses.h>) are not guaranteed to be accurate and wre- - fresh or doupdate must not be called. It is allowable to call wnoutre- - fresh during the initialization routine. + Inside this initialization routine, the integer variables LINES and + COLS (defined in <curses.h>) are not guaranteed to be accurate and + wrefresh or doupdate must not be called. It is allowable to call + wnoutrefresh during the initialization routine. - ripoffline can be called up to five times before calling initscr or + ripoffline can be called up to five times before calling initscr or newterm. -
- The curs_set routine sets the cursor state to invisible, normal, or - very visible for visibility equal to 0, 1, or 2 respectively. If the - terminal supports the visibility requested, the previous cursor state - is returned; otherwise, ERR is returned. - - -
- The napms routine is used to sleep for ms milliseconds. - -
Except for curs_set, these routines always return OK. @@ -166,45 +185,71 @@ X/Open defines no error conditions. In this implementation def_prog_mode, def_shell_mode, reset_prog_mode, reset_shell_mode - return an error if the terminal was not initialized, or if the I/O - call to obtain the terminal settings fails. + return ERR if the terminal was not initialized, or if the I/O call + to obtain the terminal settings fails. ripoffline - returns an error if the maximum number of ripped-off lines exceeds - the maximum (NRIPS = 5). + returns ERR if the maximum number of ripped-off lines exceeds the + maximum (5).
Note that getsyx is a macro, so & is not necessary before the variables y and x. - Older SVr4 man pages warn that the return value of curs_set "is cur- - rently incorrect". This implementation gets it right, but it may be + Older SVr4 man pages warn that the return value of curs_set "is + currently incorrect". This implementation gets it right, but it may be unwise to count on the correctness of the return value anywhere else. - Both ncurses and SVr4 will call curs_set in endwin if curs_set has been + Both ncurses and SVr4 will call curs_set in endwin if curs_set has been called to make the cursor other than normal, i.e., either invisible or - very visible. There is no way for ncurses to determine the initial + very visible. There is no way for ncurses to determine the initial cursor state to restore that. +
+ In ncurses, mvcur accepts -1 for either or both old coordinates. This + value tells ncurses that the old location is unknown, and that it must + use only absolute motion, as with the cursor_address (cup) capability, + rather than the least costly combination of absolute and relative + motion. + +
- The virtual screen functions setsyx and getsyx are not described in the - XSI Curses standard, Issue 4. All other functions are as described in - XSI Curses. + Applications employing ncurses extensions should condition their use on + the visibility of the NCURSES_VERSION preprocessor macro. + + The virtual screen functions setsyx and getsyx are not described in + X/Open Curses, Issue 4. All other functions are as described in X/Open + Curses. - The SVr4 documentation describes setsyx and getsyx as having return - type int. This is misleading, as they are macros with no documented + The SVr4 documentation describes setsyx and getsyx as having return + type int. This is misleading, as they are macros with no documented semantics for the return value. + X/Open Curses notes: + + "After use of mvcur(), the model Curses maintains of the state + of the terminal might not match the actual state of the + terminal. An application should touch and refresh the window + before resuming conventional use of Curses." + + Both ncurses and SVr4 curses implement mvcur using the SCREEN data + allocated in either initscr(3x) or newterm(3x). X/Open Curses states + that the old location must be given for mvcur to accommodate terminals + that lack absolute cursor positioning. + + If interrupted, ncurses restarts napms. That, and the limitation to 30 + seconds, are different from other implementations. +
curses(3x), curs_initscr(3x), curs_outopts(3x), curs_refresh(3x), - curs_scr_dump(3x), curs_slk(3x), curs_variables(3x). + curs_scr_dump(3x), curs_slk(3x), curs_variables(3x) - curs_kernel(3x) +ncurses 6.5 2024-06-08 curs_kernel(3x)