|
|
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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.