1 /* 2 * Copyright (c) 1981 Regents of the University of California. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms are permitted 6 * provided that this notice is preserved and that due credit is given 7 * to the University of California at Berkeley. The name of the University 8 * may not be used to endorse or promote products derived from this 9 * software without specific prior written permission. This software 10 * is provided ``as is'' without express or implied warranty. 11 */ 12 13 #ifndef lint 14 static char sccsid[] = "@(#)getch.c 5.4 (Berkeley) 06/08/88"; 15 #endif /* not lint */ 16 17 # include "curses.ext" 18 19 /* 20 * This routine reads in a character from the window. 21 * 22 */ 23 wgetch(win) 24 reg WINDOW *win; { 25 26 reg bool weset = FALSE; 27 reg char inp; 28 29 if (!win->_scroll && (win->_flags&_FULLWIN) 30 && win->_curx == win->_maxx - 1 && win->_cury == win->_maxy - 1) 31 return ERR; 32 # ifdef DEBUG 33 fprintf(outf, "WGETCH: _echoit = %c, _rawmode = %c\n", _echoit ? 'T' : 'F', _rawmode ? 'T' : 'F'); 34 # endif 35 if (_echoit && !_rawmode) { 36 cbreak(); 37 weset++; 38 } 39 inp = getchar(); 40 # ifdef DEBUG 41 fprintf(outf,"WGETCH got '%s'\n",unctrl(inp)); 42 # endif 43 if (_echoit) { 44 mvwaddch(curscr, win->_cury + win->_begy, 45 win->_curx + win->_begx, inp); 46 waddch(win, inp); 47 } 48 if (weset) 49 nocbreak(); 50 return inp; 51 } 52