📄 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 + -