@ -1,5 +1,5 @@  
															
														 
														
													
														
															
																 
																 
																/* See LICENSE for licence details. */  
																 
																 
																/* See LICENSE for licence details. */  
															
														 
														
													
														
															
																 
																 
																# define _XOPEN_SOURCE  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																# define _XOPEN_SOURCE 600   
															
														 
														
													
														
															
																 
																 
																# include  <ctype.h>  
																 
																 
																# include  <ctype.h>  
															
														 
														
													
														
															
																 
																 
																# include  <errno.h>  
																 
																 
																# include  <errno.h>  
															
														 
														
													
														
															
																 
																 
																# include  <fcntl.h>  
																 
																 
																# include  <fcntl.h>  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -107,61 +107,68 @@ typedef struct {  
															
														 
														
													
														
															
																 
																 
																	GC  gc ;   
																 
																 
																	GC  gc ;   
															
														 
														
													
														
															
																 
																 
																}  DC ;  
																 
																 
																}  DC ;  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																void  die ( const  char  * errstr ,  . . . ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  draw ( int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  execsh ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  sigchld ( int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																char *  kmap ( KeySym ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  kpress ( XKeyEvent  * ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  resize ( XEvent  * ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  run ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																int  escaddc ( char ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																int  escfinal ( char ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  escdump ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  eschandle ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  escparse ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  escreset ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tclearregion ( int ,  int ,  int ,  int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tcpos ( int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tcursor ( int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tdeletechar ( int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tdeleteline ( int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tdump ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tinsertblank ( int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tinsertblankline ( int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tmoveto ( int ,  int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tnew ( int ,  int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tnewline ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tputc ( char ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tputs ( char * ,  int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tresize ( int ,  int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tscroll ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tsetattr ( int * ,  int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tsetchar ( char ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  tsetscroll ( int ,  int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  ttynew ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  ttyread ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  ttyresize ( int ,  int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  ttywrite ( char  * ,  size_t ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																unsigned  long  xgetcol ( const  char  * ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  xclear ( int ,  int ,  int ,  int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  xcursor ( int ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  xdrawc ( int ,  int ,  Glyph ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  xinit ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  xscroll ( void ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  die ( const  char  * errstr ,  . . . ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  draw ( int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  execsh ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  sigchld ( int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  run ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  int  escaddc ( char ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  int  escfinal ( char ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  escdump ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  eschandle ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  escparse ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  escreset ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tclearregion ( int ,  int ,  int ,  int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tcpos ( int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tcursor ( int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tdeletechar ( int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tdeleteline ( int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tdump ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tinsertblank ( int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tinsertblankline ( int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tmoveto ( int ,  int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tnew ( int ,  int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tnewline ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tputc ( char ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tputs ( char * ,  int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tresize ( int ,  int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tscroll ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tsetattr ( int * ,  int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tsetchar ( char ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  tsetscroll ( int ,  int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  ttynew ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  ttyread ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  ttyresize ( int ,  int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  ttywrite ( const  char  * ,  size_t ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  unsigned  long  xgetcol ( const  char  * ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  xclear ( int ,  int ,  int ,  int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  xcursor ( int ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  xdrawc ( int ,  int ,  Glyph ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  xinit ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  xscroll ( void ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  expose ( XEvent  * ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  kpress ( XEvent  * ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  resize ( XEvent  * ) ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  void  ( * handler [ LASTEvent ] ) ( XEvent  * )  =  {  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	[ KeyPress ]  =  kpress ,   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	[ Expose ]  =  expose ,   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	[ ConfigureNotify ]  =  resize   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																} ;  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																/* Globals */  
																 
																 
																/* Globals */  
															
														 
														
													
														
															
																 
																 
																DC  dc ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																XWindow  xw ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																Term  term ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																Escseq  escseq ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																int  cmdfd ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																pid_t  pid ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																int  running ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  DC  dc ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  XWindow  xw ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  Term  term ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  Escseq  escseq ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  int  cmdfd ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  pid_t  pid ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																static  int  running ;  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																die ( const  char  * errstr ,  . . . )  {  
																 
																 
																die ( const  char  * errstr ,  . . . )  {  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -259,7 +266,7 @@ ttyread(void) {  
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																ttywrite ( char  * s ,  size_t  n )  {  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																ttywrite ( const  char  * s ,  size_t  n )  {  
															
														 
														
													
														
															
																 
																 
																	if ( write ( cmdfd ,  s ,  n )  = =  - 1 )   
																 
																 
																	if ( write ( cmdfd ,  s ,  n )  = =  - 1 )   
															
														 
														
													
														
															
																 
																 
																		die ( " write error on tty: %s \n " ,  SERRNO ) ;   
																 
																 
																		die ( " write error on tty: %s \n " ,  SERRNO ) ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -997,29 +1004,25 @@ draw(int redraw_all) {  
															
														 
														
													
														
															
																 
																 
																	xcursor ( CSdraw ) ;   
																 
																 
																	xcursor ( CSdraw ) ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																char *  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																kmap ( KeySym  k )  {  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	int  i ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	for ( i  =  0 ;  i  <  LEN ( key ) ;  i + + )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		if ( key [ i ] . k  = =  k )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																			return  ( char * ) key [ i ] . s ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	return  NULL ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																expose ( XEvent  * ev )  {  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	draw ( SCredraw ) ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																kpress ( XKeyEvent  * e )  {  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																kpress ( XEvent  * ev )  {  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	XKeyEvent  * e  =  & ev - > xkey ;   
															
														 
														
													
														
															
																 
																 
																	KeySym  ksym ;   
																 
																 
																	KeySym  ksym ;   
															
														 
														
													
														
															
																 
																 
																	char  buf [ 32 ] ;   
																 
																 
																	char  buf [ 32 ] ;   
															
														 
														
													
														
															
																 
																 
																	int  len ;   
																 
																 
																	int  len ;   
															
														 
														
													
														
															
																 
																 
																	int  meta ;   
																 
																 
																	int  meta ;   
															
														 
														
													
														
															
																 
																 
																	int  shift ;   
																 
																 
																	int  shift ;   
															
														 
														
													
														
															
																 
																 
																	char *  skmap ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																	meta   =  e - > state  &  Mod1Mask ;   
																 
																 
																	meta   =  e - > state  &  Mod1Mask ;   
															
														 
														
													
														
															
																 
																 
																	shift  =  e - > state  &  ShiftMask ;   
																 
																 
																	shift  =  e - > state  &  ShiftMask ;   
															
														 
														
													
														
															
																 
																 
																	len  =  XLookupString ( e ,  buf ,  sizeof ( buf ) ,  & ksym ,  NULL ) ;   
																 
																 
																	len  =  XLookupString ( e ,  buf ,  sizeof ( buf ) ,  & ksym ,  NULL ) ;   
															
														 
														
													
														
															
																 
																 
																	if ( skmap  =  kmap ( ksym ) )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		ttywrite ( skmap ,  strlen ( skmap ) ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	if ( key [ ksym ] )   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		ttywrite ( key [ ksy mn>pan class="p">]  ,  strlen ( key [ ksy mn>pan class="p">]  ) ) ;   
															
														 
														
													
														
															
																 
																 
																	else  if ( len  >  0 )  {   
																 
																 
																	else  if ( len  >  0 )  {   
															
														 
														
													
														
															
																 
																 
																		buf [ sizeof ( buf ) - 1 ]  =  ' \0 ' ;   
																 
																 
																		buf [ sizeof ( buf ) - 1 ]  =  ' \0 ' ;   
															
														 
														
													
														
															
																 
																 
																		if ( meta  & &  len  = =  1 )   
																 
																 
																		if ( meta  & &  len  = =  1 )   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -1054,7 +1057,6 @@ resize(XEvent *e) {  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																run ( void )  {  
																 
																 
																run ( void )  {  
															
														 
														
													
														
															
																 
																 
																	int  ret ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	XEvent  ev ;   
																 
																 
																	XEvent  ev ;   
															
														 
														
													
														
															
																 
																 
																	fd_set  rfd ;   
																 
																 
																	fd_set  rfd ;   
															
														 
														
													
														
															
																 
																 
																	int  xfd  =  XConnectionNumber ( xw . dis ) ;   
																 
																 
																	int  xfd  =  XConnectionNumber ( xw . dis ) ;   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -1062,39 +1064,25 @@ run(void) {  
															
														 
														
													
														
															
																 
																 
																	running  =  1 ;   
																 
																 
																	running  =  1 ;   
															
														 
														
													
														
															
																 
																 
																	XSelectInput ( xw . dis ,  xw . win ,  ExposureMask  |  KeyPressMask  |  StructureNotifyMask ) ;   
																 
																 
																	XSelectInput ( xw . dis ,  xw . win ,  ExposureMask  |  KeyPressMask  |  StructureNotifyMask ) ;   
															
														 
														
													
														
															
																 
																 
																	XResizeWindow ( xw . dis ,  xw . win ,  xw . w  ,  xw . h ) ;  /* fix resize bug in wmii (?) */   
																 
																 
																	XResizeWindow ( xw . dis ,  xw . win ,  xw . w  ,  xw . h ) ;  /* fix resize bug in wmii (?) */   
															
														 
														
													
														
															
																 
																 
																	  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																	while ( running )  {   
																 
																 
																	while ( running )  {   
															
														 
														
													
														
															
																 
																 
																		FD_ZERO ( & rfd ) ;   
																 
																 
																		FD_ZERO ( & rfd ) ;   
															
														 
														
													
														
															
																 
																 
																		FD_SET ( cmdfd ,  & rfd ) ;   
																 
																 
																		FD_SET ( cmdfd ,  & rfd ) ;   
															
														 
														
													
														
															
																 
																 
																		FD_SET ( xfd ,  & rfd ) ;   
																 
																 
																		FD_SET ( xfd ,  & rfd ) ;   
															
														 
														
													
														
															
																 
																 
																		XFlush ( xw . dis ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		ret  =  select ( MAX ( xfd ,  cmdfd ) + 1 ,  & rfd ,  NULL ,  NULL ,  NULL ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		if ( ret  <  0 )   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		if ( select ( MAX ( xfd ,  cmdfd ) + 1 ,  & rfd ,  NULL ,  NULL ,  NULL )  = =  - 1 )  {   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																			if ( errno  = =  EINTR )   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																				continue ;   
															
														 
														
													
														
															
																 
																 
																			die ( " select failed: %s \n " ,  SERRNO ) ;   
																 
																 
																			die ( " select failed: %s \n " ,  SERRNO ) ;   
															
														 
														
													
														
															
																 
																 
																				  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		if ( FD_ISSET ( xfd ,  & rfd ) )  {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																			while ( XPending ( xw . dis ) )  {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																				XNextEvent ( xw . dis ,  & ev ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																				switch  ( ev . type )  {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																				default :   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																					break ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																				case  KeyPress :   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																					kpress ( & ev . xkey ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																					break ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																				case  Expose :   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																					draw ( SCredraw ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																					break ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																				case  ConfigureNotify :   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																					resize ( & ev ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																					break ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																				}   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																			}   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																		}   
																 
																 
																		}   
															
														 
														
													
														
															
																 
																 
																		if ( FD_ISSET ( cmdfd ,  & rfd ) )  {   
																 
																 
																		if ( FD_ISSET ( cmdfd ,  & rfd ) )  {   
															
														 
														
													
														
															
																 
																 
																			ttyread ( ) ;   
																 
																 
																			ttyread ( ) ;   
															
														 
														
													
														
															
																 
																 
																			draw ( SCupdate ) ;   
																 
																 
																			draw ( SCupdate ) ;   
															
														 
														
													
														
															
																 
																 
																		}   
																 
																 
																		}   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		while ( XPending ( xw . dis ) )  {   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																			XNextEvent ( xw . dis ,  & ev ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																			if ( handler [ ev . type ] )   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																				( handler [ ev . type ] ) ( & ev ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		}   
															
														 
														
													
														
															
																 
																 
																	}   
																 
																 
																	}   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}