?? myt9input.c
字號:
if(keycb.valid_input_sum==0)
{
GraphicClearAll();
DispInputWindow(WIN_INPUT_PY);
DispName(1);
keycb.input_level--;
return;
}
p=keycb.PYBuf_Pool[keycb.valid_input_sum-1].PYBuf[0];
ChnTblReset();
for (i=0,j=0;i<8;i++)
{
if ((*(p+8*i))>0)
{
keycb.chn_tbl[j].pmb=FindMatchStr(p+8*i+1);
keycb.chn_tbl[j].chn_sum=(unsigned char)strlen(keycb.chn_tbl[j].pmb)/((unsigned int)2);
j++;
}
}
DispChnTbl(1,0);//type:1正常顯示漢字表//direction:0無方向
}
//phonebook
void subfunc1_1(void)//reentrant
{;//find number
}
void subfunc1_2(void)//reentrant//T9 input add number
{
unsigned char key;
unsigned char i,j;
unsigned char *p;
WatchDogReset();
switch(keycb.input_level)
{
case 0:
if(keycb.keyon_flag&KEY_CONFIRM_ON)
{
//切換到輸入電話號碼一屏
keycb.keyon_flag&=~KEY_CONFIRM_ON;
GraphicClearAll();
TextClearAll();
DispInputWindow(WIN_INPUT_NUM);
keycb.input_level=3;
}
else if(keycb.keyon_flag&KEY_CANCEL_ON)
{
keycb.keyon_flag&=~KEY_CANCEL_ON;
//如果輸入域不為空,每按一次取消,刪除一個漢字
if(keycb.input_chn_sum>0)
{
keycb.input_chn_sum--;
DispName(1);
if(keycb.input_chn_sum==0)
DispButton1();
}
//全部刪完,回到上一級菜單
else
{
DispInitInfo();
keycb.menu_level--;
}
}
else if(keycb.keyon_flag&0x03FF)
{
if(keycb.input_chn_sum<7)
{
GraphicClearAll();
DrawInputFrame();
DispName(0);
DispButton2();
for(i=0;i<8;i++)
{
if((keycb.keyon_flag>>(i+2))==0x01)
{
key=i;
break;
}
}
keycb.keyon_flag&=~0x03FF;
T9Reset();
GetPYHeader(key);
PYInputProcess();
keycb.input_level++;
}
}
break;
case 1:
if(keycb.keyon_flag&KEY_CANCEL_ON)
{
keycb.keyon_flag&=~KEY_CANCEL_ON;
//如果拼音域不為空,每按一次取消,刪掉一個拼音
//全部刪完,返回到文本輸入域。
if(keycb.valid_input_sum>0)
{
keycb.PYBuf_Pool[keycb.valid_input_sum-1].match=0;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
keycb.PYBuf_Pool[keycb.valid_input_sum-1].PYBuf[i][j]=0;
}
keycb.valid_input_sum--;
PYInputProcess();
}
else
{
keycb.menu_level--;
return;
}
}
else if(keycb.keyon_flag&KEY_CONFIRM_ON)
{
keycb.keyon_flag&=~KEY_CONFIRM_ON;
DispPy(1,0);//正常顯示拼音,無方向
DispChnTbl(0,0);//反顯漢字表中第一個漢字
keycb.input_level++;
}
else if(keycb.keyon_flag&KEY_DOWN_ON)
{
keycb.keyon_flag&=~KEY_DOWN_ON;
if(keycb.scr_py_loc==keycb.PYBuf_Pool[keycb.valid_input_sum-1].match-1)
keycb.scr_py_loc=0;
else
keycb.scr_py_loc++;
PYInputProcess();
}
else if(keycb.keyon_flag&KEY_UP_ON)
{
keycb.keyon_flag&=~KEY_UP_ON;
if(keycb.scr_py_loc==0)
keycb.scr_py_loc=keycb.PYBuf_Pool[keycb.valid_input_sum-1].match-1;
else
keycb.scr_py_loc--;
PYInputProcess();
}
else if(keycb.keyon_flag&0x03FF)
{
if(keycb.input_chn_sum<7)
{
for(i=0;i<8;i++)
{
if(keycb.keyon_flag>>(i+2)==0x01)
{
key=i;
break;
}
}
keycb.keyon_flag&=~0x03FF;
GetPYRhyme(key);
PYInputProcess();
}
}
else
{
keycb.keyon_flag=KEY_NONE_ON;
}
break;
case 2:
if(keycb.keyon_flag&KEY_CANCEL_ON)
{
keycb.keyon_flag&=~KEY_CANCEL_ON;
DispPy(0,0);//反顯第一個拼音,無方向
DispChnTbl(1,0);//正常顯示漢字表,無方向
keycb.input_level--;
}
else if(keycb.keyon_flag&KEY_CONFIRM_ON)
{
keycb.keyon_flag&=~KEY_CONFIRM_ON;
//往文本域輸入這個漢字
if(keycb.input_chn_sum<7)
{
p=keycb.chn_tbl[keycb.scr_py_loc].pmb+2*keycb.tbl_chn_loc;
keycb.name[2*keycb.input_chn_sum]=*p;
keycb.name[2*keycb.input_chn_sum+1]=*(p+1);
keycb.input_chn_sum++;
GraphicClearAll();
TextClearAll();
DispInputWindow(WIN_INPUT_PY);
DispName(1);
keycb.input_level=0;
}
}
else if(keycb.keyon_flag&KEY_DOWN_ON)
{
keycb.keyon_flag&=~KEY_DOWN_ON;
//計算在漢字表中的位置
if(keycb.tbl_chn_loc==keycb.tbl_chn_sum-1)
keycb.tbl_chn_loc=0;
else
keycb.tbl_chn_loc++;
//計算在屏上的位置
if(((keycb.tbl_chn_sum%8)!=0)//最后一行,各數不夠8
&&(keycb.tbl_chn_sum-keycb.tbl_chn_loc)<=(keycb.tbl_chn_sum%8))
{
if(keycb.scr_chn_loc==((keycb.tbl_chn_sum%8)-1))
keycb.scr_chn_loc=0;
else
keycb.scr_chn_loc++;
}
else
{
if(keycb.scr_chn_loc==7)
keycb.scr_chn_loc=0;
else
keycb.scr_chn_loc++;
}
//顯示
DispChnTbl(0,1);//反顯漢字,方向down
}
else if(keycb.keyon_flag&KEY_UP_ON)
{
keycb.keyon_flag&=~KEY_UP_ON;
//計算在漢字表中的位置
if(keycb.tbl_chn_loc==0)
keycb.tbl_chn_loc=keycb.tbl_chn_sum-1;
else
keycb.tbl_chn_loc--;
//計算在屏上的位置
if(((keycb.tbl_chn_sum%8)!=0)//最后一行,各數不夠8
&&(keycb.tbl_chn_sum-keycb.tbl_chn_loc)<=(keycb.tbl_chn_sum%8))
{
if(keycb.scr_chn_loc==0)
{
if(keycb.tbl_chn_sum<8)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -