Annotation of 43BSDReno/share/doc/ps1/18.curses/intro.3, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1980 The Regents of the University of California.
        !             2: .\" All rights reserved.
        !             3: .\"
        !             4: .\" Redistribution and use in source and binary forms are permitted
        !             5: .\" provided that the above copyright notice and this paragraph are
        !             6: .\" duplicated in all such forms and that any documentation,
        !             7: .\" advertising materials, and other materials related to such
        !             8: .\" distribution and use acknowledge that the software was developed
        !             9: .\" by the University of California, Berkeley.  The name of the
        !            10: .\" University may not be used to endorse or promote products derived
        !            11: .\" from this software without specific prior written permission.
        !            12: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
        !            13: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
        !            14: .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            15: .\"
        !            16: .\"    @(#)intro.3     6.2 (Berkeley) 3/17/89
        !            17: .\"
        !            18: .sh 1 Usage
        !            19: .pp
        !            20: This is a description of how to actually use the screen package.
        !            21: In it, we assume all updating, reading, etc.
        !            22: is applied to
        !            23: .Vn stdscr .
        !            24: All instructions will work on any window,
        !            25: with changing the function name and parameters as mentioned above.
        !            26: .sh 2 "Starting up"
        !            27: .pp
        !            28: In order to use the screen package,
        !            29: the routines must know about terminal characteristics,
        !            30: and the space for
        !            31: .Vn curscr
        !            32: and
        !            33: .Vn stdscr
        !            34: must be allocated.
        !            35: These functions are performed by
        !            36: .Fn initscr .
        !            37: Since it must allocate space for the windows,
        !            38: it can overflow core when attempting to do so.
        !            39: On this rather rare occasion,
        !            40: .Fn initscr
        !            41: returns ERR.
        !            42: .Fn initscr
        !            43: must
        !            44: .bi always
        !            45: be called before any of the routines which affect windows are used.
        !            46: If it is not,
        !            47: the program will core dump as soon as either
        !            48: .Vn curscr
        !            49: or
        !            50: .Vn stdscr
        !            51: are referenced.
        !            52: However, it is usually best to wait to call it
        !            53: until after you are sure you will need it,
        !            54: like after checking for startup errors.
        !            55: Terminal status changing routines
        !            56: like
        !            57: .Fn nl
        !            58: and
        !            59: .Fn cbreak
        !            60: should be called after
        !            61: .Fn initscr .
        !            62: .pp
        !            63: Now that the screen windows have been allocated,
        !            64: you can set them up for the run.
        !            65: If you want to, say, allow the window to scroll,
        !            66: use
        !            67: .Fn scrollok .
        !            68: If you want the cursor to be left after the last change, use
        !            69: .Fn leaveok .
        !            70: If this isn't done,
        !            71: .Fn refresh
        !            72: will move the cursor to the window's current \*y after updating it.
        !            73: New windows of your own can be created, too, by using the functions
        !            74: .Fn newwin
        !            75: and
        !            76: .Fn subwin .
        !            77: .Fn delwin
        !            78: will allow you to get rid of old windows.
        !            79: If you wish to change the official size of the terminal by hand,
        !            80: just set the variables
        !            81: .Vn LINES
        !            82: and
        !            83: .Vn COLS
        !            84: to be what you want,
        !            85: and then call
        !            86: .Fn initscr .
        !            87: This is best done before,
        !            88: but can be done either before or after,
        !            89: the first call to
        !            90: .Fn initscr ,
        !            91: as it will always delete any existing
        !            92: .Vn stdscr
        !            93: and/or
        !            94: .Vn curscr
        !            95: before creating new ones.
        !            96: .pp
        !            97: .sh 2 "The Nitty-Gritty"
        !            98: .sh 3 Output
        !            99: .pp
        !           100: Now that we have set things up,
        !           101: we will want to actually update the terminal.
        !           102: The basic functions
        !           103: used to change what will go on a window are
        !           104: .Fn addch
        !           105: and
        !           106: .Fn move .
        !           107: .Fn addch
        !           108: adds a character at the current \*y,
        !           109: returning ERR if it would cause the window to illegally scroll,
        !           110: .i i.e. ,
        !           111: printing a character in the lower right-hand corner
        !           112: of a terminal which automatically scrolls
        !           113: if scrolling is not allowed.
        !           114: .Fn move
        !           115: changes the current \*y to whatever you want them to be.
        !           116: It returns ERR if you try to move off the window when scrolling is not allowed.
        !           117: As mentioned above, you can combine the two into
        !           118: .Fn mvaddch
        !           119: to do both things in one fell swoop.
        !           120: .pp
        !           121: The other output functions,
        !           122: such as
        !           123: .Fn addstr
        !           124: and
        !           125: .Fn printw ,
        !           126: all call
        !           127: .Fn addch
        !           128: to add characters to the window.
        !           129: .pp
        !           130: After you have put on the window what you want there,
        !           131: when you want the portion of the terminal covered by the window
        !           132: to be made to look like it,
        !           133: you must call
        !           134: .Fn refresh .
        !           135: In order to optimize finding changes,
        !           136: .Fn refresh
        !           137: assumes that any part of the window not changed
        !           138: since the last
        !           139: .Fn refresh
        !           140: of that window has not been changed on the terminal,
        !           141: .i i.e. ,
        !           142: that you have not refreshed a portion of the terminal
        !           143: with an overlapping window.
        !           144: If this is not the case,
        !           145: the routines
        !           146: .Fn touchwin ,
        !           147: .Fn touchline ,
        !           148: and
        !           149: .Fn touchoverlap
        !           150: are provided to make it look like a desired part of window has been changed,
        !           151: thus forcing
        !           152: .Fn refresh
        !           153: check that whole subsection of the terminal for changes.
        !           154: .pp
        !           155: If you call
        !           156: .Fn wrefresh
        !           157: with
        !           158: .Vn curscr ,
        !           159: it will make the screen look like
        !           160: .Vn curscr
        !           161: thinks it looks like.
        !           162: This is useful for implementing a command
        !           163: which would redraw the screen in case it get messed up.
        !           164: .sh 3 Input
        !           165: .pp
        !           166: Input is essentially a mirror image of output.
        !           167: The complementary function to
        !           168: .Fn addch
        !           169: is
        !           170: .Fn getch
        !           171: which,
        !           172: if echo is set,
        !           173: will call
        !           174: .Fn addch
        !           175: to echo the character.
        !           176: Since the screen package needs to know what is on the terminal at all times,
        !           177: if characters are to be echoed,
        !           178: the tty must be in raw or cbreak mode.
        !           179: If it is not,
        !           180: .Fn getch
        !           181: sets it to be cbreak,
        !           182: and then reads in the character.
        !           183: .sh 3 Miscellaneous
        !           184: .pp
        !           185: All sorts of fun functions exists for maintaining and changing information
        !           186: about the windows.
        !           187: For the most part,
        !           188: the descriptions in section 5.4. should suffice.
        !           189: .sh 2 "Finishing up"
        !           190: .pp
        !           191: In order to do certain optimizations,
        !           192: and,
        !           193: on some terminals,
        !           194: to work at all,
        !           195: some things must be done
        !           196: before the screen routines start up.
        !           197: These functions are performed in
        !           198: .Fn getttmode
        !           199: and
        !           200: .Fn setterm ,
        !           201: which are called by
        !           202: .Fn initscr .
        !           203: In order to clean up after the routines,
        !           204: the routine
        !           205: .Fn endwin
        !           206: is provided.
        !           207: It restores tty modes to what they were
        !           208: when
        !           209: .Fn initscr
        !           210: was first called.
        !           211: Thus,
        !           212: anytime after the call to initscr,
        !           213: .Fn endwin
        !           214: should be called before exiting.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.