--- libchewing-0.3.0/src/chewingio.c.orig 2007-04-20 17:05:06.000000000 +1000 +++ libchewing-0.3.0/src/chewingio.c 2007-04-20 17:01:46.000000000 +1000 @@ -567,7 +567,9 @@ { ChewingData *pgdata = ctx->data; ChewingOutput *pgo = ctx->output; - int keystrokeRtn = KEYSTROKE_ABSORB; + int toSelect = 0; + int keystrokeRtn = KEYSTROKE_ABSORB; + int key_buf_cursor; CheckAndResetRange( pgdata ); @@ -575,8 +577,14 @@ keystrokeRtn = KEYSTROKE_IGNORE; } - if ( pgdata->bSelect ) - ChoicePrevAvail( pgdata ); + key_buf_cursor = pgdata->chiSymbolCursor; + if ( pgdata->chiSymbolCursor == pgdata->chiSymbolBufLen ) + key_buf_cursor--; + + if ( ! pgdata->symbolKeyBuf[ key_buf_cursor ] ) { + /* Close Symbol Choice List */ + chewing_handle_Esc(ctx); + } MakeOutputWithRtn( pgo, pgdata, keystrokeRtn ); return 0;