📄 mmichineseinput.c
字号:
dspl_TextOut_Blk(4,FIRST_LINE, 115, DSPL_TXTATTR_UNICODE,(char*)data->wszTextBuffer);
TextCursorDisplayContorl(&data->Ime, data->CursorPosition, 0);
}
}
else
{
/* 2003/12/01 sunsj modify lcd width */
dspl_TextOut_Blk(4, FIRST_LINE, 115, DSPL_TXTATTR_UNICODE, (char *)Temp_ptr);
}
drawcolorclarity(102, 1 ,spareNum, 0xffffff);
/* 2003/10/13 sunsj modify pinyin input method text display */
/*else if ( data->Ime.TextBufferCount <= CANDIDATES_PER_GROUP*2 ) //when data->Ime.TextBufferCount > CANDIDATES_PER_GROUP
{
Temp_ptr = data->wszTextBuffer;
Temp_ptr = Temp_ptr + CANDIDATES_PER_GROUP;
dspl_TextOut(4, FIRST_LINE, DSPL_TXTATTR_UNICODE, (char *)data->wszTextBuffer);
dspl_TextOut(4, SECOND_LINE, DSPL_TXTATTR_UNICODE, (char *)Temp_ptr);
}*/
/*{
if ( data->Ime.TextBufferCount == data->Ime.TextCursor )
{
Temp_ptr = data->wszTextBuffer;
Temp_ptr = Temp_ptr + data->Ime.TextBufferCount - CANDIDATES_PER_GROUP;
dspl_TextOut(1,FIRST_LINE,DSPL_TXTATTR_UNICODE,(char *)Temp_ptr);
}
else if ( data->Ime.TextCursor < CANDIDATES_PER_GROUP )
{
dspl_TextOut(1,FIRST_LINE,DSPL_TXTATTR_UNICODE,(char*)data->wszTextBuffer);
TextCursorDisplayContorl(&data->Ime, data->CursorPosition, 0);
}
else
{
Temp_ptr = &data->wszTextBuffer[data->Ime.TextCursor] - CANDIDATES_PER_GROUP + 1;
dspl_TextOut(1,FIRST_LINE,DSPL_TXTATTR_UNICODE,(char *)Temp_ptr);
dspl_TextOut(73,0,DSPL_TXTATTR_UNICODE|DSPL_TXTATTR_INVERS,(char*)data->CursorPosition);
}
}*/
if ( data->Ime.EditorMode == STROKE_INPUT_MODE )
{
/* 2003/10/26 sunsj modify for stroke mode display */
//dspl_TextOut(0,0,DSPL_TXTATTR_UNICODE,(char*)StrokePrompt); /* Display input prompt */
dspl_colorTextOut(0,0,DSPL_TXTATTR_UNICODE|DSPL_TXTATTR_TRANSPARENT,(char*)StrokePrompt,0xffffff); /* Display input prompt */ //sunsjtest
/* Display input sequence for stroke */
}
else if ( data->Ime.EditorMode == PINYIN_INPUT_MODE )
{
/* 2003/10/13 sunsj */
dspl_colorTextOut(0,0,DSPL_TXTATTR_UNICODE|DSPL_TXTATTR_TRANSPARENT,(char*)PinYinPrompt,0xffffff); /* Display input prompt */ //sunsjtest
//dspl_TextOut(0,0,DSPL_TXTATTR_UNICODE,(char*)PinYinPrompt); /* Display input prompt */
/* Display input sequence for Pin-yin input */
}
/* 2003/10/13 sunsj modify display attr */
/* Display candidate charaters returned from eZiText */
dspl_TextOut(3,SIXTH_LINE,DSPL_TXTATTR_UNICODE,(char*)data->wcCandidates);
/* Highlight the candidate character pointed by Ime.CandidateCursor */
CandidateHighlightDisplayContorl(&data->Ime, data->HighlightedCandidate);
/* draw rectangle */
dspl_DrawRect(0, 97, 119, 130);
/* 2003/11/27 sunsj */
displaySoftKeys(TxtSoftOK,TxtDelete); /* Softkey display*/
#if(MAIN_LCD_SIZE==3)
draw_softkeybar_fourdirection_arrow();//jhxu720 add
#endif
//displaySoftKeys(TxtSoftSelect,TxtSoftOK); /* Softkey display*/
}
break;
default:
break;
}
dspl_SetBkgColor(oldColor);
}
break;
default:
return 0;
}
return 1;
}
/*******************************************************************************
$Function: chinese_input_kbd_cb
$Description: Keyboard event handler
$Returns: status int
$Arguments: window handle event, keyboard control block
$History: 2003/11/10 sunsj Return to idle when close screen
*******************************************************************************/
static int chinese_input_kbd_cb (T_MFW_EVENT event, T_MFW_KBD *keyboard)
{
T_MFW_HND win = mfw_parent (mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_chinese_input * data = (T_chinese_input *)win_data->user;
T_MFW_HND parent_win = data->parent_win;
USHORT Identifier = data->Identifier;
int temp = 0;
PZI8WCHAR temp_ZiKeyMap;
T_MFW_WIN *parentwin_data =((T_MFW_HDR *)parent_win)->data;
T_EDITOR_INFO *parentdata =(T_EDITOR_INFO *)parentwin_data->user;
//void (* Callback)() = data->Callback;
//TRACE_EVENT("chinese_input_kbd_cb");
switch ( keyboard->code )
{
case KCD_LEFT:
switch ( data->Ime.EditorMode )
{
case STROKE_INPUT_MODE:
switch ( data->Ime.InputScreenType )
{
case TEXT_DISPLAY_SCREEN:
//access to the option list.
//data->options_win = SmsSend_OPT_start(win,&SmsSend_R_OPTAttrib);
SEND_EVENT(win, CHINESE_INPUT_DESTROY, INFO_KCD_LEFT, NULL);
break;
case STROKE_INPUT_SCREEN:
case WORD_ASSOCIATION_SCREEN:
IMESelectCandidate(&data->Ime, data->wszElementBuffer);
data->HighlightedCandidate[0] = data->wcCandidates[data->Ime.CandidateCursor];
break;
default:
break;
}
winShow(win);
break;
case PINYIN_INPUT_MODE:
switch ( data->Ime.InputScreenType )
{
case TEXT_DISPLAY_SCREEN:
//chinese_input_destroy(win);
SEND_EVENT(win, CHINESE_INPUT_DESTROY, INFO_KCD_LEFT, NULL);
//access to the option list.
break;
case PINYIN_INPUT_SCREEN:
case WORD_ASSOCIATION_SCREEN:
/* 2003/11/27 sunsj */
if ( (data->Ime.TextBufferCount * 2) < (TEXT_BUFFER_EDIT_SIZE/2)*2 )
{
IMESelectCandidate(&data->Ime, data->wszElementBuffer);
data->HighlightedCandidate[0] = data->wcCandidates[data->Ime.CandidateCursor];
}
else
{
chinese_input_destroy(win);
}
break;
default:
break;
}
winShow(win);
default:
break;
}
break;
case KCD_RIGHT:
switch ( data->Ime.EditorMode )
{
case STROKE_INPUT_MODE:
switch ( data->Ime.InputScreenType )
{
case TEXT_DISPLAY_SCREEN:
if ( data->Ime.TextBufferCount == 0 )
{ /* When there is no stored data, return back to the menu*/
chinese_input_destroy(win);
}
else
{
IMEClear(&data->Ime, data->wszElementBuffer);
}
break;
case STROKE_INPUT_SCREEN:
IMEClear(&data->Ime, data->wszElementBuffer);
data->HighlightedCandidate[0] = data->wcCandidates[data->Ime.CandidateCursor];
/* 2003/12/01 remove chinese_input_destroy will display screen */
//winShow(win);
/* 2003/10/26 sunsj add for stroke mode */
if ( data->Ime.pGetParam->ElementCount == 0 )
{
chinese_input_destroy(win);
}
break;
case WORD_ASSOCIATION_SCREEN:
data->Ime.InputScreenType = TEXT_DISPLAY_SCREEN;
/* 2003/12/01 remove chinese_input_destroy will display screen */
//winShow(win);
chinese_input_destroy(win);
// memset(&data->HighlightedCandidate, 0, sizeof(data->HighlightedCandidate));
break;
default:
/* 2003/10/26 sunsj add for stroke mode */
winShow(win);
break;
}
/* 2003/10/26 sunsj remove for new stroke mode */
//winShow(win);
break;
case PINYIN_INPUT_MODE:
switch ( data->Ime.InputScreenType )
{
case TEXT_DISPLAY_SCREEN:
if ( data->Ime.TextBufferCount == 0 )
{ /* When there is no stored data, return back to the menu*/
chinese_input_destroy(win);
//SEND_EVENT(win, CHINESE_INPUT_DESTROY, INFO_KCD_RIGHT, NULL);
}
else
{
IMEClear(&data->Ime, data->wszElementBuffer);
data->HighlightedCandidate[0] = data->wcCandidates[data->Ime.CandidateCursor];
}
break;
case PINYIN_INPUT_SCREEN:
/* 2003/10/13 sunsj modify clear function */
//IMEClear(&data->Ime, data->wszElementBuffer);
Zi_onekey_clear(&data->Ime);
data->HighlightedCandidate[0] = data->wcCandidates[data->Ime.CandidateCursor];
/* 2003/12/01 remove chinese_input_destroy will display screen */
//winShow(win);
if ( data->Ime.ElementNumber == 0 )
{
chinese_input_destroy(win);
}
break;
case WORD_ASSOCIATION_SCREEN:
// edtSymbol(parentdata->edt_edt,0);
data->Ime.InputScreenType = TEXT_DISPLAY_SCREEN;
//winShow(win);
chinese_input_destroy(win);
// memset(&data->HighlightedCandidate, 0, sizeof(data->HighlightedCandidate));
break;
default:
winShow(win);
break;
}
//chinese_input_destroy(win);
//winShow(win);
break;
default:
break;
}
break;
case KCD_HUP:
/* 2003/10/13 sunsj/ modify the hup_key's operation */
//SEND_EVENT(win, CHINESE_INPUT_DESTROY, INFO_KCD_HUP, NULL);
chinese_input_destroy(win);
/*
switch(data->EditorMode)
{
case STROKE_INPUT_MODE:
switch (data->Ime.InputScreenType)
{
case TEXT_DISPLAY_SCREEN:
case STROKE_INPUT_SCREEN:
case WORD_ASSOCIATION_SCREEN:
chinese_input_destroy(win);
break;
default:
break;
}
break;
case PINYIN_INPUT_MODE:
switch (data->Ime.InputScreenType)
{
case TEXT_DISPLAY_SCREEN:
case PINYIN_INPUT_SCREEN:
case WORD_ASSOCIATION_SCREEN:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -