⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t9input.c

📁 单片机T9输入法
💻 C
📖 第 1 页 / 共 4 页
字号:
	                                    {"he",PY_mb_she},
	                                    {"hen",PY_mb_shen},
	                                    {"heng",PY_mb_sheng},
	                                    {"hi",PY_mb_shi},
	                                    {"hou",PY_mb_shou},
	                                    {"hu",PY_mb_shu},
	                                    {"hua",PY_mb_shua},
	                                    {"huai",PY_mb_shuai},
	                                    {"huan",PY_mb_shuan},
	                                    {"huang",PY_mb_shuang},
	                                    {"hui",PY_mb_shui},
	                                    {"hun",PY_mb_shun},
	                                    {"huo",PY_mb_shuo},
	                                    {"i",PY_mb_si},
	                                    {"ong",PY_mb_song},
	                                    {"ou",PY_mb_sou},
	                                    {"u",PY_mb_su},
	                                    {"uan",PY_mb_suan},
	                                    {"ui",PY_mb_sui},
	                                    {"un",PY_mb_sun},
	                                    {"uo",PY_mb_suo}};
code struct PY_index code PY_index_t[]={{"a",PY_mb_ta},
	                                    {"ai",PY_mb_tai},
	                                    {"an",PY_mb_tan},
	                                    {"ang",PY_mb_tang},
	                                    {"ao",PY_mb_tao},
	                                    {"e",PY_mb_te},
	                                    {"eng",PY_mb_teng},
	                                    {"i",PY_mb_ti},
	                                    {"ian",PY_mb_tian},
	                                    {"iao",PY_mb_tiao},
	                                    {"ie",PY_mb_tie},
	                                    {"ing",PY_mb_ting},
	                                    {"ong",PY_mb_tong},
	                                    {"ou",PY_mb_tou},
	                                    {"u",PY_mb_tu},
	                                    {"uan",PY_mb_tuan},
	                                    {"ui",PY_mb_tui},
	                                    {"un",PY_mb_tun},
	                                    {"uo",PY_mb_tuo}};
code struct PY_index code PY_index_u[]={{"",PY_mb_space}};
code struct PY_index code PY_index_v[]={{"",PY_mb_space}};
code struct PY_index code PY_index_w[]={{"a",PY_mb_wa},
	                                    {"ai",PY_mb_wai},
	                                    {"an",PY_mb_wan},
	                                    {"ang",PY_mb_wang},
	                                    {"ei",PY_mb_wei},
	                                    {"en",PY_mb_wen},
	                                    {"eng",PY_mb_weng},
	                                    {"o",PY_mb_wo},
	                                    {"u",PY_mb_wu}};
code struct PY_index code PY_index_x[]={{"i",PY_mb_xi},
	                                    {"ia",PY_mb_xia},
	                                    {"ian",PY_mb_xiao},
	                                    {"iang",PY_mb_xiang},
	                                    {"iao",PY_mb_xiao},
	                                    {"ie",PY_mb_xie},
	                                    {"in",PY_mb_xin},
	                                    {"ing",PY_mb_xing},
	                                    {"iong",PY_mb_xiong},
	                                    {"iu",PY_mb_xiu},
	                                    {"u",PY_mb_xu},
	                                    {"uan",PY_mb_xuan},
	                                    {"ue",PY_mb_xue},
	                                    {"un",PY_mb_xun}};
code struct PY_index code PY_index_y[]={{"a",PY_mb_ya},
	                                    {"an",PY_mb_yan},
	                                    {"ang",PY_mb_yang},
	                                    {"ao",PY_mb_yao},
	                                    {"e",PY_mb_ye},
	                                    {"i",PY_mb_yi},
	                                    {"in",PY_mb_yin},
	                                    {"ing",PY_mb_ying},
	                                    {"o",PY_mb_yo},
	                                    {"ong",PY_mb_yong},
	                                    {"ou",PY_mb_you},
	                                    {"u",PY_mb_yu},
	                                    {"uan",PY_mb_yuan},
	                                    {"ue",PY_mb_yue},
	                                    {"un",PY_mb_yun}};
code struct PY_index code PY_index_z[]={{"a",PY_mb_za},
	                                    {"ai",PY_mb_zai},
	                                    {"an",PY_mb_zan},
	                                    {"ang",PY_mb_zang},
	                                    {"ao",PY_mb_zao},
	                                    {"e",PY_mb_ze},
	                                    {"ei",PY_mb_zei},
	                                    {"en",PY_mb_zen},
	                                    {"eng",PY_mb_zeng},
	                                    {"ha",PY_mb_zha},
	                                    {"hai",PY_mb_zhai},
	                                    {"han",PY_mb_zhan},
	                                    {"hang",PY_mb_zhang},
	                                    {"hao",PY_mb_zhao},
	                                    {"he",PY_mb_zhe},
	                                    {"hen",PY_mb_zhen},
	                                    {"heng",PY_mb_zheng},
	                                    {"hi",PY_mb_zhi},
	                                    {"hong",PY_mb_zhong},
	                                    {"hou",PY_mb_zhou},
	                                    {"hu",PY_mb_zhu},
	                                    {"hua",PY_mb_zhua},
	                                    {"huai",PY_mb_zhuai},
	                                    {"huan",PY_mb_zhuan},
	                                    {"huang",PY_mb_zhuang},
	                                    {"hui",PY_mb_zhui},
	                                    {"hun",PY_mb_zhun},
	                                    {"huo",PY_mb_zhuo},
	                                    {"i",PY_mb_zi},
	                                    {"ong",PY_mb_zong},
	                                    {"ou",PY_mb_zou},
	                                    {"u",PY_mb_zu},
	                                    {"uan",PY_mb_zuan},
	                                    {"ui",PY_mb_zui},
	                                    {"un",PY_mb_zun},
	                                    {"uo",PY_mb_zuo}};
code struct PY_index code PY_index_end[]={"",PY_mb_space};

/*定义首字母索引表*/
code struct PY_index code *PY_index_headletter[]={	PY_index_a,
		                                            PY_index_b,
		                                            PY_index_c,
		                                            PY_index_d,
		                                            PY_index_e,
		                                            PY_index_f,
		                                            PY_index_g,
		                                            PY_index_h,
		                                            PY_index_i,
		                                            PY_index_j,
		                                            PY_index_k,
		                                            PY_index_l,
		                                            PY_index_m,
		                                            PY_index_n,
		                                            PY_index_o,
		                                            PY_index_p,
		                                            PY_index_q,
		                                            PY_index_r,
		                                            PY_index_s,
		                                            PY_index_t,
		                                            PY_index_u,
		                                            PY_index_v,
		                                            PY_index_w,
		                                            PY_index_x,
		                                            PY_index_y,
		                                            PY_index_z,
		                                            PY_index_end};  

//---------------------------------------------------------------------------------------
void T9Reset()
{	//开始拼写一个汉字之前必须先调用
	BYTE i;
	for (i=0;i<8;i++)
	{
		PYBuf[i][0]=0;
	}
}

//---------------------------------------------------------------------------------------
BYTE * GetChnStr(BYTE * strInput_py_str,BYTE * PYCount)
{	//返回值:指向第一个符合拼音的PY_index结构体
	//PYCount:通过这个值来指示共有几个PY_index符合要求
	struct PY_index *cpHZ,*cpHZedge,*pHZ=NULL;
	char i,cInputStrLength;

    cInputStrLength=strlen(strInput_py_str);    /*输入拼音串长度*/
    if(*strInput_py_str=='\0')return NULL;       /*如果输入空字符返回0*/

    for(i=0;i<cInputStrLength;i++)
        *(strInput_py_str+i)|=0x20;             /*将字母串转为小写*/

    if(*strInput_py_str=='i')return NULL;        /*错误拼音输入*/
    if(*strInput_py_str=='u')return NULL;
    if(*strInput_py_str=='v')return NULL;

    cpHZ=PY_index_headletter[strInput_py_str[0]-'a'];        /*查首字母索引*/
    cpHZedge=PY_index_headletter[strInput_py_str[0]-'a'+1];  /*设置指针界限*/

    strInput_py_str++;                           /*指向拼音串第二个字母*/
    while(cpHZ<cpHZedge)                         /*索引表不超界*/
    {
        for(i=0;i<cInputStrLength;i++)
        {
			if (*(strInput_py_str+i)==0)	
			{	
				if (PYCount==NULL)
					return cpHZ->PY_mb;
				if (pHZ==NULL)
					pHZ=cpHZ;
				(*PYCount)++;
			}
            if (*(strInput_py_str+i)!=*((*cpHZ).PY+i)) 
				break;    /*发现字母串不配,退出*/
        }
		cpHZ++;
    }
    return  pHZ;                      
}

//---------------------------------------------------------------------------------------
BYTE * GetKey(BYTE Key)
{	//输入:0~7
	//返回:指向xdata BYTE PYBuf[8][8];的二维数组
	//KeyPY结构:每行第一个Byte代表这行内有几个字母,0代表没有
	BYTE i,j=0;
	BYTE code * pPY;
	
	for (i=0;i<8;i++)
	{
		if (PYBuf[i][0]!=0)
		{
			pPY=KeyPY[Key];
			while(*pPY!=0)
			{
				PYBuf[i][PYBuf[i][0]+1]=*pPY;
				PYBuf[i][PYBuf[i][0]+2]=0;
				if (GetChnStr(PYBuf[i]+1,NULL))
				{
					PYBuf[i][0]++;
					break;
				}
				pPY++;	
			}
			if (*pPY==0)
				PYBuf[i][0]=0;
			
		}
		else j++;
	}
	if (j==8)	//第一次按键
	{
		for (i=0,j=0;KeyPY[Key][i]!=0;i++)
		{
			if (KeyPY[Key][i]=='i' || KeyPY[Key][i]=='u' || KeyPY[Key][i]=='v') 
				continue;
			else
			{
				PYBuf[j][0]=1;
				PYBuf[j][1]=KeyPY[Key][i];
				j++;
			}
		}
	}
	return PYBuf;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -