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

📄 main.c

📁 手机韩语输入法源码 朝鲜语字母与手机键盘之间的对应
💻 C
字号:
#include <stdio.h>
extern int hangul_automata (int c, char *buf);
#include "KMime.h"

char gPreChar[4]={0}; // To remember the previous four char codes;

/*=============================================
	To put a char in previous codes array.
  =============================================*/
void pushPreChar(char cInput)
{
	int i, j;
	for(i=0; i<3; i++)
		gPreChar[i] = gPreChar[i+1];
	gPreChar[3] = cInput;
}

/*=============================================
	To get the last char in previous codes array.
  =============================================*/
char popPreChar()
{
	return gPreChar[2];
}

static char chat_p[100];
void main()
{
	char	buf[20];
	char c=0;
	char cNewChar;
	register i = 1,j,m = 0;

	cPreFirst = 0;
	cPreSecond = 0;
	cPreThird = 0;
	cPreFourth = 0;

	memset(chat_p,0x0,100);
	memset(buf,0x0,20);
	//extern XtermWidget term;
	printf("Hello!\n" );
	while(c!='`')
	{ 
		c=getche();
		pushPreChar(c);
		cNewChar=c;
		switch( gPreChar[3]) 
		{
			case ZERO:
				cNewChar = 'm';
				break;
			case ONE :
				cNewChar = 'r';
				break;
			case TWO :
				cNewChar = 's';
				break;
			case THREE:
				if(popPreChar == THREE)
				{
					hangul_automata('\b', buf);
					for(j=0;j<i;j++)
					{
						chat_p[m-j] = 0x0;
					}
					m = m-j;
					cNewChar = 'k';
				}
				else
				{
					cNewChar = 'j';
				}
				break;
			case FOUR :
				cNewChar = 'f';
				break;
			case FIVE :
				cNewChar = 'a';				
				break;
			case SIX:
				if(gPreChar[2] == SIX)
				{
					hangul_automata('\b', buf);
					for(j=0;j<i;j++)
					{
						chat_p[m-j] = 0x0;
					}
					m = m-j;
					cNewChar = 'n';
				}
				else
				{
					cNewChar = 'h';
				}
				break;
			case SEVEN :
				cNewChar = 't';	
				break;
			case EIGHT :
				cNewChar = 'd';
				break;
			case NINE:
				if(gPreChar[2] == THREE)
				{
					/* '39' */
					hangul_automata('\b', buf);
					for(j=0;j<i;j++)
					{
						chat_p[m-j] = 0x0;
					}
					m = m-j;
					if(gPreChar[1] == THREE)/* '339' */
						cNewChar = 'p';
					else					
						cNewChar = 'o';
					break;
				}
				else if(gPreChar[2] == STAR)
				{
					if(gPreChar[1] == THREE) /* '3*9' */
					{
						hangul_automata('\b', buf);
						for(j=0;j<i;j++)
						{
							chat_p[m-j] = 0x0;
						}
						m = m-j;

						if(gPreChar[0] == THREE)
						{/* '33*9' */
							cNewChar = 'P';
						}
						else/* '3*9' */
							cNewChar = 'O';
					}
				}
				else /* '9' */
				{
					cNewChar = 'l';
				}
				break;
			case STAR :
				switch(gPreChar[2])
				{
					case ONE:/* '1*' */
						hangul_automata('\b', buf);
						for(j=0;j<i;j++)
						{
							chat_p[m-j] = 0x0;
						}
						m = m-j;
						cNewChar = 'z';
						break;
					case TWO: /* '2*' */
						hangul_automata('\b', buf);
						for(j=0;j<i;j++)
						{
							chat_p[m-j] = 0x0;
						}
						m = m-j;
						cNewChar = 'e';
						break;
					case THREE:/* '3*' */
						hangul_automata('\b', buf);
						for(j=0;j<i;j++)
						{
							chat_p[m-j] = 0x0;
						}
						m = m-j;
						if(gPreChar[1] == THREE)
							/* '33*' */
							cNewChar = 'u';
						else
							cNewChar = 'i';
						break;
					case FIVE:/* '5*' */
						hangul_automata('\b', buf);
						for(j=0;j<i;j++)
						{
							chat_p[m-j] = 0x0;
						}
						m = m-j;
						cNewChar = 'q';
						break;
					case SIX:/* '6*' */
						hangul_automata('\b', buf);
						for(j=0;j<i;j++)
						{
							chat_p[m-j] = 0x0;
						}
						m = m-j;
						if(gPreChar[1] == SIX)
							cNewChar = 'b';
						else
							cNewChar = 'y';
						break;
					case SEVEN:/* '7*' */
						hangul_automata('\b', buf);
						for(j=0;j<i;j++)
						{
							chat_p[m-j] = 0x0;
						}
						m = m-j;
						cNewChar = 'w';
						break;
					case EIGHT:/* '8*' */
						hangul_automata('\b', buf);
						for(j=0;j<i;j++)
						{
							chat_p[m-j] = 0x0;
						}
						m = m-j;
						cNewChar = 'g';
						break;
					case STAR:/* '**' */
						if(gPreChar[1] == SEVEN)
						{/* '7**' */
							hangul_automata('\b', buf);
							for(j=0;j<i;j++)
							{
								chat_p[m-j] = 0x0;
							}
							m = m-j;
							cNewChar = 'c';
						}
						else if(gPreChar[1] == TWO)
						{/* '2**' */
							hangul_automata('\b', buf);
							for(j=0;j<i;j++)
							{
								chat_p[m-j] = 0x0;
							}
							m = m-j;
							cNewChar = 'x';
						}
						else if(gPreChar[1] == FIVE)
						{/* '5**' */
							hangul_automata('\b', buf);
							for(j=0;j<i;j++)
							{
								chat_p[m-j] = 0x0;
							}
							m = m-j;
							cNewChar = 'v';
						}
						
				}
				break;
			case POND :
				switch(gPreChar[2])
				{
					case ONE: /* '1#' */
						hangul_automata('\b', buf);
						for(j=0;j<i;j++)
						{
							chat_p[m-j] = 0x0;
						}
						m = m-j;
						cNewChar = 'W';
						break;
					case SEVEN: /* '7#' */
						hangul_automata('\b', buf);
						for(j=0;j<i;j++)
						{
							chat_p[m-j] = 0x0;
						}
						m = m-j;
						cNewChar = 'T';
						break;
					case STAR:
						if(gPreChar[1] == TWO )/* '2*#' */
						{
							hangul_automata('\b', buf);
							for(j=0;j<i;j++)
							{
								chat_p[m-j] = 0x0;
							}
							m = m-j;
							cNewChar = 'E';
							break;
						}
						if(gPreChar[1] == SEVEN )/* '7*#' */
						{
							hangul_automata('\b', buf);
							for(j=0;j<i;j++)
							{
								chat_p[m-j] = 0x0;
							}
							m = m-j;
							cNewChar = 'W';
							break;
						}
				}
				break;
		}


	 	i = hangul_automata(cNewChar, buf);
		for(j=0;j<i;j++)
		{
			chat_p[m+j] = buf[j];
		}
		m = m + i;
		printf("Candaite is %s\n",buf);
		printf("OutBuf is %s\n",chat_p);
	}

}

⌨️ 快捷键说明

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