Home | History | Annotate | Download | only in libcurses
      1 /*
      2  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
      3  * Use is subject to license terms.
      4  */
      5 
      6 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
      7 /*	  All Rights Reserved  	*/
      8 
      9 /*
     10  * Copyright (c) 1980 Regents of the University of California.
     11  * All rights reserved.  The Berkeley software License Agreement
     12  * specifies the terms and conditions for redistribution.
     13  */
     14 
     15 #pragma ident	"%Z%%M%	%I%	%E% SMI"
     16 
     17 /*LINTLIBRARY*/
     18 
     19 #ifndef lint
     20 static char
     21 sccsid[] = "@(#)getch.c 1.9 88/02/08 SMI"; /* from UCB 5.3 86/04/16 */
     22 #endif	/* not lint */
     23 
     24 #include	"curses.ext"
     25 
     26 /*
     27  *	This routine reads in a character from the window.
     28  */
     29 
     30 int
     31 wgetch(WINDOW *win)
     32 {
     33 	bool	weset = FALSE;
     34 	char	inp;
     35 
     36 	if (!win->_scroll && (win->_flags&_FULLWIN) &&
     37 	    win->_curx == win->_maxx - 1 && win->_cury == win->_maxy - 1)
     38 		return (ERR);
     39 #ifdef DEBUG
     40 	fprintf(outf, "WGETCH: _echoit = %c, _rawmode = %c\n",
     41 		_echoit ? 'T' : 'F', _rawmode ? 'T' : 'F');
     42 #endif
     43 	if (_echoit && !_rawmode) {
     44 		cbreak();
     45 		weset++;
     46 	}
     47 	inp = getchar();
     48 #ifdef DEBUG
     49 	fprintf(outf, "WGETCH got '%s'\n", unctrl(inp));
     50 #endif
     51 	if (_echoit) {
     52 		(void) mvwaddch(curscr, win->_cury + win->_begy,
     53 			win->_curx + win->_begx, inp);
     54 		(void) waddch(win, inp);
     55 	}
     56 	if (weset)
     57 		nocbreak();
     58 	return ((int)inp);
     59 }
     60