diff lib/Xatoklib/aux.c @ 0:92745d501b9a

initial import from kinput2-v3.1
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Mon, 08 Mar 2010 04:44:30 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/Xatoklib/aux.c	Mon Mar 08 04:44:30 2010 +0900
@@ -0,0 +1,1182 @@
+/* 
+ * Copyright 1999 Justsystem Corporation, Japan.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of Justsystem Corporation
+ * not be used in advertising or publicity pertaining to distribution
+ * of the software without specific, written prior permission.  Justsystem 
+ * Corporation makes no representations about the suitability of this
+ * software for any purpose.  It is provided "as is" without express
+ * or implied warranty.
+ *
+ * Author: Atsushi Irisawa
+ */
+#ifndef lint
+static  char    rcsid[] = "$Id: aux.c,v 1.3 1999/08/24 09:05:25 ishisone Exp $" ;
+#endif  /* !lint */
+
+#include        <stdio.h>
+#include        <X11/IntrinsicP.h>
+#include        <X11/StringDefs.h>
+#include        <X11/Xmu/Atoms.h>
+#include        <X11/keysym.h>
+
+#include	<Xatoklib.h>
+
+
+/* Page */
+/*
+ * [$B4X?tL>(B]
+ *		wordStartFunc( )
+ * [$BI=Bj(B]
+ *              $BC18lEPO?%a%K%e!<$N=i4|2==hM}(B
+ * [$B8F=P7A<0(B]
+ *	int	wordStartFunc( _XatokRecPtr  acomm )
+ *
+ * [$B0z?t(B]
+ *              $B7?(B           : $BL>(B  $B>N(B  : I O : $B@b(B      $BL@(B
+ *		_XatokRecPtr : acomm   : i/o : kinput2$BMQJQ49%P%C%U%!(B
+ *
+ * [$BJV$jCM(B]
+ *		1 : $B>o$K#1(B
+ *
+ * [$B;HMQ4X?t(B]
+ *		$B$J$7(B
+ * [$B5!G=(B]
+ *		$BC18lEPO?%a%K%e!<$rI=<($9$k0Y$K!"%G!<%?$N=i4|2=$r9T$J$&!#(B
+ */
+int wordStartFunc(acomm)
+_XatokRecPtr	acomm;
+{
+
+#ifdef	ATOK_DEBUG
+	printf( "\303\261\270\354\305\320\317\277\263\253\273\317\n"/*=$BC18lEPO?3+;O(B\n=*/ ) ;
+#endif	/* ATOK_DEBUG */
+	bzero( acomm->word_str, sizeof( acomm->word_str )) ;
+	bzero( acomm->word_yomi, sizeof( acomm->word_yomi )) ;
+	acomm->word_strLen = 0 ;
+	acomm->word_yomiLen = 0 ;
+	acomm->word_mode = W_WORD ;
+
+	return 1 ;
+}
+
+/* Page */
+/*
+ * [$B4X?tL>(B]
+ *		wordFunc( )
+ * [$BI=Bj(B]
+ *              $BC18lEPO?;~$N%$%Y%s%H=hM}(B
+ * [$B8F=P7A<0(B]
+ *      int wordFunc( _XatokRecPtr acomm,  menuAux *mAux, 
+ *			WORD *aajcode, int *op )
+ *
+ * [$B0z?t(B]
+ *              $B7?(B           : $BL>(B   $B>N(B  : I/O : $B@b(B      $BL@(B
+ *		_XatokRecPtr : acomm    : i/o : kinput2$BMQJQ49%P%C%U%!(B
+ *		menuAux      : *mAux    : i   :  $B8=:_I=<($7$F$$$k(BMENU
+ *		WORD         : *aajcode : i/o : $BF~NO$5$l$?J8;z(B
+ *		int          : *op      :   o : MENU OPERATION
+ *
+ *
+ * [$BJV$jCM(B]
+ *		0 : key $BF~NO$r%(%s%8%s$KAw$i$J$$!#(B
+ *		1 : key$BF~NO$r%(%s%8%s$KAw$k!#(B
+ *
+ * [$B;HMQ4X?t(B]
+ *		atokModeSet( )
+ *		atokWordRegister( )
+ *		atokWordStyleList( )
+ * [$B5!G=(B]
+ *		$BC18lEPO?MQ$N(BAUX WINDOW$BI=<(;~$N%$%Y%s%H4IM}$r9T$J$&!#(B
+ *		$BC18lEPO?;~$O!"C18lI=5-F~NO!"FI$_F~NO!"IJ;lA*Br!"=hM}3NG'(B
+ *		$B=hM}7k2LI=<($N%b!<%I$,B8:_$9$k!#(B
+ *		$B3F%b!<%I$K$*$$$F!"F~NO$G$-$kJ8;zBN7O$r@_Dj$9$k!#(B
+ *		CTR$B%-!<$J$I$N@)8f%-!<$NA`:n$b9T$J$&!#(B
+ */
+int wordFunc(acomm, mAux, aajcode, op)
+_XatokRecPtr    acomm;
+menuAux		*mAux;
+WORD		*aajcode;
+int		*op;
+{
+	ATOKDEHINSTR	*hptr ;
+	char		euc[BUFSIZ] ;
+	int		i ;
+	int		pgMax = CAND_ROWS * CAND_COLS ;
+	int		status ;
+
+	char	*pp ;
+#ifdef	ATOK_DEBUG
+printf( "WORD FUNC OK (%x) word_mode (%d)\n", *aajcode, acomm->word_mode ) ;
+printf( "word_strLen  %d, word_yomiLen %d\n", 
+		acomm->word_strLen, acomm->word_yomiLen ) ;
+#endif	/* ATOK_DEBUG */
+	if ( *aajcode == CTR_H ) 	*aajcode = BS ;
+
+	/*
+	 * $BL$3NDjJ8;z$,L5$$;~$K@)8f%-!<$rF~NO$5$l$?>l9g$K$O(B
+	 * $B%*%Z%l!<%7%g%s$rL58z$K$9$k!#(B
+	 */
+	if ( !acomm->echoLen  && 
+		(( *aajcode & CTRL ) || *aajcode == DEL )) {
+		return 0 ;
+	}
+	/*
+	 * $BC18lEPO?<B;\Cf$K(B $B%3!<%IF~NO$J$I$N#A#U#X%&%#%s%I%&$O(B
+	 * $BI=<($G$-$J$$$N$G%*%Z%l!<%7%g%s$rL58z$K$9$k!#(B
+	 */
+	if ( *aajcode == F10 ) {
+		return 0 ;
+	}
+	/*
+	 * $BC18lF~NO;~$N#O#P(B
+	 */
+	if ( acomm->word_mode == W_WORD ) {
+		if ( *aajcode == CR && acomm->echoLen == 0 ) {
+			if ( acomm->word_strLen ) {
+				atokModeSet( acomm, IME_PRV_SETKOTEMODE, 0x0001 ) ;
+				acomm->word_mode <<= 1 ;
+				return 0 ;
+			}
+			return 0 ;
+		}
+		else if ( *aajcode == BS && !acomm->echoLen ) {
+			if (  acomm->word_strLen ) {
+				acomm->word_strLen-- ;
+			}
+			else {
+				*op  = OP_CANCEL ; 
+			}
+			return 0 ;
+		}
+
+		else if ( *aajcode == EESC ) {
+			if ( !( acomm->convStatus & M_CAND )) {	/* 616 */
+				*op = OP_CANCEL ;
+			}
+			/*
+			 * $BL$3NDjJ8;zNs$,$"$k;~$O!"L$3NDj%P%C%U%!$r%/%j%"$9$k(B
+			 */
+			if ( acomm->echoLen  ) {
+				acomm->echoLen = 0 ;
+				*aajcode = EESC ;
+				return 1 ;
+			}
+			return 0 ;
+		}
+		else if ((( *aajcode & CTRL ) && !acomm->echoLen ) 
+			|| *aajcode == TAB ){
+			return 0 ;
+		}
+		return 1 ;
+	}
+	/*
+	 * $BFI$_F~NO;~$N(BOP
+	 */
+	else if ( acomm->word_mode == W_YOMI ) {
+		if ( *aajcode == CR  && acomm->echoLen == 0 ) {
+			if ( acomm->word_yomiLen ) {
+				atokModeSet( acomm, IME_PRV_SETKOTEMODE, 0x0000 ) ;
+				acomm->word_mode <<= 1 ;
+				acomm->convStatus |= M_CAND ;
+				atokWordStyleList( acomm ) ;
+				*aajcode = XFER ;
+				return 0 ;
+			}
+			return 0 ;
+		}
+		else if ( *aajcode == BS && !acomm->echoLen ) {
+			if (  acomm->word_yomiLen ) {
+				acomm->word_yomiLen-- ;
+			}
+			else {
+				atokModeSet( acomm, IME_PRV_SETKOTEMODE, 0x0000 ) ;
+				acomm->word_mode >>= 1 ;
+			}
+			return 0 ;
+		}
+		else if ((( *aajcode & CTRL ) && !acomm->echoLen ) 
+			|| *aajcode == TAB ){
+			return 0 ;
+		}
+		else if ( *aajcode == EESC ) {
+			atokModeSet( acomm, IME_PRV_SETKOTEMODE, 0x0000 ) ;
+			/* acomm->word_mode >>= 1 ; */
+			*op = OP_CANCEL ;
+			return 0 ;
+		}
+		return 1 ;
+	}
+	/*
+	 * $BIJ;l$rA*BrCf$N(BOP
+	 */
+	else if ( acomm->word_mode == W_HINSHI ) {
+		if ( *aajcode > '0' && *aajcode <= '9' ) {
+			acomm->kohoPos = *aajcode - '1' ;
+			 *aajcode = CR ;
+		}
+		if ( *aajcode == CR ) {
+			acomm->word_hinshi = acomm->kohoCurPage * pgMax + acomm->kohoPos + 1 ;
+			acomm->word_mode <<= 1 ;
+		}
+		else if ( *aajcode == CTR_G ||
+			*aajcode == EESC ) {
+			acomm->word_mode >>= 1 ;
+		}
+		return 0 ;
+	}
+	/*
+	 * $BEPO?3NG'$N%@%$%"%m%0I=<(Cf$N(BOP
+	 */
+	else if ( acomm->word_mode == W_YORN ) {
+		if ( *aajcode == 'y' || *aajcode == 'Y'  ) {
+			acomm->word_str[acomm->word_strLen] = 0x00 ;
+			acomm->word_str[acomm->word_strLen+1] = 0x00 ;
+
+			acomm->wordStatus = atokWordRegister(
+				acomm,
+				acomm->word_str,
+				acomm->word_strLen,
+				acomm->word_yomi,
+				acomm->word_yomiLen,
+				acomm->word_hinshi ) ;
+			acomm->word_mode <<= 1 ;
+			/* *op  = OP_CANCEL ; */
+		}
+		else if ( *aajcode == 'n' || *aajcode == 'N' || *aajcode == BS ) {
+			atokWordStyleList( acomm ) ;
+			acomm->convStatus |= M_CAND ;
+			acomm->word_mode >>= 1 ;
+			*aajcode = XFER ;
+		}
+		else if ( *aajcode == EESC ) {
+			acomm->word_mode = 0 ;
+			*op = OP_CANCEL ;
+		}
+		return 0 ;
+	}
+	/*
+	 * $BEPO?7k2LI=<(Cf$N(BOP
+	 */
+	else if ( acomm->word_mode == W_RESULT ) {
+		if ( *aajcode == CR || *aajcode == EESC ) {
+			acomm->word_mode = 0 ;
+			*op = OP_CANCEL ;
+		}
+		return 0 ;
+	}
+	return 0 ;
+		
+#ifdef	ATOK_DEBUG
+	printf( "WORD STR [%s]\n", pp ) ;
+#endif	/* ATOK_DEBUG */
+}
+
+/* Page */
+/*
+ * [$B4X?tL>(B]
+ *		wordEndFunc( )
+ * [$BI=Bj(B]
+ *              $BC18lEPO?%a%K%e!<$N8e=hM}(B
+ * [$B8F=P7A<0(B]
+ *	int	wordEndFunc( _XatokRecPtr  acomm )
+ *
+ * [$B0z?t(B]
+ *              $B7?(B           : $BL>(B  $B>N(B  : I O : $B@b(B      $BL@(B
+ *		_XatokRecPtr : acomm   : i/o : kinput2$BMQJQ49%P%C%U%!(B
+ *
+ * [$BJV$jCM(B]
+ *		1 : $B>o$K#1(B
+ *
+ * [$B;HMQ4X?t(B]
+ *		$B$J$7(B
+ * [$B5!G=(B]
+ *		$BC18lEPO?%a%K%e!<$r:o=|$9$k0Y$K!"%G!<%?$N8e=hM}$r9T$J$&!#(B
+ *		
+ */
+int wordEndFunc(acomm)
+_XatokRecPtr    acomm;
+{
+
+	/* printf( "wordEndFunc\n" ) ; */
+	return 1 ;
+}
+/*
+ * Str
+ * $BC18lEPO?(B : $BC18l(B [XXXXX] $BFI$_(B [XXXX] $BIJ;l(B :
+ */
+/* Page */
+/*
+ * [$B4X?tL>(B]
+ *		wordStringFunc( )
+ * [$BI=Bj(B]
+ *              $BC18lEPO?%a%K%e!<$NJ8;zNs:n@.(B
+ * [$B8F=P7A<0(B]
+ *	int	wordStringFunc( _XatokRecPtr  acomm, menuAux *mAux,
+ *			wchar *echoStr, int *echoLen, int *revLen,
+ *			int *revPos )
+ *
+ * [$B0z?t(B]
+ *              $B7?(B           : $BL>(B  $B>N(B  : I O : $B@b(B      $BL@(B
+ *		_XatokRecPtr : acomm   : i/o : kinput2$BMQJQ49%P%C%U%!(B
+ *		menuAux      : *mAux   : i  : $B8=:_$N(B MENU CLASS
+ *		wchar        : *echoStr:   o : $BI=<(J8;zNs3JG<NN0h(B
+ *		int          : *echoLen :  o : $BI=<(J8;zNs$ND9$5(B
+ *		int          : *revLen :   o : $BI=<(J8;zNs$NH?E>$ND9$5(B
+ *		int          : *revPos :   o : $BI=<(J8;z%F%k$NH?E>$N3+;O0LCV(B
+ *
+ * [$BJV$jCM(B]
+ *		$BI=<(J8;zNs$ND9$5(B
+ *
+ * [$B;HMQ4X?t(B]
+ *		euc2wcs( )
+ *		s2e( )
+ * [$B5!G=(B]
+ *		$BC18lEPO?%a%K%e!<$rI=<(;~$NI=<(MQ$NJ8;zNs$r:n@.$9$k!#(B
+ *		$BI=5-F~NO;~$O!"I=5-3NDjJ8;zNs$HL$3NDjJ8;zNs!"(B
+ *		$B$h$_F~NO;~$O!"I=5-3NDjJ8;zNs$H!"$h$_3NDjJ8;zNs!"$h$_L$3NDjJ8;zNs(B
+ *		$BIJ;lA*Br;~$O!"FI$_F~NO;~$HF1$8!"(B
+ *		$BEPO?3NG';~$O!"I=5-3NDjJ8;zNs(B,$B$h$_J8;zNs!"IJ;l(B
+ *		$BEPO?40N;;~$O!"%9%F!<%?%9J8;zNs(B
+ *		$B$r:n@.$9$k!#(B
+ */
+int wordStringFunc(acomm, mAux, echoStr, echoLen, revLen, revPos)
+_XatokRecPtr    acomm;
+menuAux		*mAux;
+wchar		*echoStr;
+int		*echoLen;
+int		*revLen;
+int		*revPos;
+{
+	char	tbuf[BUFSIZ*2] ;
+	int	len ;
+	int	n ;
+	int	i, j, k, es ;
+	char	*ep ;
+	int		status ;
+	int	c ;
+
+	*revPos = 0 ;
+	*revLen = 0 ;
+
+	ep = tbuf ;
+	if ( mAux->str ) {
+		strcpy( ep, mAux->str ) ;
+		ep += strlen( ep ) ;
+	}
+#ifdef	ATOK_DEBUG
+printf(  "WORD MODE %d\n", acomm->word_mode );
+	printf( "  \303\261\270\354 [%s"/*=  $BC18l(B [%s=*/, acomm->word_str ) ;
+printf( "\303\261\270\354\263\316\304\352\272\321\312\270\273\372\316\363(%d) [%s]\n"/*=$BC18l3NDj:QJ8;zNs(B(%d) [%s]\n=*/, acomm->word_strLen, acomm->word_str ) ;
+printf( "\303\261\270\354  \263\316\304\352\244\267\244\277\312\270\273\372\316\363(%d) [%s]\n"/*=$BC18l(B  $B3NDj$7$?J8;zNs(B(%d) [%s]\n=*/, acomm->wlen, acomm->wbuf ) ;
+printf( "\303\261\270\354 \314\244\263\316\304\352\312\270\273\372\316\363[%s]\n"/*=$BC18l(B $BL$3NDjJ8;zNs(B[%s]\n=*/, acomm->echoStr ) ;
+for( i = 0 ; i < acomm->echoLen ; i++ ) {
+	printf( "%x ", acomm->echoStr[i] ) ;
+}
+printf( "\n" );
+#endif	/* ATOK_DEBUG */
+
+
+	/*
+	 * $BC18lEPO?$N%,%$%I$r@_Dj(B
+	 */
+	sprintf( ep, "  \303\261\270\354 ["/*=  $BC18l(B [=*/ ) ;
+	es = strlen( tbuf ) ;
+	len = euc2wcs( tbuf, es, echoStr ) ;
+	for( i = 0 ; i < acomm->word_strLen ; i++ ) {
+		echoStr[len++] = acomm->word_str[i] ;
+	}
+	/*
+	 * $BC18lF~NOCf$NI=<((B
+	 */
+	if (  acomm->word_mode == W_WORD ) {
+		/* 
+		 * $B:#2s$NF~NO$G3NDj$7$?J8;zNs$,$"$k>l9g$K$O!"(B
+		 * $B3NDjC18lJ8;zNs$H$7$F@_Dj$9$k!#(B
+		 */
+		for( i = 0 ; i < acomm->wlen ; i++ ) {
+			if ( acomm->word_strLen+i >= WORD_HYOKI_MAX ) {
+				/* printf( "$BC18l$,$J$,$9$.$k!#(B(%d)\n", i ) ; */
+				break ;
+			}
+			acomm->word_str[acomm->word_strLen+i] = acomm->wbuf[i] ;
+			echoStr[len++] = acomm->word_str[acomm->word_strLen+i] ;
+/* printf( "0x%x ", acomm->wbuf[i] ) ; */
+		}
+/* printf( "\n" ) ; */
+		acomm->word_strLen += i ;
+		acomm->word_str[acomm->word_strLen] = 0x00 ;
+		/*
+		 * $BL$3NDjJ8;zNs$r@_Dj(B
+		 */
+		if ( acomm->echoLen > 0 ) {
+			*revPos = len + acomm->revPos ;
+			*revLen = acomm->revLen ;
+			for( i = 0 ; i < acomm->echoLen ; i++ ) {
+				echoStr[len++] = acomm->echoStr[i] ;
+			}
+		}
+		else { 
+			*revPos = len ;
+			*revLen = 1 ;
+		}
+	}
+	n = euc2wcs( "]", 1, &echoStr[len] ) ;
+	len += n ;
+	*echoLen = len ;
+	if ( acomm->word_mode < W_YOMI ) {
+		return ;
+	}
+	sprintf( tbuf, "  \306\311\244\337 ["/*=  $BFI$_(B [=*/ ) ;
+	es = strlen( tbuf ) ;
+	n = euc2wcs( tbuf, es, &echoStr[len] ) ;
+	len += n ;
+
+	/*
+	 * $B$h$_$N$J$,$5$O(B $B4A;z$H(BANK$B$G$O(B $BF1$8$G$"$k!#(B
+	 */
+	for( i = 0 ; i < acomm->word_yomiLen ; i++ ) {
+		echoStr[len++] = acomm->word_yomi[i] ;
+	}
+	if ( acomm->word_mode == W_YOMI ) {
+		/* 
+		 * $B:#2s$NF~NO$G3NDj$7$?J8;zNs$,$"$k>l9g$K$O!"(B
+		 * $B3NDjC18lJ8;zNs$H$7$F@_Dj$9$k!#(B
+		 */
+		for( i = 0 ; i < acomm->wlen ; i++ ) {
+			if ( acomm->word_yomiLen+i >= WORD_YOMI_MAX ) {
+				/* printf( "$B$h$_$,$J$,$9$.$k!#(B(%d)\n", i ) ; */
+				break ;
+			}
+			acomm->word_yomi[acomm->word_yomiLen+i] = acomm->wbuf[i] ;
+			echoStr[len++] = acomm->word_yomi[acomm->word_yomiLen+i] ;
+		}
+		acomm->word_yomiLen += i ;
+		/*
+		 * $BL$3NDjJ8;zNs$r@_Dj(B
+		 */
+		if ( acomm->echoLen > 0 ) {
+			*revPos = len + acomm->revPos ;
+			*revLen = acomm->revLen ;
+			for( i = 0 ; i < acomm->echoLen ; i++ ) {
+				echoStr[len++] = acomm->echoStr[i] ;
+			}
+		}
+		else { 
+			*revPos = len ;
+			*revLen = 1 ;
+		}
+	}
+
+	n = euc2wcs( "]", 1, &echoStr[len] ) ;
+	len += n ;
+
+	*echoLen = len ;
+	if ( acomm->word_mode < W_HINSHI ) {
+		return len ;
+	}
+	if ( acomm->word_mode > W_HINSHI ) {
+		sprintf( tbuf, "  \311\312\273\354  ["/*=  $BIJ;l(B  [=*/ ) ;
+		es = strlen( tbuf ) ;
+		n = euc2wcs( tbuf, es, &echoStr[len] ) ;
+		len += n ;
+
+		s2e( acomm->hinsiPtr[acomm->word_hinshi-1].szHinsiStr, 
+			strlen( acomm->hinsiPtr[acomm->word_hinshi-1].szHinsiStr ),
+			tbuf, sizeof( tbuf )) ;
+
+		es = strlen( tbuf ) ;
+		n = euc2wcs( tbuf, es, &echoStr[len] ) ;
+		len += n ;
+			
+		sprintf( tbuf, "] \244\350\244\355\244\267\244\244\244\307\244\271\244\253 [y/n]"/*=] $B$h$m$7$$$G$9$+(B [y/n]=*/, tbuf ) ;
+		es = strlen( tbuf ) ;
+		n = euc2wcs( tbuf, es, &echoStr[len] ) ;
+		len += n ;
+
+		*revPos = len - 1 ;
+		*revLen = 1 ;
+	}
+	if ( acomm->word_mode == W_RESULT ) {
+		switch( acomm->wordStatus ) {
+			case 0 :
+				sprintf( tbuf, "\305\320\317\277\275\252\316\273\244\267\244\336\244\267\244\277\241\243"/*=$BEPO?=*N;$7$^$7$?!#(B=*/ ) ;
+				break ;
+			case 1 :
+				sprintf( tbuf, "\244\263\244\316\306\311\244\337\244\307\244\317\244\263\244\354\260\312\276\345\305\320\317\277\244\307\244\255\244\336\244\273\244\363\241\243"/*=$B$3$NFI$_$G$O$3$l0J>eEPO?$G$-$^$;$s!#(B=*/ ) ;
+				break ;
+			case 2 :
+				sprintf( tbuf, "\244\263\244\354\260\312\276\345\305\320\317\277\244\307\244\255\244\336\244\273\244\363\241\243"/*=$B$3$l0J>eEPO?$G$-$^$;$s!#(B=*/ ) ;
+				break ;
+			case 3 :
+				sprintf( tbuf, "\274\255\275\361\300\337\304\352\244\254\311\324\305\254\300\332\244\307\244\271\241\243"/*=$B<-=q@_Dj$,ITE,@Z$G$9!#(B=*/ ) ;
+				break ;
+			case 4 :
+				sprintf( tbuf, "\303\261\270\354\244\313\311\324\305\254\300\332\244\312\312\270\273\372\244\254\264\336\244\336\244\354\244\306\244\244\244\336\244\271\241\243"/*=$BC18l$KITE,@Z$JJ8;z$,4^$^$l$F$$$^$9!#(B=*/ ) ;
+				break ;
+			case 5 :
+				sprintf( tbuf, "\305\320\317\277\244\307\244\255\244\336\244\273\244\363\241\243"/*=$BEPO?$G$-$^$;$s!#(B=*/ ) ;
+				break ;
+			case 6 :
+				sprintf( tbuf, "\306\311\244\337\244\313\311\324\305\254\300\332\244\312\312\270\273\372\244\254\264\336\244\336\244\354\244\306\244\244\244\336\244\271\241\243"/*=$BFI$_$KITE,@Z$JJ8;z$,4^$^$l$F$$$^$9!#(B=*/ ) ;
+				break ;
+			case 7 :
+				sprintf( tbuf, "\264\373\244\313\305\320\317\277\244\265\244\354\244\306\244\244\244\336\244\271\241\243"/*=$B4{$KEPO?$5$l$F$$$^$9!#(B=*/ ) ;
+				break ;
+			default:
+				sprintf( tbuf, "\303\261\270\354\305\320\317\277\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243"/*=$BC18lEPO?$K<:GT$7$^$7$?!#(B=*/ ) ;
+				break;
+		}
+		strcat( tbuf, " " ) ;
+		es = strlen( tbuf ) ;
+		n = euc2wcs( tbuf, es, echoStr ) ;
+		len = n ;
+		*revPos = len - 1 ;
+		*revLen = 1 ;
+	}
+	*echoLen = len ;
+
+#ifdef	ATOK_DEBUG
+printf( "\303\261\270\354 EUC STR [%s]\n"/*=$BC18l(B EUC STR [%s]\n=*/, tbuf ) ;
+#endif	/* ATOK_DEBUG */
+	return len ;
+}
+
+
+#define	OFF	0
+#define	ON	1
+#define	itemSize( item )	sizeof( item ) / sizeof( item[0] )
+
+/*
+ * $BC18lEPO?(B
+ */
+menuItem	auxWordRegItem[] = {
+	  { CTR_G,   OFF, OP_CANCEL, NULL, NULL, NULL } 
+} ;
+menuAux		auxWordRegMenu[] = {
+	M_WORD, -1, 
+		wordStartFunc,
+		wordFunc,
+		NULL, 
+		wordStringFunc,
+		"\303\261\270\354\305\320\317\277\241\247"/*=$BC18lEPO?!'(B=*/, NULL,
+		auxWordRegItem, itemSize( auxWordRegItem ) 
+} ;
+
+#define	REVERSE		printf( "\033[7m" )
+#define	NORMAL		printf( "\033[m" )
+
+menuAux	*getMenuInstance( )
+{
+	return auxWordRegMenu ;
+}
+
+/* Page */
+/*
+ * [$B4X?tL>(B]
+ *		menuPrevOn( )
+ * [$BI=Bj(B]
+ *              $B%a%K%e!<9`L\$N0\F0(B
+ * [$B8F=P7A<0(B]
+ *	int	menuPrevOn( int cur, int mode, menuAux *mAux )
+ *
+ * [$B0z?t(B]
+ *              $B7?(B           : $BL>(B  $B>N(B  : I O : $B@b(B      $BL@(B
+ *		int          : cur    : i    : $B8=:_$N9`L\(B
+ *		int          : mode   : i    : $B0\F0%b!<%I(B
+ *		menuAux      : *mAux  : i  : $B8=:_$N%a%K%e!<%G!<%?(B
+ *
+ * [$BJV$jCM(B]
+ *		$B0\F08e$N9`L\HV9f(B
+ *
+ * [$B;HMQ4X?t(B]
+ *		$B$J$7(B
+ * [$B5!G=(B]
+ *		mode $B$,#0$N;~$O!"8=:_A*Br$5$l$F$$$k9`L\$h$j#1$DA0$N(B
+ *		$BA*Br2DG=$J9`L\$rC5$9!#(B
+ *		mode $B$,#1$N;~$O!"8=:_$N%a%K%e!<$G#1HV8e$m$NA*Br2DG=$J(B
+ *		$B9`L\$rC5$9!#(B
+ *		$BA*Br2DG=$J9`L\$H$O(Bitem $B$N(B mode $B$,(BON$B$N;~$G$"$k!#(B
+ */
+int menuPrevOn(cur, mode, mAux)
+int	cur;
+int	mode;
+menuAux	*mAux;
+{
+	register	menuItem	*item ;
+	int		last = -1 ;
+	int		target = -1 ;
+	int		i ;
+
+	item = &( mAux->items[mAux->nitems-1] ) ;
+	for( i = mAux->nitems - 1 ; i >= 0 ; i-- ) {
+#ifdef	ATOK_DEBUG
+		printf( "item->mode = (%s) %s\n", 
+			item->itemStr ?  item->itemStr : "NULL", 
+			item->mode == ON ? "ON" : "OFF" ) ;
+#endif	/* ATOK_DEBUG */
+		if ( item->mode == ON ) {
+			if ( last == -1 ) {
+				last = i ;
+				if ( mode ) {
+					/* printf( "LAST FOUND %d\n", last ); */
+					return last ;
+				}
+			}
+			if ( target == -1 && i < cur ) {
+				target = i ;
+			}
+		}
+		item-- ;
+	}
+	if ( target == -1 ) {
+		target = last ;
+	}
+
+	return target ;
+}
+
+/* Page */
+/*
+ * [$B4X?tL>(B]
+ *		menuNextOn( )
+ * [$BI=Bj(B]
+ *              $B%a%K%e!<9`L\$N0\F0(B
+ * [$B8F=P7A<0(B]
+ *	int	menuNextOn( int cur, int mode, menuAux *mAux )
+ *
+ * [$B0z?t(B]
+ *              $B7?(B           : $BL>(B  $B>N(B  : I O : $B@b(B      $BL@(B
+ *		int          : cur    : i    : $B8=:_$N9`L\(B
+ *		int          : mode   : i    : $B0\F0%b!<%I(B
+ *		menuAux      : *mAux : i  : $B8=:_$N%a%K%e!<%G!<%?(B
+ *
+ * [$BJV$jCM(B]
+ *		$B0\F08e$N9`L\HV9f(B
+ *
+ * [$B;HMQ4X?t(B]
+ *		$B$J$7(B
+ * [$B5!G=(B]
+ *		mode $B$,#0$N;~$O!"8=:_A*Br$5$l$F$$$k9`L\$h$j#1$D8e$m$N(B
+ *		$BA*Br2DG=$J9`L\$rC5$9!#(B
+ *		mode $B$,#1$N;~$O!"8=:_$N%a%K%e!<$G@hF,$NA*Br2DG=$J(B
+ *		$B9`L\$rC5$9!#(B
+ *		$BA*Br2DG=$J9`L\$H$O(Bitem $B$N(B mode $B$,(BON$B$N;~$G$"$k!#(B
+ */
+int menuNextOn(cur, mode, mAux)
+int	cur;
+int	mode;
+menuAux	*mAux;
+{
+	register menuItem	*item ;
+	int	first = -1 ;
+	int	target = -1 ;
+	int	i ;
+
+	item = mAux->items ;
+	for( i = 0 ; i < mAux->nitems ; i++ ) {
+		if ( item->mode == ON ) {
+			if ( first == -1 ) {
+				first = i ;
+				if ( mode ) {
+					return first ;
+				}
+			}
+			if ( target == -1 && i > cur ) {
+				target = i ;
+			}
+		}
+		item++ ;
+	}
+	if ( target == -1 ) {
+		target = first ;
+	}
+
+	return target ;
+}
+
+/* Page */
+/*
+ * [$B4X?tL>(B]
+ *		menuKey( )
+ * [$BI=Bj(B]
+ *              $B%a%K%e!<FbM-8z%-!<$N%A%'%C%/(B
+ * [$B8F=P7A<0(B]
+ *		int	menuKey( menuAux *mAux, WORD key, int *cur )
+ *
+ * [$B0z?t(B]
+ *              $B7?(B           : $BL>(B  $B>N(B  : I O : $B@b(B      $BL@(B
+ *		menuAux      : *mAux : i  : $B8=:_$N%a%K%e!<%G!<%?(B
+ *		WORD         : key      : i  : $BF~NO$5$l$?%-!<(B
+ *		int          : *cur    :   o    : $BA*Br$5$l$?9`L\(B
+ *
+ * [$BJV$jCM(B]
+ *		0 : $B9`L\$OA*Br$5$l$F$$$J$$!#(B 
+ *		$B$=$NB>(B: $BA*Br$5$l$?9`L\$N%"%I%l%9(B
+ *
+ * [$B;HMQ4X?t(B]
+ *		$B$J$7(B
+ * [$B5!G=(B]
+ *		$B;XDj$5$l$?%-!<$,!"(B $B8=:_I=<($7$F$$$k%a%K%e!<$h$j!"(B
+ *		$B9`L\$rA*Br$9$k$?$a$NM-8z%-!<$+%A%'%C%/$7!"(B
+ *		$BM-8z%-!<N)$C$?>l9g$K$O!"9`L\$,A*Br$5$l$?J*$H$7!"(B
+ *		$B$=$N9`L\HV9f$r@_Dj$7!"9`L\$N%"%I%l%9$rJV$9!#(B
+ */
+menuItem *menuKey(mAux, key, cur)
+menuAux	*mAux;
+WORD	key;
+int	*cur;
+{
+	register menuItem	*item ;
+	register int		i ;
+
+	*cur = 0 ;
+	item = mAux->items ;
+	for ( i = 0 ; i < mAux->nitems ; i++ ) {
+		/*
+		printf( "Check Keys for '%s'\n",
+			item->itemStr ?  item->itemStr : "NULL" ) ;
+		*/
+		if ( item->key == key ) {
+		/* printf( "found\n" ) ; */
+			*cur = i ;
+			return item ;
+		}
+		item++ ;
+	}
+	/* printf( "not found\n" ) ; */
+	return ( menuItem * )NULL ;
+}
+
+/* Page */
+/*
+ * [$B4X?tL>(B]
+ *		MenuCtrl( )
+ * [$BI=Bj(B]
+ *              $B%a%K%e!<I=<(;~$N%$%Y%s%H%3%s%H%m!<%k(B
+ * [$B8F=P7A<0(B]
+ *		int	MenuCtrl( _XatokRecPtr acomm, menuAux **curMenu,
+ *			WORD *aajcode, int op, int *length )
+ * [$B0z?t(B]
+ *              $B7?(B           : $BL>(B  $B>N(B  : I O : $B@b(B      $BL@(B
+ *		_XatokRecPtr : acomm   : i/o : kinput2$BMQJQ49%P%C%U%!(B
+ *		menuAux      : **curMenu : i/o : $B8=:_$N%a%K%e!<%G!<%?(B
+ *		WORD         : *aajcode : i/o : $BF~NO$5$l$?(BAAJCODE
+ *		int          : op       : i   : $B3+;O%U%!%s%/%7%g%s$N8F$S=P$7(B
+ *		int          : *length  : o   : $BF~NOJ8;zNs$ND9$5(B
+ *
+ * [$BJV$jCM(B]
+ *		0 : $B%a%K%e!<$NJQ99L5$7(B
+ *		1 : $B%a%K%e!<=hM}%-%c%s%;%k(B
+ *		2 : $B%a%K%e!<A*Br9`L\$N=hM}7hDj(B
+ *
+ * [$B;HMQ4X?t(B]
+ *		menuAux->startProc( )
+ *		menuAux->defaultProc( )
+ *		menuAux->endProc( )
+ *		menuNextOn( )
+ *		menuPrevOn( )
+ * [$B5!G=(B]
+ *		AUX$B%&%#%s%I%&$K%a%K%e!<$,I=<($5$l$F$$$k;~$N(B
+ *		$B%$%Y%s%H4IM}$r9T$J$&!#(B
+ *		$B%$%Y%s%H$K$h$j!"I=<($7$F$$$k%a%K%e!<%G!<%?$N(B
+ *		$B@ZBX$($d!"(BAUX$B%&%#%s%I%&$N=*N;$r9T$J$&!#(B
+ */
+int MenuCtrl(acomm, curMenu, aajcode, op, length)
+_XatokRecPtr    acomm;
+menuAux		**curMenu;
+WORD		*aajcode;
+int		op;
+int		*length;
+{
+
+	menuItem	*target ;
+	menuItem	sel ;
+	int		newNbr ;
+	int		changes =-1 ;
+	int		cur ;
+
+	*length = 0 ;
+	if ( op ) {	/* Start Proc */
+		if (( *curMenu  )->startProc ) {
+			( *curMenu )->startProc( acomm ) ;
+		}
+		return ;
+	}
+
+	target = menuKey( *curMenu, *aajcode, &newNbr ) ;
+	/*
+	 * $B>e0L$G(BDEFAULT PROC$B$r<B9T$9$k!#(B
+	 */
+	if ( !target ) {
+#ifdef	ATOK_DEBUG
+		printf( "AUX DEFAULT FUNC\n" ) ;
+#endif	/* ATOK_DEBUG */
+
+		if (( *curMenu )->defaultProc ) {
+			sel.op = 0 ;
+			*length = ( *curMenu )->defaultProc( acomm, *curMenu, aajcode, &sel.op ) ;
+			if ( sel.op ) {
+				target = &sel ;
+				goto menu_op ;
+			}
+#ifdef	ATOK_DEBUG
+		printf( "\274\302\271\324\n"/*=$B<B9T(B\n=*/ ) ;
+#endif	/* ATOK_DEBUG */
+		}
+		else {
+#ifdef	ATOK_DEBUG
+			printf( "\244\312\244\267\n"/*=$B$J$7(B\n=*/ ) ;
+#endif	/* ATOK_DEBUG */
+		}
+		return -1 ;
+	}
+	/*
+	 *  $BI=<($7$F$$$k%a%K%e!<$h$j!"A*Br$7$F$$$k$b$N$,JQ$o$C$?!#(B
+	 */
+menu_op :
+	switch( target->op ) {
+		case OP_NEXT :
+			( *curMenu )->cur = menuNextOn(( *curMenu )->cur, 0, *curMenu ) ;
+			changes = 0 ;
+			break ;
+		case OP_FIRST :
+			( *curMenu )->cur = menuNextOn(( *curMenu )->cur, 1, *curMenu ) ;
+			changes = 0 ;
+			break ;
+		case OP_PREV :
+			( *curMenu )->cur = menuPrevOn(( *curMenu )->cur, 0, *curMenu ) ;
+			changes = 0 ;
+			break ;
+		case OP_LAST :
+			( *curMenu )->cur = menuPrevOn(( *curMenu )->cur, 1, *curMenu ) ;
+			changes = 0 ;
+			break ;
+		case OP_SPEC :
+			/*
+			 * $B;XDj$7$?HV9f(B
+			 */
+			( *curMenu )->cur = newNbr ;
+			changes = 0 ;
+			break ;
+		case OP_CANCEL :
+			/*
+			 * $B%-%c%s%;%k$,2!$5$l$?$N$G>e0L%a%K%e!<$X(B
+			 */
+			if (( *curMenu )->endProc ) {
+				( *curMenu )->endProc( acomm ) ;
+			}
+			*curMenu = ( *curMenu )->parent ;
+			if ( *curMenu ) {
+				if (( *curMenu )->startProc ) {
+					( *curMenu )->startProc( acomm ) ;
+				}
+			}
+			changes = 1 ;
+			break ;
+		case OP_SELECT :
+			/*
+			 * $B7hDj%-!<$,2!$5$l$?$N$G=hM}<B9T(B
+			 * $B2<0L%a%K%e!<$,$"$l$P!"%a%K%e!<JQ99(B
+			 */
+			cur = ( *curMenu )->cur ;
+			if (( *curMenu )->items[cur].child ) {
+				( *curMenu )->items[cur].child->parent = ( *curMenu ) ;
+				*curMenu = ( *curMenu )->items[cur].child ;
+				if (( *curMenu )->startProc ) {
+					( *curMenu )->startProc( acomm, *aajcode ) ;
+				}
+			}
+			changes = 2 ;
+			break ;
+		default :
+			changes = 0 ;
+			break ;
+	}
+
+	return changes ;
+}
+
+
+/* Page */
+/*
+ * [$B4X?tL>(B]
+ *		auxMenuCopy( )
+ * [$BI=Bj(B]
+ *              $B%a%K%e!<%G!<%?$N%3%T!<(B
+ * [$B8F=P7A<0(B]
+ *		menuAux *auxMenuCopy( menuAux *orgAux )
+ *
+ * [$B0z?t(B]
+ *              $B7?(B           : $BL>(B  $B>N(B  : I O : $B@b(B      $BL@(B
+ *		menuAux      : *orgAux : i   : $B%3%T!<85%a%K%e!<%G!<%?(B
+ *
+ * [$BJV$jCM(B]
+ *		$B%3%T!<$7$?%a%K%e!<%G!<%?(B
+ *
+ * [$B;HMQ4X?t(B]
+ *		auxMenuCopy( )
+ * [$B5!G=(B]
+ *		$B;XDj$5$l$?%a%K%e!<%G!<%?$r?75,%P%C%U%!$K%3%T!<$7$F(B
+ *		$B$=$N%"%I%l%9$rJV$9!#(B
+ */
+menuAux	*auxMenuCopy(orgAux)
+menuAux	*orgAux;
+{
+	menuItem	*item ;
+	int		nitem ;
+	int		i ;
+	menuAux		*newAux ;
+
+	newAux = ( menuAux * )malloc( sizeof( menuAux )) ;
+	if ( !newAux )	return 0 ;
+
+	memcpy(( char * )newAux, ( char * )orgAux, sizeof( menuAux )) ;
+
+	item = ( menuItem * )malloc( sizeof( menuItem ) * orgAux->nitems ) ;
+	newAux->items = item ;
+	for( i = 0 ; i < orgAux->nitems ; i++ ) {
+		memcpy(( char * )item, ( char * )&orgAux->items[i], 
+			sizeof( menuItem )) ;
+		if ( item->child ) {
+			item->child = auxMenuCopy( item->child ) ;
+		}
+		item++ ;
+	}
+	return newAux ;
+}
+
+/* Page */
+/*
+ * [$B4X?tL>(B]
+ *		auxMenuString( )
+ * [$BI=Bj(B]
+ *              $B%a%K%e!<I=<(MQJ8;zNs$N:n@.(B
+ * [$B8F=P7A<0(B]
+ *	int	auxMenuString( _XatokRecPtr  acomm, menuAux *mAux,
+ *			wchar *echoStr, int *echoLen, int *revLen,
+ *			int *revPos )
+ *
+ * [$B0z?t(B]
+ *              $B7?(B           : $BL>(B  $B>N(B  : I O : $B@b(B      $BL@(B
+ *		_XatokRecPtr : acomm   : i/o : kinput2$BMQJQ49%P%C%U%!(B
+ *		menuAux      : *mAux : i  : $B8=:_$N(B MENU CLASS
+ *		wchar        : *echoStr:   o : $BI=<(J8;zNs3JG<NN0h(B
+ *		int          : *echoLen :  o : $BI=<(J8;zNs$ND9$5(B
+ *
+ * [$BJV$jCM(B]
+ *		$BI=<(J8;zNs$ND9$5(B
+ *
+ * [$B;HMQ4X?t(B]
+ *		menuAux->stringProc( )
+ *		euc2wcs( )
+ * [$B5!G=(B]
+ *		$B%a%K%e!<$KI=<($9$k$?$a$NJ8;zNs$r:n@.$9$k!#(B
+ *		$B8=:_I=<($7$F$$$k%a%K%e!<$KJ8;zNs$r:n@.$9$k$?$a$N(B
+ *		$B4X?t(B(menuAux->stirngProc)$B$,;XDj$5$l$F$$$k>l9g$K$O!"(B
+ *		$B$=$N4X?t$r8F$S=P$7$F!"J8;zNs$r:n@.$9$k!#(B
+ */
+int auxMenuString(acomm, mAux, echoStr, echoLen, revLen, revPos)
+_XatokRecPtr    acomm;
+menuAux		*mAux;
+wchar		*echoStr;
+int		*echoLen;
+int		*revLen;
+int		*revPos;
+{
+	register menuItem	*item ;
+	char	tbuf[BUFSIZ*2] ;
+	int	len ;
+	int	i, es ;
+	char	*ep ;
+	int		status ;
+
+	item = mAux->items ;
+
+	*revPos = 0 ;
+	*revLen = 0 ;
+	len = 0 ;
+	bzero( tbuf, sizeof( tbuf )) ;
+
+#ifdef	ATOK_DEBUG
+printf( "AUX ADDR (STR) 0x%x\n", mAux ) ;
+#endif	/* ATOK_DEBUG */
+	if ( mAux->stringProc ) {
+#ifdef	ATOK_DEBUG
+	printf( "STRING PROC\n" ) ;
+#endif	/* ATOK_DEBUG */
+		len = ( mAux->stringProc )( acomm, mAux,
+			echoStr, echoLen, revLen, revPos ) ;
+		return len ;
+	}
+	ep = tbuf ;
+	if ( mAux->str ) {
+		strcpy( ep, mAux->str ) ;
+		ep += strlen( ep ) ;
+	}
+
+#ifdef	ATOK_DEBUG
+	printf( "auxMenuString START(%d)\n", mAux->nitems ) ;
+#endif	/* ATOK_DEBUG */
+
+	for( i = 0 ; i < mAux->nitems ; i++ ) {
+
+#ifdef	ATOK_DEBUG
+	printf( "ITEMS %s\n", item->itemStr ? item->itemStr : "NULL" ) ;
+#endif	/* ATOK_DEBUG */
+		if ( item->mode == ON ) {
+			if ( mAux->cur == i ) {
+				es = strlen( tbuf ) ;
+				*revPos = euc2wcs( tbuf, es, echoStr )  ;
+#ifdef	ATOK_DEBUG
+			printf( "SET ECHO POS %d\n", *revPos ) ;
+#endif	/* ATOK_DEBUG */
+
+				len += *revPos ;
+				es = strlen( item->numStr ) ;
+
+				*revLen = euc2wcs( item->numStr, es, 
+						&echoStr[*revPos] ) ;
+				len += *revLen ;
+#ifdef	ATOK_DEBUG
+			printf( "SET ECHO LEN %d\n", *revLen ) ;
+#endif	/* ATOK_DEBUG */
+				ep = tbuf ;
+				sprintf( ep, " %s", item->itemStr ) ;
+				ep += strlen( ep ) ;
+
+				REVERSE ;
+				printf( "%s", item->numStr ) ;
+				NORMAL ;
+				printf( " %s", item->itemStr ) ;
+			}
+			else {
+				sprintf( ep, "%s %s", item->numStr, item->itemStr ) ;
+				ep += strlen( ep ) ;
+
+#ifdef	ATOK_DEBUG
+				printf( "%s", item->numStr ) ;
+				printf( " %s", item->itemStr ) ;
+#endif	/* ATOK_DEBUG */
+			}
+			sprintf( ep, "    " ) ;
+			ep += strlen( ep ) ;
+		}
+		item++ ;
+	}
+
+	if (( es = strlen( tbuf ))) {
+		es = euc2wcs( tbuf, es, &echoStr[*revPos + *revLen] ) ;
+#ifdef	ATOK_DEBUG
+		printf( "STR [%s] set +len = %d\n", tbuf, es ) ;
+#endif	/* ATOK_DEBUG */
+		len += es ;
+	}
+	*echoLen = len ;
+#ifdef	ATOK_DEBUG
+	printf( "len = %d, echoLen = %d\n", len, *echoLen ) ;
+#endif	/* ATOK_DEBUG */
+	return len ;
+}
+
+/*
+ * $B$3$3$+$i2<$O(BDEBUG$BMQ(B
+ */
+
+menuPrint(mAux)
+menuAux	*mAux;
+{
+	int	i ;
+	register menuItem	*item ;
+
+	item = mAux->items ;
+	if ( mAux->str ) {
+		printf( "%s", mAux->str ) ;
+	}
+	for( i = 0 ; i < mAux->nitems ; i++ ) {
+		if ( item->mode == ON ) {
+			if ( mAux->cur == i ) {
+				REVERSE ;
+				printf( "%s", item->numStr ) ;
+				NORMAL ;
+				printf( " %s", item->itemStr ) ;
+			}
+			else {
+				printf( "%s", item->numStr ) ;
+				printf( " %s", item->itemStr ) ;
+			}
+			printf( "    " ) ;
+		}
+		item++ ;
+	}
+	printf( "\n" ) ;
+}
+
+#ifdef	STAND
+void
+main (argc, argv)
+int argc;
+char **argv;
+{
+	
+	char	buf[BUFSIZ] ;
+	menuAux *topMenu ;
+	menuAux *cur ;
+
+	int	status ;
+	int	key ;
+
+	topMenu = auxTopMenu ;
+	cur = topMenu ;
+
+	while( 1 ) {
+		menuPrint( cur ) ;
+		printf( "enter command => " ) ;
+		gets( buf ) ;
+		key = buf[0] ;
+		status = MenuCtrl( &cur, key ) ;
+		if ( status == 1 ) {
+			if ( !cur ) {
+				printf( "Program terminated\n" ) ;
+				exit( 0 ) ;
+			}
+		}
+		else if ( status == 2 ) {
+			printf( "go to Chiled\n" ) ;
+		}
+		else if ( status != 0 ) {
+			switch( cur->mode ) {
+				case M_AUX :
+					printf( "TOP MENU FUNC\n" ) ;
+					break ;
+				case 	M_CODE	:
+					printf( "CODE MENU FUNC\n" ) ;
+					break ;
+				case 	M_CODESJ	:
+					printf( "SJ FUNC\n" ) ;
+					break ;
+				case 	M_CODEEUC	:
+					printf( "EUC FUNC\n" ) ;
+					break ;
+				case 	M_CODEJIS	:
+					printf( "JIS FUNC\n" ) ;
+					break ;
+				case 	M_CODEKUTEN	:
+					printf( "KUTEN FUNC\n" ) ;
+					break ;
+				case 	M_KIGOU		:
+					printf( "KIGOU FUNC\n" ) ;
+					break ;
+				default: 
+					printf( "UNKNOWN\n" ) ;
+					break ;
+			}
+		}
+	}
+}
+
+#endif	STAND