#include "keyboard.h" 
#include "string.h"

#define KB_LEN 47

#define KEY_X  100

#define KEY_Y  180

const KEY_B_Pos gKeyBoard[KB_LEN] = 
{
	{KEY_X +   7,KEY_Y + 104,KEY_X +  60,KEY_Y + 145,"Q"},    // Q  0
	{KEY_X +  66,KEY_Y + 104,KEY_X + 119,KEY_Y + 145,"W"},    // W  1
	{KEY_X + 126,KEY_Y + 104,KEY_X + 178,KEY_Y + 145,"E"},    // E  2
	{KEY_X + 185,KEY_Y + 104,KEY_X + 238,KEY_Y + 145,"R"},    // R  3
	{KEY_X + 244,KEY_Y + 104,KEY_X + 297,KEY_Y + 145,"T"},    // T  4
	{KEY_X + 303,KEY_Y + 104,KEY_X + 356,KEY_Y + 145,"Y"},    // Y  5
	{KEY_X + 362,KEY_Y + 104,KEY_X + 415,KEY_Y + 145,"U"},    // U  6
	{KEY_X + 422,KEY_Y + 104,KEY_X + 475,KEY_Y + 145,"I"},    // I  7
	{KEY_X + 481,KEY_Y + 104,KEY_X + 534,KEY_Y + 145,"O"},    // O  8
	{KEY_X + 540,KEY_Y + 104,KEY_X + 593,KEY_Y + 145,"P"},    // P  9
	
	{KEY_X +  37,KEY_Y + 152,KEY_X +  90,KEY_Y + 193,"A"},    // A  10
	{KEY_X +  96,KEY_Y + 152,KEY_X + 149,KEY_Y + 193,"S"},    // S  11
	{KEY_X + 155,KEY_Y + 152,KEY_X + 208,KEY_Y + 193,"D"},    // D  12
	{KEY_X + 214,KEY_Y + 152,KEY_X + 267,KEY_Y + 193,"F"},    // F  13
	{KEY_X + 274,KEY_Y + 152,KEY_X + 327,KEY_Y + 193,"G"},    // G  14
	{KEY_X + 333,KEY_Y + 152,KEY_X + 386,KEY_Y + 193,"H"},    // H  15
	{KEY_X + 392,KEY_Y + 152,KEY_X + 445,KEY_Y + 193,"J"},    // J  16
	{KEY_X + 451,KEY_Y + 152,KEY_X + 504,KEY_Y + 193,"K"},    // K  17
	{KEY_X + 511,KEY_Y + 152,KEY_X + 563,KEY_Y + 193,"L"},    // L  18

	{KEY_X +   7,KEY_Y + 200,KEY_X +  90,KEY_Y + 241,"1"},    // 分词 19
	{KEY_X +  96,KEY_Y + 200,KEY_X + 149,KEY_Y + 241,"Z"},	  // Z  20
	{KEY_X + 155,KEY_Y + 200,KEY_X + 208,KEY_Y + 241,"X"},    // X  21
	{KEY_X + 214,KEY_Y + 200,KEY_X + 267,KEY_Y + 241,"C"},    // C  22
	{KEY_X + 274,KEY_Y + 200,KEY_X + 327,KEY_Y + 241,"V"},    // V  23
	{KEY_X + 333,KEY_Y + 200,KEY_X + 386,KEY_Y + 241,"B"},    // B  24
	{KEY_X + 392,KEY_Y + 200,KEY_X + 445,KEY_Y + 241,"N"},    // N  25
	{KEY_X + 451,KEY_Y + 200,KEY_X + 504,KEY_Y + 241,"M"},    // M  26
	{KEY_X + 511,KEY_Y + 200,KEY_X + 593,KEY_Y + 241,"2"},    // 删除  27
		
	{KEY_X +   7,KEY_Y + 248,KEY_X + 179,KEY_Y + 288,"3"},    // 符号  28
	{-1,-1,-1,-1,"4"},    // 数字123  29
	{KEY_X + 185,KEY_Y + 248,KEY_X + 238,KEY_Y + 288,","},    // ，     30
	{KEY_X + 244,KEY_Y + 248,KEY_X + 356,KEY_Y + 288,"5"},    // 空格   31
	{KEY_X + 362,KEY_Y + 248,KEY_X + 415,KEY_Y + 288,"."},    // 。     32
	{KEY_X + 422,KEY_Y + 248,KEY_X + 504,KEY_Y + 288,"6"},    // 中/英  33
	{KEY_X + 511,KEY_Y + 248,KEY_X + 593,KEY_Y + 288,"7"},    // 回车   34
	
	{640,235,693,277,"8"},    // 换页   35  候选汉字换页
	
	//汉字选择
	{KEY_X + 150,KEY_Y + 55,KEY_X + 192,KEY_Y + 97,"8"},    // 候选中文1    36
	{KEY_X + 192,KEY_Y + 55,KEY_X + 234,KEY_Y + 97,"8"},    // 候选中文2    37
	{KEY_X + 234,KEY_Y + 55,KEY_X + 376,KEY_Y + 97,"8"},    // 候选中文3    38
	{KEY_X + 276,KEY_Y + 55,KEY_X + 318,KEY_Y + 97,"8"},    // 候选中文4    39
	{KEY_X + 318,KEY_Y + 55,KEY_X + 360,KEY_Y + 97,"8"},    // 候选中文5    40
	{KEY_X + 360,KEY_Y + 55,KEY_X + 402,KEY_Y + 97,"8"},    // 候选中文6    41
	{KEY_X + 402,KEY_Y + 55,KEY_X + 444,KEY_Y + 97,"8"},    // 候选中文7    42
	{KEY_X + 444,KEY_Y + 55,KEY_X + 486,KEY_Y + 97,"8"},    // 候选中文8    43
	{KEY_X + 486,KEY_Y + 55,KEY_X + 528,KEY_Y + 97,"8"},    // 候选中文9    44
//	{610,173,664,232,"8"},    // 候选中文10   45
//	{664,173,718,232,"8"},    // 候选中文11   46
};

KEY_B_Info gKB;

#define KEY_B_POS 0

//extern const Picture_Info PicInfo[];
#define gShowLay    (0x80000000+LCD_XSIZE_TFT*LCD_YSIZE_TFT*2*0)     //键盘显示的图层
#define gBuf_Lay    (0x80000000+LCD_XSIZE_TFT*LCD_YSIZE_TFT*2*17)     //键盘底图缓存
#define gBuf_Lay_1  (0x80000000+LCD_XSIZE_TFT*LCD_YSIZE_TFT*2*18)     //键盘按下底图缓存
#define gFontLay    (0x80000000+LCD_XSIZE_TFT*LCD_YSIZE_TFT*2*20)  //Font在SRAM的地址

u32 gPicAddr1 = 0;  					 //原底图在Flash中的地址		
u32 gPicAddr2 = 0;  					 //按下底图在Flash中的地址
u32 gFontAddr = 0;  					 //32X32字库在Flash中的地址    			 
u32 gFontLen = 0x00105000 ;          	 //32X32字库的大小              		 
 	 


u8 TP_Flag = 0;  //用于反馈这次TP处理得到的按键数据是否处理

void LT_InitKeyBoard(void)
{
	//汉字输入法
	gKB.state = key_none;
	gKB.cnt = 0;              //触摸计数
	gKB.id = 0xff;			  //键盘按键默认ID为0xff
	gKB.pos = gKeyBoard;      //
	gKB.sum = KB_LEN;         //键盘总数为47
	gKB.func = English;       //功能默认为英文

	gKB.input.start = KEY_X + 15;    //
	gKB.input.end = KEY_X + 575;      //
	gKB.input.x = KEY_X + 15;        //
	gKB.input.y = KEY_Y + 10;        //
	gKB.input.cnt = 0;        //
	
	memset(gKB.input.info,0,sizeof(gKB.input.info));

	gKB.type = Small;
	gKB.index = 0;
	

//--------------------------处理原底图缓冲层------------------------------
	Canvas_Image_Start_address(gBuf_Lay);
	Canvas_image_width(LCD_XSIZE_TFT);
	
//	LT768_BTE_Memory_Copy(TEMP_BUFF,LCD_XSIZE_TFT,0,0,                                          //将当前画面的复制
//						  TEMP_BUFF,LCD_XSIZE_TFT,0,0,
//						  gBuf_Lay,LCD_XSIZE_TFT,0,0,
//						  0x0c,LCD_XSIZE_TFT,LCD_YSIZE_TFT);
	
	
	LT768_DMA_24bit_Block_Or_Line_16bpp(1,0,KEY_X,KEY_Y,											//键盘底图缓冲层				
										600,300,
										600,gPicAddr1 
										,gBuf_Lay,LCD_XSIZE_TFT);   


//	LT768_DMA_24bit_Block_Or_Line_16bpp(1,0,196,248+180,										//将按下底图中123数字按键复制到原底图中			
//										84,41,
//										600,gPicAddr+600*300*2+600*248*2+96*2 
//										,gBuf_Lay,LCD_XSIZE_TFT);
										
//	LT768_DMA_24bit_Block_Or_Line_16bpp(1,0,522,428,										//将按下底图中 英/中 按键复制到原底图中			
//										83,41,
//										600,gPicAddr2+600*248*2+422*2 
//										,gBuf_Lay,LCD_XSIZE_TFT);

//	LT768_DMA_24bit_Block_Or_Line_16bpp(1,0,107,380,										//将按下底图中 小写分词 按键复制到原底图中			
//										83,41,
//										600,gPicAddr2+600*200*2+7*2 
//										,gBuf_Lay,LCD_XSIZE_TFT);

//--------------------------处理按下底图缓冲层------------------------------

	Canvas_Image_Start_address(gBuf_Lay_1);
	Canvas_image_width(LCD_XSIZE_TFT);
	
//	LT768_BTE_Memory_Copy(TEMP_BUFF,LCD_XSIZE_TFT,0,0,                                          //将当前画面的复制
//						  TEMP_BUFF,LCD_XSIZE_TFT,0,0,
//						  gBuf_Lay_1,LCD_XSIZE_TFT,0,0,
//						  0x0c,LCD_XSIZE_TFT,LCD_YSIZE_TFT);
	
	LT768_DMA_24bit_Block_Or_Line_16bpp(1,0,KEY_X,KEY_Y,											//键盘按下底图缓冲层				
										600,300,
										600,gPicAddr2 
										,gBuf_Lay_1,LCD_XSIZE_TFT);
	

//	LT768_DMA_24bit_Block_Or_Line_16bpp(1,0,196,248+180,										//将原底图中123按键复制到按下底图中				
//										84,41,
//										600,gPicAddr+600*248*2+96*2 
//										,gBuf_Lay_1,LCD_XSIZE_TFT); 

//	LT768_DMA_24bit_Block_Or_Line_16bpp(1,0,522,428,										    //将原底图中 中/英 按键复制到按下底图中			
//										83,41,
//										600,gPicAddr1+600*248*2+422*2 
//										,gBuf_Lay_1,LCD_XSIZE_TFT);
//										
//	LT768_DMA_24bit_Block_Or_Line_16bpp(1,0,107,380,										//将原底图中 大写写分词 按键复制到按下底图中			
//										83,41,
//										600,gPicAddr1+600*200*2+7*2 
//										,gBuf_Lay_1,LCD_XSIZE_TFT);							


	//以下将两张大图的大小写选项图标和中英文切换图标进行对调
	LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,522,428,                                         
						  gBuf_Lay,LCD_XSIZE_TFT,522,428,
						  LAY_BUFF1,LCD_XSIZE_TFT,522,428,
						  0x0c,83,41);
	LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,107,380,                                         
						  gBuf_Lay,LCD_XSIZE_TFT,107,380,
						  LAY_BUFF1,LCD_XSIZE_TFT,107,380,
						  0x0c,83,41);	
						  
	LT768_BTE_Memory_Copy(gBuf_Lay_1,LCD_XSIZE_TFT,522,428,                                         
						  gBuf_Lay_1,LCD_XSIZE_TFT,522,428,
						  gBuf_Lay,LCD_XSIZE_TFT,522,428,
						  0x0c,83,41);
	LT768_BTE_Memory_Copy(gBuf_Lay_1,LCD_XSIZE_TFT,107,380,                                        
						  gBuf_Lay_1,LCD_XSIZE_TFT,107,380,
						  gBuf_Lay,LCD_XSIZE_TFT,107,380,
						  0x0c,83,41);
						  
	LT768_BTE_Memory_Copy(LAY_BUFF1,LCD_XSIZE_TFT,522,428,                                         
						  LAY_BUFF1,LCD_XSIZE_TFT,522,428,
						  gBuf_Lay_1,LCD_XSIZE_TFT,522,428,
						  0x0c,83,41);
	LT768_BTE_Memory_Copy(LAY_BUFF1,LCD_XSIZE_TFT,107,380,                                          
						  LAY_BUFF1,LCD_XSIZE_TFT,107,380,
						  gBuf_Lay_1,LCD_XSIZE_TFT,107,380,
						  0x0c,83,41);
						  
//--------------------------处理显示缓冲层------------------------------

	Canvas_Image_Start_address(gShowLay);
	Canvas_image_width(LCD_XSIZE_TFT);
	
	LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,KEY_X,KEY_Y,                                          //将当前画面的复制
						  gBuf_Lay,LCD_XSIZE_TFT,KEY_X,KEY_Y,
						  gShowLay,LCD_XSIZE_TFT,KEY_X,KEY_Y,
						  0x0c,600,300);
												

//	LT768_Select_Outside_Font_Init(1,0,gFontAddr,gFontLay,gFontLen,32,1,1,1,0);    //加载字库数据到SRAM
	

// 	LT768_Text_cursor_Init(1,30,16,2);
//	LT768_Print_Internal_Font_String(gKB.input.x,gKB.input.y,Black,White,(char*)"\0");
	

//	Main_Image_Width(LCD_XSIZE_TFT);                  //显示画面移到gShowLay
//	Main_Image_Start_Address(gShowLay);
			
}

u8 clear_flag = 0;

void LT_GetKeyBoard(u16 x,u16 y,KEY_B_Info* kbInfo)
{
	u8 i = 0;
	static u8 ID  = 0;
	static u8 flag = 0;
	
	kbInfo->id = 0xff;
	

//	printf("X:%d   Y:%d\r\n",x,y);
//	printf("State:%d\r\n",kbInfo->state);
//	printf("cnt:%d\r\n",kbInfo->cnt);

	if((gTpInfo.sta == 1)  && (flag == 0))
	{
		flag = 1;
		for(i = 0 ; i < kbInfo->sum ; i++)
		{
			if((x>kbInfo->pos[i].x1)&&(x<kbInfo->pos[i].x2)&&(y>kbInfo->pos[i].y1)&&(y<kbInfo->pos[i].y2))
			{
				kbInfo->id = i;
				ID = i;
			}
		}
		TP_Flag = 1;

	}
	else if((gTpInfo.sta == 0)  && (flag == 1))
	{
		flag = 0;
		if(clear_flag == 1)
		{
			LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[ID].x1,gKB.pos[ID].y1,                      //松开之后恢复被按按键
								  gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[ID].x1,gKB.pos[ID].y1,
								  gShowLay,LCD_XSIZE_TFT,gKB.pos[ID].x1,gKB.pos[ID].y1,
								  0x0c,gKB.pos[ID].x2-gKB.pos[ID].x1,gKB.pos[ID].y2-gKB.pos[ID].y1
								 );

			clear_flag = 0;
		}
	}


}




void ShowEnglish(u8 id,u8 *buf)
{
	if((id<19)||((id>19)&&(id<28))||(id==34) || (id ==31)|| (id ==30)|| (id ==32))   /*Q到P   A到L  Z到M和删除   enter*/
	{
		if(gKB.type==Big)	 buf[0] = gKB.pos[id].c[0];
		else                buf[0] = gKB.pos[id].c[0]+32;
		if(id==27)	buf[0] = 0xfe; //删除
		if(id==31)	buf[0] = ' '; //空格
		
		if(id==34)  buf[0] = 0xf0; //回车，退出
		
		if(id==30)	buf[0] = ',';
		if(id==32)	buf[0] = '.';
	}
	else
	{
		buf[0] = 0xff;   //其他全部为0xff
	}
}

void ShowSymbol(u8 id,u8 *buf)
{
	if(id<9)		buf[0] = id + '1';
	if(id==9)		buf[0] = '0';
	switch(id)
	{
		case 10:	buf[0] = '~'; break;
		case 11:	buf[0] = '!'; break;
		case 12:	buf[0] = '@'; break;
		case 13:	buf[0] = '#'; break;
		case 14:	buf[0] = '%'; break;
		case 15:	buf[0] = '"'; break;
		case 16:	buf[0] = '"'; break;
		case 17:	buf[0] = '*'; break;
		case 18:	buf[0] = '?'; break;
		case 20:	buf[0] = '('; break;
		case 21:	buf[0] = ')'; break;
		case 22:	buf[0] = '-'; break;
		case 23:	buf[0] = '_'; break;
		case 24:	buf[0] = ':'; break;
		case 25:	buf[0] = ';'; break;
		case 26:	buf[0] = '/'; break;
		case 27:	buf[0] = 0xfe;break;   //删除
	
		case 30:	buf[0] = ','; break;
		case 31:	buf[0] = ' '; break;
		case 32:	buf[0] = '.'; break;
		case 34:	buf[0] = gKB.pos[id].c[0];  //退出
		default:    break;
	}
}

void ShowNumbers(u8 id,u8 *buf)
{
//	if(id<9)		buf[0] = id + '1';
//	if(id==9)		buf[0] = '0';
//	if(id==27)	    buf[0] = 0xfe;           //删除
//	if(id==34)      buf[0] = gKB.pos[id].c[0];  //退出
}


void ShowChinese(u8 id,u8 *buf)
{
	u8 temp = 0;
	
	if((id<19)||((id>19)&&(id<27))/*||((id>29)&&(id<33))*/)  //正常的字母按键
	{
		//转成9宫格拼音
		if		((id==10)||(id==24)||(id==22))					temp = 2;
		else if((id==12)||(id==2)||(id==13))					temp = 3;
		else if((id==14)||(id==15)||(id==7))					temp = 4;
		else if((id==16)||(id==17)||(id==18))					temp = 5;
		else if((id==26)||(id==25)||(id==8))					temp = 6;
		else if((id==9)||(id==0)||(id==3)||(id==11))			temp = 7;
		else if((id==4)||(id==6)||(id==23))						temp = 8;
		else if((id==1)||(id==21)||(id==5)||(id==20))			temp = 9;
		
		if(gInputPY.cnt==0)	Init_PY();  
		
		if(gInputPY.cnt<7)
		{
			gInputPY.py[gInputPY.cnt++] = gKB.pos[id].c[0]+32;
			gInputPY.t9py = (gInputPY.t9py<<4) + temp;
		}
		//printf("---%d\r\n",gInputPY.cnt);
		
		if(gInputPY.first==0)
		{
			gInputPY.first = 1;
			gInputPY.firstno = temp;
		}
		
		buf[0] = gKB.pos[id].c[0]+32;
		
		gKB.index = 0;//中文拼音 每次增加都会清0 候选中文的候选指针
	}
	
	else if(id==27)      //删除按键
	{
		buf[0] = 0xfe; //删除
	}
	
	else if(id==34)      //回车按键
	{
		Init_PY();
		buf[0] = 0xfc;
	}
	
	else if(id == 35)    //查看下一页的文字
	{

		buf[0] = 0xfd;    
	}
	
	else if((id>35))     //选择文字
	{
		buf[0] = 0xfb;    
	}
	
	else if(id==30)	buf[0] = ',';
	else if(id==31)	buf[0] = ' ';		
	else if(id==32)	buf[0] = '.';	
	
	else
	{
		buf[0] = 0xff;
	}
	
	
	
	//printf("%s \r\n",gInputPY.py);
	
	//Search_py(&gInputPY);  //搜索拼音汉字
}


u8 KeyBoard_Demo(void)
{
	static u8 Cancel = 0;
	u8 pos = 0;             //中文输入法中白色框里的汉字选择
	u8 buf[2] = {0xff,0};   //用于缓冲单次输入的字符
	u8 Fontbuff[23]={0};
	u8 Fontnum = 0; 
	u8 Font_flag_CH = 0;   //中文有候选词标志

	
	u16 x,y;

	Cancel = 0;
	gTpInfo.scan();
	x = gTpInfo.x[0]; y = gTpInfo.y[0];

	LT_GetKeyBoard(x,y,&gKB);    //按下抬起判断，并且得出按下的按键的ID号

	Canvas_Image_Start_address(gShowLay);       //指到显示层
	Canvas_image_width(LCD_XSIZE_TFT);
	
 
	if(gKB.id == 34)
	{
//		LT768_Disable_Text_Cursor(); 
		return 0;
	} //回车键退出

	if(gKB.id!=0xff  && TP_Flag ==1)     //
	{
//		printf("gKB.id:%d \r\n",gKB.id);
		/*************************************************控制按键显示**************************************************/
		//确保每次都只能是一个功能的输入，只能是英文输入，只能是中文输入，只能是数字输入，只能是符号输入。

	    //中文、英文输入功能切换
		if(gKB.id == 33)	          //中英文切换按键
		{
//			if(gKB.func==Numbers)    //如果输入功能是输入数字，则改变回默认
//			{
//				 //从原底图里将 数字位 复制到显示图层里
//				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                      gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                      gShowLay,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                      0x0c,gKB.pos[29].x2-gKB.pos[29].x1,gKB.pos[29].y2-gKB.pos[29].y1
//				                     );
//			}
			if(gKB.func==Symbol)
			{
				 //从原底图里将 符号位 复制到显示图层里
				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
				                      gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
				                      gShowLay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
				                      0x0c,gKB.pos[28].x2-gKB.pos[28].x1,gKB.pos[28].y2-gKB.pos[28].y1
				                     );
				gKB.func = English;
			}
			
			if(gKB.func == English)	     //英文变中文
			{
				gKB.func = Chinese;
				//从原底图里将 小写位 复制到显示图层里
				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
									  gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
									  gShowLay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
									  0x0c,gKB.pos[19].x2-gKB.pos[19].x1+1,gKB.pos[19].y2-gKB.pos[19].y1
									 );
			

				//从按下底图中将 中/英 复制到显示图层里
				LT768_BTE_Memory_Copy(gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
									  gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
									  gShowLay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
									  0x0c,gKB.pos[33].x2-gKB.pos[33].x1+1,gKB.pos[33].y2-gKB.pos[33].y1
									 );				

				gKB.type = Small;  //大小写变回小写
				Init_PY();         //拼音初始化
			} 
			else                   //中文变英文
			{				
				gKB.func = English; 
				
				if(gKB.type==Small)     //小写
				{
					gKB.type = Small;
					//从原底图里将 小写位 复制到显示图层里
					LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  gShowLay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  0x0c,gKB.pos[19].x2-gKB.pos[19].x1+1,gKB.pos[19].y2-gKB.pos[19].y1
										 );
//					LT768_Print_Internal_Font_String(gKB.input.x,gKB.input.y,Black,White,(char*)"\0");
				}
				else                   //大写
				{
					gKB.type = Big;
					//从按下底图中将 大写位 复制到显示图层里
					LT768_BTE_Memory_Copy(gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  gShowLay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  0x0c,gKB.pos[19].x2-gKB.pos[19].x1+1,gKB.pos[19].y2-gKB.pos[19].y1
										 );					

//					LT768_Print_Internal_Font_String(gKB.input.x,gKB.input.y,Black,White,(char*)"\0");
				}
				

				//从原底图中将 英/中 复制到显示图层里
				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
									  gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
									  gShowLay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
									  0x0c,gKB.pos[33].x2-gKB.pos[33].x1+1,gKB.pos[33].y2-gKB.pos[33].y1
									 );					
			}	
//			LT768_Print_Internal_Font_String(gKB.input.x,gKB.input.y,Black,White,(char*)"\0");
		}
//		/***********************中英文切换***********************/

/*		
		//符号输入功能切换
		else if(gKB.id==28)
		{
//			if(gKB.func==Numbers)
//			{
//				//从原底图里将 数字位 复制到显示图层里
//				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                      gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                      gShowLay,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                      0x0c,gKB.pos[29].x2-gKB.pos[29].x1,gKB.pos[29].y2-gKB.pos[29].y1
//				                     );
//			}
			 if((gKB.func==English)||(gKB.func==Chinese))
			{
				//从原底图里将 英/中  复制到显示图层里
				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
				                      gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
				                      gShowLay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
				                      0x0c,gKB.pos[33].x2-gKB.pos[33].x1+1,gKB.pos[33].y2-gKB.pos[33].y1
				                     );
			}
			
			//从原底图里将 小写位 复制到显示图层里
			LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
				                  gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
				                  gShowLay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
				                  0x0c,gKB.pos[19].x2-gKB.pos[19].x1+1,gKB.pos[19].y2-gKB.pos[19].y1
				                   );
			
			gKB.func = Symbol;    //按键功能设定为符号输入

			//从按下底图里将 符号位 复制到显示图层里
			LT768_BTE_Memory_Copy(gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
				                  gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
				                  gShowLay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
				                  0x0c,gKB.pos[28].x2-gKB.pos[28].x1+1,gKB.pos[28].y2-gKB.pos[28].y1
				                   );			
			LT768_Print_Internal_Font_String(gKB.input.x,gKB.input.y,White,White,(char*)"\0");
		}
*/
		
		//符号输入功能切换
		else if(gKB.id==28)
		{
//			if(gKB.func==Numbers)
//			{
//				//从原底图里将 数字位 复制到显示图层里
//				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                      gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                      gShowLay,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                      0x0c,gKB.pos[29].x2-gKB.pos[29].x1,gKB.pos[29].y2-gKB.pos[29].y1
//				                     );
//			}
			 if(gKB.func==Chinese)
			{
				//从原底图里将 英/中  复制到显示图层里
				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
				                      gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
				                      gShowLay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
				                      0x0c,gKB.pos[33].x2-gKB.pos[33].x1+1,gKB.pos[33].y2-gKB.pos[33].y1
				                     );
				
				//从按下底图里将 符号位 复制到显示图层里
				LT768_BTE_Memory_Copy(gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
														gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
														gShowLay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
														0x0c,gKB.pos[28].x2-gKB.pos[28].x1+1,gKB.pos[28].y2-gKB.pos[28].y1
														 );				
				
				gKB.func = Symbol;    //按键功能设定为符号输入
			}
			
			else if(gKB.func==English)
			{
				
				//从按下底图里将 符号位 复制到显示图层里
				LT768_BTE_Memory_Copy(gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
														gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
														gShowLay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
														0x0c,gKB.pos[28].x2-gKB.pos[28].x1+1,gKB.pos[28].y2-gKB.pos[28].y1
														 );				
				
			//从原底图里将 小写位 复制到显示图层里
			LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
				                  gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
				                  gShowLay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
				                  0x0c,gKB.pos[19].x2-gKB.pos[19].x1+1,gKB.pos[19].y2-gKB.pos[19].y1
				                   );				
				
				gKB.func = Symbol;    //按键功能设定为符号输入
				gKB.type = Small;
			}		

			 else if(gKB.func==Symbol)
			{
				
				//从原底图里将 符号位 复制到显示图层里
				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
														gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
														gShowLay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
														0x0c,gKB.pos[28].x2-gKB.pos[28].x1+1,gKB.pos[28].y2-gKB.pos[28].y1
														 );				
				
				gKB.func = English;    //按键功能设定为英文输入
			}				
			
//			LT768_Print_Internal_Font_String(gKB.input.x,gKB.input.y,White,White,(char*)"\0");
		}	
		
		
//		//数字输入功能切换
//		else if(gKB.id==29)
//		{

//			if(gKB.func==Symbol)
//			{
//				//从原底图里将 符号位 复制到显示图层里
//				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
//				                      gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
//				                      gShowLay,LCD_XSIZE_TFT,gKB.pos[28].x1,gKB.pos[28].y1,
//				                      0x0c,gKB.pos[28].x2-gKB.pos[28].x1,gKB.pos[28].y2-gKB.pos[28].y1
//				                     );
//			}
//			else if((gKB.func==English)||(gKB.func==Chinese))
//			{
//				//从原底图里将 英/中 切换位 复制到显示图层里
//				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
//				                      gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
//				                      gShowLay,LCD_XSIZE_TFT,gKB.pos[33].x1,gKB.pos[33].y1,
//				                      0x0c,gKB.pos[33].x2-gKB.pos[33].x1+1,gKB.pos[33].y2-gKB.pos[33].y1
//				                     );
//			}
//			
//			//从原底图里将 小写位 复制到显示图层里
//			LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
//				                  gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
//				                  gShowLay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
//				                  0x0c,gKB.pos[19].x2-gKB.pos[19].x1+1,gKB.pos[19].y2-gKB.pos[19].y1
//				                   );
//			
//			gKB.func = Numbers;  //按键输入功能设置为数字输入

//			//从按下底图里将 123数字位 复制到显示图层里
//			LT768_BTE_Memory_Copy(gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                  gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                  gShowLay,LCD_XSIZE_TFT,gKB.pos[29].x1,gKB.pos[29].y1,
//				                  0x0c,gKB.pos[29].x2-gKB.pos[29].x1+1,gKB.pos[29].y2-gKB.pos[29].y1
//				                   );
//			
//			LT768_Print_Internal_Font_String(gKB.input.x,gKB.input.y,White,White,(char*)"\0");
//		}
		
		//英文大小写切换
		if(gKB.id==19)
		{
			if(gKB.func==English)   //只有在按键功能为英文的前提下才会切换
			{
				if(gKB.type==Small)
				{
					gKB.type = Big;
					//从按下图里将 大写位 复制到显示图层里
					LT768_BTE_Memory_Copy(gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  gShowLay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  0x0c,gKB.pos[19].x2-gKB.pos[19].x1+1,gKB.pos[19].y2-gKB.pos[19].y1
										   );
//					LT768_Print_Internal_Font_String(gKB.input.x,gKB.input.y,White,White,(char*)"\0");
				}
				else
				{
					gKB.type = Small;
					//从原底图里将 小写位 复制到显示图层里
					LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  gBuf_Lay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  gShowLay,LCD_XSIZE_TFT,gKB.pos[19].x1,gKB.pos[19].y1,
										  0x0c,gKB.pos[19].x2-gKB.pos[19].x1+1,gKB.pos[19].y2-gKB.pos[19].y1
										   );
//					LT768_Print_Internal_Font_String(gKB.input.x,gKB.input.y,White,White,(char*)"\0");
				}
			}
		}
/***************************************************************************************************/
		
		
		//键盘输入功能
		else
		{

			switch(gKB.func)
			{
				case English:	ShowEnglish(gKB.id,buf);
											break;
				
				case Chinese:	ShowChinese(gKB.id,buf);
											break;
				
				case Symbol :   ShowSymbol(gKB.id,buf);
											break;
				
				case Numbers:   ShowNumbers(gKB.id,buf);
											break;
				
				default:      break;
			}

			if(gKB.func != Chinese)  //不是中文
				//清楚中文候选区域
				LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
									  gBuf_Lay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
									  gShowLay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
									  0x0c,526,44);

			//LCD显示对应的数据
			if(buf[0]!=0xff)
			{
				/*********************实现按键被按下的效果*********************/
				if(gKB.id<36)   //排除中文选择
				LT768_BTE_Memory_Copy(gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[gKB.id].x1,gKB.pos[gKB.id].y1,
									  gBuf_Lay_1,LCD_XSIZE_TFT,gKB.pos[gKB.id].x1,gKB.pos[gKB.id].y1,
				                      gShowLay,LCD_XSIZE_TFT,gKB.pos[gKB.id].x1,gKB.pos[gKB.id].y1,
				                      0x0c,gKB.pos[gKB.id].x2-gKB.pos[gKB.id].x1,gKB.pos[gKB.id].y2-gKB.pos[gKB.id].y1
				                     );
				clear_flag = 1;
 				/*********************实现按键被按下的效果*********************/
		
				Canvas_Image_Start_address(gShowLay);
				Canvas_image_width(LCD_XSIZE_TFT);
				
				//汉字输入法
				if(gKB.func==Chinese)
				{

					//清楚中文候选区域
					LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											gBuf_Lay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											gShowLay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											0x0c,526,44);
					
					//兼容在中文输入里新加入的，。和空格的输入		
					if((buf[0]==',' || buf[0]=='.') && gKB.input.end-32>gKB.input.x) 
					{
						Init_PY();
						if(buf[0]==',')
						{
							gKB.input.info[gKB.input.cnt++] = 0xA3;
							gKB.input.info[gKB.input.cnt++] = 0xAC;
							gKB.input.x+=32;
						}
						else if(buf[0]=='.')
						{
							gKB.input.info[gKB.input.cnt++] = 0xA1;
							gKB.input.info[gKB.input.cnt++] = 0xA3;
							gKB.input.x+=32;
						}				 
					}
					if(buf[0]==' '&& gKB.input.end>gKB.input.x)
					{
						Init_PY();
						gKB.input.info[gKB.input.cnt++] = buf[0];
						gKB.input.x+=16;
					}
					
					//只有当拼音被删除后才可以删除汉字		
					if(buf[0]==0xfe) 
					{
						if(gInputPY.cnt==0)	Cancel = 1;

						//删除显示的汉字
						if(Cancel==1)
						{
//							printf("in\r\n");
							if(gKB.input.x>gKB.input.start)
							{
								//通过更改 input 里的变量 进行删减
								if(gKB.input.info[gKB.input.cnt-1] <0xA0)  //.info[gKB.input.cnt] 一定是0，这句用于判断是中文还是英文
								{   //英文
									gKB.input.cnt--;
									gKB.input.x-=16;
									gKB.input.info[gKB.input.cnt] = 0;

								}
								else
								{   //中文
									gKB.input.cnt -=2;
									gKB.input.x -=32;
									gKB.input.info[gKB.input.cnt] = 0;
									gKB.input.info[gKB.input.cnt+1] = 0;
								}
							
								if(gKB.input.x<gKB.input.start) gKB.input.x = gKB.input.start;
								if(gKB.input.cnt>100) gKB.input.cnt = 0;
							}
						}
						
						//删除拼音缓存里的数据
						if(gInputPY.cnt>0)
						{
							gInputPY.cnt--;
							gInputPY.py[gInputPY.cnt] = 0;
							gInputPY.t9py = gInputPY.t9py>>4;
							if(gInputPY.cnt==0)	Cancel = 1;
							
							gKB.index = 0; //中文拼音 每次删除都会清0 候选中文的候选指针
						}
						else
						{
							Cancel = 0;
						}
					}
				
					//搜索拼音汉字
					Search_py(&gInputPY);  							
					
					//在候选白色框里显示汉字
					if(gInputPY.t9PY_addr!=NULL)   //gInputPY.t9PY_addr 这里是指从Flash里读回来的候选中文对应的GB2312码字符数组的首地址
					{
						if(buf[0]==0xfd)  //下一页
						{
							gKB.index += 22;  //每次加11个字
							if(gKB.index>=strlen((char*)gInputPY.t9PY_addr))
							{
								gKB.index = 0;
							}
						}
						
						/************************************用于处理候选字超出显示****************************************/
						Fontnum = 0;
						while((*(unsigned char*)(gInputPY.t9PY_addr+gKB.index+Fontnum)) !='\0')   //判断显示的候选中文的起点到最后一个字有多少个字
						{
							Fontnum++;
						}
						if(Fontnum>=18)  Fontnum = 18;             //最多显示11个字
						memset(Fontbuff,0,sizeof(Fontbuff));      //Fontbuff数组最大23个Byte
						memcpy(Fontbuff,(unsigned char*)(gInputPY.t9PY_addr+gKB.index),Fontnum);  //将字库后选中部分字复制到显示的Fontbuff 中
						/************************************用于处理候选字超出显示****************************************/

						val_blank = 10;
//						Set_Font_to_Font_Width(10);
//						LT768_Print_Outside_Font_String(KEY_X + 150,KEY_Y + 60,Black,Black,Fontnum,Fontbuff);  //显示候选的中文
						LT768_TFT_ShowString(KEY_X + 150,KEY_Y + 60,LCD_XSIZE_TFT,32,1,gFontAddr,Black,Black,Fontnum,Fontbuff);
						
						val_blank = 0;
//						Set_Font_to_Font_Width(0);

						if(((gKB.id>=36) && (gKB.id<=46)) && ((gKB.id-35)<=(Fontnum/2)))  //有汉字候选，并且选中的候选标号中有汉字
						{
							Font_flag_CH = 1;
						}
					}
					else
					{
						gKB.index = 0;
					}
					
					//在候选白色框里显示拼音
//					LT768_Print_Outside_Font_String(115,240,Black,Black,gInputPY.cnt,(unsigned char*)(gInputPY.py));
					LT768_TFT_ShowString(115,240,LCD_XSIZE_TFT,32,1,gFontAddr,Black,Black,gInputPY.cnt,(unsigned char*)(gInputPY.py));					
					
					//显示选中的汉字并清除汉字拼音
					if(gKB.id>35 && Font_flag_CH &&gKB.input.end-32>gKB.input.x)
					{
						Font_flag_CH = 0;

						pos = (gKB.id - 36)*2;
						gKB.input.info[gKB.input.cnt++] = *(gInputPY.t9PY_addr+gKB.index+pos);
						gKB.input.info[gKB.input.cnt++] = *(gInputPY.t9PY_addr+gKB.index+pos+1);
						gKB.input.x+=32;
						
						Init_PY();
						gKB.index = 0;
						
						//清除候选的中文和拼音
						LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											  gBuf_Lay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											  gShowLay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											  0x0c,526,44);
					}
					else if(gKB.id>35 && Font_flag_CH )
					{					
						Init_PY();
						gKB.index = 0;
						//清除候选的中文和拼音
						LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											  gBuf_Lay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											  gShowLay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											  0x0c,526,44);
					}						

					//在显示框显示中文
					LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
										  gBuf_Lay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
										  LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
										  0x0c,560,32);					
					Canvas_Image_Start_address(LAY_BUFF1);
					Canvas_image_width(LCD_XSIZE_TFT);
					
//					LT768_Print_Outside_Font_String(gKB.input.start,gKB.input.y,Black,White,gKB.input.cnt,gKB.input.info);
					LT768_TFT_ShowString(gKB.input.start,gKB.input.y,LCD_XSIZE_TFT,32,1,gFontAddr,Black,White,gKB.input.cnt,gKB.input.info);
					
					LT768_BTE_Memory_Copy(LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
										  LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
										  gShowLay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
										  0x0c,560,32);					

				}

				else 			 //非中文输入
				{
					//清楚中文候选区域
						LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											  gBuf_Lay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											  gShowLay,LCD_XSIZE_TFT,KEY_X + 8,KEY_Y + 54,
											  0x0c,526,44);
					
					if(buf[0]!=0xfe)    //不是删除键
					{
						if(buf[0]!=0xfd)
						{
							if(gKB.input.end>gKB.input.x)
							{
								gKB.input.info[gKB.input.cnt++] = buf[0];
								gKB.input.info[gKB.input.cnt] = 0;
								//LT768_Print_Internal_Font_String(gKB.input.x,gKB.input.y,White,White,(char*)buf);
								gKB.input.x+=16;
//								LT768_Print_Outside_Font_String(gKB.input.start,gKB.input.y,Black,White,gKB.input.cnt,gKB.input.info);
								
								LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  gBuf_Lay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  0x0c,560,32);	
								
								Canvas_Image_Start_address(LAY_BUFF1);
								Canvas_image_width(LCD_XSIZE_TFT);
								LT768_TFT_ShowString(gKB.input.start,gKB.input.y,LCD_XSIZE_TFT,32,1,gFontAddr,Black,White,gKB.input.cnt,gKB.input.info);

								LT768_BTE_Memory_Copy(LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  gShowLay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  0x0c,560,32);								
							}
							else if(gKB.input.end == gKB.input.x)
							{
//								LT768_Print_Outside_Font_String(gKB.input.start,gKB.input.y,Black,White,gKB.input.cnt,gKB.input.info);
								LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  gBuf_Lay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  0x0c,560,32);	
								
								Canvas_Image_Start_address(LAY_BUFF1);
								Canvas_image_width(LCD_XSIZE_TFT);
								LT768_TFT_ShowString(gKB.input.start,gKB.input.y,LCD_XSIZE_TFT,32,1,gFontAddr,Black,White,gKB.input.cnt,gKB.input.info);

								LT768_BTE_Memory_Copy(LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  gShowLay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  0x0c,560,32); 
							}
								
						}
					}
					else // 删除
					{
						if(gKB.input.x>gKB.input.start)
						{

							if(gKB.input.info[gKB.input.cnt-1] <0xA0)  //.info[gKB.input.cnt] 一定是0，这句用于判断是中文还是英文
							{   //英文
								gKB.input.cnt--;
								gKB.input.x-=16;
								gKB.input.info[gKB.input.cnt] = 0;

							}
							else
							{   //中文
								gKB.input.cnt -=2;
								gKB.input.x -=32;
								gKB.input.info[gKB.input.cnt] = 0;
								gKB.input.info[gKB.input.cnt+1] = 0;
							}
							
							//清除最终显示区的数据
								LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  gBuf_Lay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  0x0c,585,42);	
								
								Canvas_Image_Start_address(LAY_BUFF1);
								Canvas_image_width(LCD_XSIZE_TFT);
							//显示更新好的数据
							
//							LT768_Print_Outside_Font_String(gKB.input.start,gKB.input.y,Black,White,gKB.input.cnt,gKB.input.info);
							LT768_TFT_ShowString(gKB.input.start,gKB.input.y,LCD_XSIZE_TFT,32,1,gFontAddr,Black,White,gKB.input.cnt,gKB.input.info); 	
							
								LT768_BTE_Memory_Copy(LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  gShowLay,LCD_XSIZE_TFT,gKB.input.start,gKB.input.y,
													  0x0c,585,42);	
						}
						else if(gKB.input.x  == gKB.input.start)
						{
//							LT768_Print_Outside_Font_String(gKB.input.start,gKB.input.y,Black,White,gKB.input.cnt,gKB.input.info);
							LT768_TFT_ShowString(gKB.input.start,gKB.input.y,LCD_XSIZE_TFT,32,1,gFontAddr,Black,White,gKB.input.cnt,gKB.input.info); 
						}
					}
				}
			}
		}
		TP_Flag = 0;

//		printf("input.cnt:%d\r\n",gKB.input.cnt);
//		printf("input.x:%d\r\n",gKB.input.x);
//		printf("input.info:%s\r\n\r\n",gKB.input.info);

//		printf("PY.cnt:%d\r\n",gInputPY.cnt);
//		printf("PY.py:%s\r\n\r\n",gInputPY.py);
		
		return 1;
	}
	
/*	if(gCursorFlag)
	{
		LT768_BTE_Memory_Copy(gBuf_Lay,LCD_XSIZE_TFT,gKB.input.x,gKB.input.y,
							gBuf_Lay,LCD_XSIZE_TFT,gKB.input.x,gKB.input.y,
							LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.x,gKB.input.y,
							0x0c,16,32
						 );	
		
		Canvas_Image_Start_address(LAY_BUFF1);
		Canvas_image_width(LCD_XSIZE_TFT);
		LT768_TFT_ShowString(gKB.input.x,gKB.input.y,LCD_XSIZE_TFT,32,1,gFontAddr,Black,White,1,(u8*)&gCursor_val);
		
		LT768_BTE_Memory_Copy(LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.x,gKB.input.y,
							LAY_BUFF1,LCD_XSIZE_TFT,gKB.input.x,gKB.input.y,
							gShowLay,LCD_XSIZE_TFT,gKB.input.x,gKB.input.y,
							0x0c,16,32
						 );	
		gCursorFlag = 0;
	}		
*/

	return 1;
}




