亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? english_chinese_test.c

?? 某中文手寫輸入法公司的手寫識別輸入的實例源程序。
?? C
?? 第 1 頁 / 共 2 頁
字號:
#define __linux__#ifdef WIN32#include <windows.h>#include <tchar.h>#include <conio.h>#endif#include <stdio.h>#include <string.h>#include <stdlib.h>#include "GBGlobal.h"#define CP_GB       936#ifdef __linux__#include <locale.h>#include <stdio.h>#include <sys/ioctl.h>#include <termios.h>#define VK_ESCAPE 13#define VK_RETURN 27#define VK_BACK 8#define _wcstombs(mbs, wcs, mbslen)   wcstombs(mbs, wcs, mbslen)#else#define _wcstombs(mbs, wcs, mbslen)   WideCharToMultiByte(CP_ACP, 0, wcs, wcslen(wcs) + 1, mbs, mbslen, NULL, NULL)#endifunsigned short historyISNs[1024];int historyISNLen = 0;/************************************************************************//*								MACRO                                   *//************************************************************************/#define IS_DIR(k)   ((k) == C_UP || (k) == C_DOWN || (k) == C_LEFT || (k) == C_RIGHT)#define DIR_CHR     224#define C_UP        -72#define C_DOWN      -80#define C_LEFT      -75#define C_RIGHT     -77#define F_CHR       0#ifdef WIN32#define C_F1        -59#define C_F10       -68#define GET_SEL_INDEX(c)    (C_F1 - (c)) #define IS_F(k)     ((k) >= C_F10 && (k) <= C_F1)#else#define C_F1        'A'#define C_F10       ('A' + 9)#define GET_SEL_INDEX(c)    ((c) - C_F1) #define IS_F(k)     ((k) >= C_F1 && (k) <= C_F10)#define VK_UP       'I'#define VK_DOWN     'K'#define VK_LEFT     'J'#define VK_RIGHT    'L'#endif#define INDEX_TO_NUM(index)     (0x30 + ((index) + 1) % 10)#define ARRAY_DIM(array)                        (sizeof((array)) / sizeof((array)[0]))/************************************************************************//*						      Constant                                  *//************************************************************************/#define CHN_UDBDATA_LEN		1024*5 //中文自造詞數組大小(bytes),至少5K#define EN_UDBDATA_LEN		1024*2 //英文自造詞數組大小(bytes),至少2K#define FONT_WIDTH			12 //假定手機使用的字體為12 * 12#define PREEDIT_WIDTH		120 //假定編輯欄寬度為120(實際用來繪制音節、部首的像素寬度)/************************************************************************//*							     Data                                   *//************************************************************************/extern const unsigned long prv_dataArray[] ; //中文數據extern const unsigned long prv_enDataArray[] ; //英文數據unsigned long gbChnSMData[CHN_UDBDATA_LEN / sizeof(unsigned long)]; // 中文自造詞數組unsigned long gbEnSMData[EN_UDBDATA_LEN / sizeof(unsigned long)]; // 英文自造詞數組/************************************************************************//*							Func Declaration                            *//************************************************************************//* 函數功能: 中英文引擎初始化 */enum GBMMIReturn GBIMInit(GBEvent * pEvent);enum GBMMIReturn GBDrawPreEdit();void GBDrawCandidates();int mygetch();enum GBKey inputToGBKey(int input);int SelectIM();long GBGetStringWidth(const char * str_text);long GBGetWStringWidth(const unsigned short * str_text);void GBCombineString();void GBAddChar(GBUINT16 * str,GBUINT16 len);void ShowScreen();int UpToScreenW(const unsigned short * isns, size_t len);int UpToScreenA(const GBCHAR * str, size_t len);void ShowInputMethodInfo(enum __GBMMIInputMode inputMode);void GBDrawCandPageArrow();void ShowInput();void GBLoadSHData();void GBSaveSHData();#ifdef __linux__// 把UTF-8轉換成Unicodevoid UTF_8ToUnicode(unsigned short* pOut,char *pText){	char* uchar = (char *)pOut;	uchar[1] = ((pText[0] & 0x0F) << 4) + ((pText[1] >> 2) & 0x0F);	uchar[0] = ((pText[1] & 0x03) << 6) + (pText[2] & 0x3F);	return;}#define ARY_CLEAN(ary) memset(ary,0,sizeof(ary));#define unicodeStr2utf8(uStr,utf8Str,uStrLth)                \do{                                                          \    unsigned short temp[2];                                  \		unsigned short *pt =uStr;                                \		unsigned short temputf8[10];                             \                                                             \		ARY_CLEAN(utf8Str);                                      \    while(*pt && (pt -uStr <uStrLth))                        \		{                                                        \        temp[0] =*pt++;                                      \        temp[1] =0;                                          \        ARY_CLEAN(temputf8);                                 \				UnicodeToUTF_8(temputf8,temp);                       \        strcat(utf8Str,temputf8);                            \		}                                                        \}while(0);#define U2C(u,c)														\do{                                         \ARY_CLEAN(putf_8);\unsigned short *pu =u;                      \unsigned char *pc =c;                      \while(*pu) *pc++ =*pu++;                    \}while(0);//void unicodeStr2utf8(unsigned short *uStr,char *utf8Str,int uStrLth)//{//    unsigned short temp[2];//		unsigned short *pt =uStr;//		unsigned short temputf8[10];////		ARY_CLEAN(utf8Str);//    while(*pt && (pt -uStr <uStrLth))//		{//        temp[0] =*pt++;//        temp[1] =0;//        ARY_CLEAN(temputf8);//				UnicodeToUTF_8(temputf8,temp);////printf("-----------------------------%s\n",temputf8);//        strcat(utf8Str,temputf8);//		}//}// Unicode 轉換成UTF-8 int UnicodeToUTF_8(char* pOut,unsigned short* pText){	// 注意 WCHAR高低字的順序,低字節在前,高字節在后	char* pchar = (char *)pText;  unsigned short u =pText[0];//  if((*pchar <= 'z' && *pchar >='a')|| (*pchar <= 'Z' && *pchar >='A'))//  {//     *pOut = *pchar;//     return 1;//	}//0000 - 007F 0xxxxxxx//0080 - 07FF 110xxxxx 10xxxxxx//0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx//printf("******************0x%x\n",u);//printf("------------------0x%x\n",pText[0]);  if(pText[0] >= 0x0000 && pText[0] <= 0x007F)  {        pOut[0] = (char)pText[0];//printf("return 1");        return 1;	}  if(pText[0] >= 0x0080 && pText[0] <= 0x07FF)  {				pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4));				pOut[1] = (0x80 | ((pchar[1] & 0x0F) << 2)) + ((pchar[0] & 0xC0) >> 6);//printf("return 2");        return 2;	}	if(pText[0] >= 0x0800 && pText[0] <= 0xFFFF)	{					pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4));					pOut[1] = (0x80 | ((pchar[1] & 0x0F) << 2)) + ((pchar[0] & 0xC0) >> 6);					pOut[2] = (0x80 | (pchar[0] & 0x3F));//printf("return 3");	}		return 3;}//int getch() //{//				struct termios oldt,newt;//				int ch;//				tcgetattr( STDIN_FILENO, &oldt );//				newt = oldt;//				newt.c_lflag &= ~( ICANON | ECHO );//				tcsetattr( STDIN_FILENO, TCSANOW, &newt );//				ch = getchar();//				tcsetattr( STDIN_FILENO, TCSANOW, &oldt );//				return ch;//}int getch(){	char ch;	struct termios save, ne;	ioctl(0, TCGETS, &save);	ioctl(0, TCGETS, &ne);	ne.c_lflag &= ~(ECHO | ICANON);	ioctl(0, TCSETS, &ne);	read(0, &ch, 1);	ioctl(0, TCSETS, &save);	return ch;}#endifint main(int argc, char ** argv){	enum GBMMIReturn ret = GBMR_OK;	GBEvent event;	event.nType = GBET_In_Init;//	event.param1 = GBIM_Chn_Pinyin;	event.param1 = GBIM_Korean;	event.param2 = GBL_Chinese;	GBIMInit(&event);//開機的時候,引擎初始化一次	system("clear");		while(SelectIM())	{		//ShowInputMethodInfo((enum __GBMMIInputMode)g_gbMMIGlobals.outputInfo.nInputMode);		//ShowInput();		system("clear");					do		{			int input;			enum GBKey key;			/*			   {			//電話薄反查碼表,適用于拼音,筆劃或者組合輸入模式中,			//通過漢字的內碼,返回此漢字的拼音,筆劃或是組合的按鍵序列字符串			char buffer[32];//buffer的長度不小于32			event.nType = GBET_In_ReSearch;			event.param1 = 0x4e00;//需要查詢的漢字內碼,0x4e00為"一"的unicode。			event.param2 = buffer;//			GBHandleInputEvent(&event);							}			 */					ShowInputMethodInfo((enum __GBMMIInputMode)g_gbMMIGlobals.outputInfo.nInputMode);			input = mygetch();   			system("clear");  		      	key = inputToGBKey(input);			if(key == GBKEY_NULL)			{				break;			}			event.nType = GBET_In_Key;			event.param1 = key;			event.param2 = GBKT_Down;//KeyType: Down			ret = GBHandleInputEvent(&event);//按鍵處理				/*			   在觸摸屏虛擬鍵盤模式下直接點擊某個候選上屏的調用方法如下:							   event.nType = GBET_In_SelCandidate;			   event.param1 = 2 ;			   ret = GBHandleInputEvent(&event);//按鍵處理				   在觸摸屏虛擬鍵盤模式下直接點擊某個音節進行精確匹配候選的方法如下:			   event.nType = GBET_In_SetPinYinIndex;			   event.param1 = 1;			   ret = GBHandleInputEvent(&event);//按鍵處理								 */			if(ret == GBMR_OK)			{				GBCombineString(); //上屏				if(g_gbMMIGlobals.outputInfo.isShowIMWin) 				{					GBDrawPreEdit();   //在手機上畫編輯欄					GBDrawCandidates();//在手機上畫候選欄					GBDrawCandPageArrow();//畫候選翻頁指示箭頭										}				//相應的刷新工作			}			else if(ret == GBMR_Ignored)			{								if(key == GBKEY_Down)				{					//手機RichEdit區下移光標				}				else if(key == GBKEY_Up)				{					//手機RichEdit區上移光標				}				else if(key == GBKEY_Left)				{					//手機RichEdit區左移光標				}				else if(key == GBKEY_Right)				{					//手機RichEdit區右移光標				}				else if(key == GBKEY_OK)				{					//退到手機上級菜單				}				else if(key == GBKEY_Back)				{					/*					   if(短按)					   {						   刪除Edit一個字符												   }					   else if(長按)					   {					   刪除Edit所有的文本					   }					 */				}								//相應的手機刷新工作			}					ShowInput();		}while(1);	}#ifdef __GBSHDATA		/*把自造詞數據寫入到文件,關機之前保存自造詞數據文件*/	GBSaveSHData();#endif		return 0 ;}/************************************************************************//*					       Func Define                                  *//************************************************************************/enum GBMMIReturn GBIMInit(GBEvent * pEvent){  unsigned short okToBeginMakeWordStr[]={'S','p','e','l','l','?',0};  unsigned short okToAddMakeWordStr[]={'A','d','d','?',0};//g_gbMMIGlobals.initData.sizGBMMIGlobals  =sizeof(g_gbMMIGlobals);//g_gbMMIGlobals.initData.sizGBMMIGlobals  =0;	g_gbMMIGlobals.initData.chnInitData.pLDBData = prv_dataArray;//中文數據地址	g_gbMMIGlobals.initData.chnInitData.nCandDesireLenInWord = 7;//候選字數之和最大為8	g_gbMMIGlobals.initData.chnInitData.nInterpunctionDesireLen = 8;//一頁標點最多8個#if EBD_USE_DESIRE_COUNT > 0	g_gbMMIGlobals.initData.chnInitData.nCandDesireCount = 6;//候選個數最大為8#endif#ifdef __GBSHDATA	g_gbMMIGlobals.initData.chnInitData.pUDBData = gbChnSMData;//中文自造詞數組	g_gbMMIGlobals.initData.chnInitData.nUDBDataLen = CHN_UDBDATA_LEN;//中文自造詞數組長度#else	g_gbMMIGlobals.initData.chnInitData.pUDBData = 0;	g_gbMMIGlobals.initData.chnInitData.nUDBDataLen = 0;	#endif	g_gbMMIGlobals.initData.latinInitData[0].nLanguageType = GBL_English;//多語言類型為英語	g_gbMMIGlobals.initData.latinInitData[0].pLDBData = prv_enDataArray;//英文數據#ifdef __GBSHDATA	g_gbMMIGlobals.initData.latinInitData[0].pUDBData = gbEnSMData;//英文自造詞數組	g_gbMMIGlobals.initData.latinInitData[0].nUDBDataLen = EN_UDBDATA_LEN;//英文自造詞組大小,以byte為單位//	gb_strcpy(g_gbMMIGlobals.initData.latinInitData[0].okToBeginMakeWordStr,L"Spell?");//自造詞提示信息Spell?//	gb_strcpy(g_gbMMIGlobals.initData.latinInitData[0].okToAddMakeWordStr,L"Add?");////自造詞提示信息Add?	gb_strcpy(g_gbMMIGlobals.initData.latinInitData[0].okToBeginMakeWordStr,okToBeginMakeWordStr);//自造詞提示信息Spell?	gb_strcpy(g_gbMMIGlobals.initData.latinInitData[0].okToAddMakeWordStr,okToAddMakeWordStr);////自造詞提示信息Add?#else	g_gbMMIGlobals.initData.latinInitData[0].pUDBData = 0;	g_gbMMIGlobals.initData.latinInitData[0].nUDBDataLen = 0;#endif	g_gbMMIGlobals.initData.latinInitData[0].nCandDesireCountInWord = 9;//最大英文候選個數	g_gbMMIGlobals.initData.latinInitData[0].nCandDesireLenInWord = 20;//一頁候選最多字符數,包括候選間的間隔	g_gbMMIGlobals.initData.bChnEnConvert = 1;//是否中英文切換	g_gbMMIGlobals.initData.bUpNumber =1;//是否數字上屏	g_gbMMIGlobals.initData.bUseLongPhress = 0;//是否長按	//不同平臺計算char字符串的寬度的函數是不同的,應該根據實際情況實現函數GBGetStringWidth	g_gbMMIGlobals.uiInfo.fpGetStrWidth = GBGetStringWidth;	//不同平臺計算wchar字符串的寬度的函數是不同的,應該根據實際情況實現函數GBGetWStringWidth	g_gbMMIGlobals.uiInfo.fpGetWCharWidth= GBGetWStringWidth;	g_gbMMIGlobals.uiInfo.nsyllableSplit = FONT_WIDTH / 2;//音節項之間的間隔(單位像素)	g_gbMMIGlobals.uiInfo.npreEditWidth = 120;//模擬真實手機編輯欄的寬度(單位像素)#ifdef __GBSHDATA	/*加載自造詞數據*/		GBLoadSHData();#endif	return GBHandleInputEvent(pEvent);}#ifdef __linux__enum GBKey inputToGBKey(int input){	enum GBKey key = GBKEY_NULL;	switch(input)	{		case '0':			key = GBKEY_0;			break;			case '1':			key = GBKEY_1;			break;		case '2':			key = GBKEY_2;			break;		case '3':			key = GBKEY_3;			break;		case '4':			key = GBKEY_4;			break;		case '5':			key = GBKEY_5;			break;		case '6':			key = GBKEY_6;			break;		case '7':			key = GBKEY_7;			break;		case '8':			key = GBKEY_8;			break;		case '9':			key = GBKEY_9;			break;		//	case '*':	//		key = GBKEY_Star;	//		break;	//	case '#':	//		key = GBKEY_Sharp;	//		break;		case 66:			key = GBKEY_Down;			break;		case 65:			key = GBKEY_Up;			break;		case 127:		case 8:			key = GBKEY_Back;			break;		case 68:			key = GBKEY_Left;			break;		case 67:			key = GBKEY_Right;			break;		case 32:			key = GBKEY_OK;			break;		case 'i':			key = GBKEY_TuchScreen_Up;			break;		case 'k':			key = GBKEY_TuchScreen_Down;			break;		default:			break;	}	return key;}#elseenum GBKey inputToGBKey(int input){	enum GBKey key = GBKEY_NULL;	switch(input)	{		case VK_ESCAPE:			key = GBKEY_NULL;			break;		case '0':			key = GBKEY_0;			break;			case '1':			key = GBKEY_1;			break;		case '2':			key = GBKEY_2;			break;		case '3':			key = GBKEY_3;			break;		case '4':			key = GBKEY_4;			break;		case '5':			key = GBKEY_5;			break;		case '6':			key = GBKEY_6;			break;		case '7':			key = GBKEY_7;			break;		case '8':			key = GBKEY_8;			break;		case '9':			key = GBKEY_9;			break;			case '*':			key = GBKEY_Star;			break;		case '#':			key = GBKEY_Sharp;			break;		case 'K':		case C_DOWN:			key = GBKEY_Down;			break;		case 'I':		case C_UP:			key = GBKEY_Up;			break;		case VK_BACK:			key = GBKEY_Back;			break;		case 'J':		case C_LEFT:			key = GBKEY_Left;			break;		case 'L':		case C_RIGHT:			key = GBKEY_Right;			break;		case VK_RETURN:			key = GBKEY_OK;			break;		default:			key = input;			break;	}	return key;}#endifenum GBMMIReturn GBDrawPreEdit(){	enum GBMMIReturn rs = GBMR_OK;	int i,ret;	//printf("編輯欄: \r\n");	char putf_8[256];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久久最新网址| 美女精品自拍一二三四| 午夜成人在线视频| 97精品视频在线观看自产线路二| 欧美一区二区三区成人| 亚洲精品日产精品乱码不卡| 韩国欧美国产1区| 56国语精品自产拍在线观看| 中文字幕中文乱码欧美一区二区| 蜜臀久久99精品久久久久久9| 欧洲亚洲国产日韩| 亚洲色图19p| 成人18视频在线播放| 久久精品夜色噜噜亚洲a∨| 男女激情视频一区| 欧美日本一区二区| 亚洲综合一区二区三区| 91香蕉国产在线观看软件| 日本一区二区三区在线不卡| 久久99国产精品麻豆| 日韩一区二区三区视频在线观看| 性久久久久久久久| 678五月天丁香亚洲综合网| 亚洲成a人在线观看| 在线视频欧美区| 一区二区三区日韩| 欧美日韩免费电影| 亚洲图片一区二区| 欧美美女一区二区三区| 亚洲国产日产av| 7777精品伊人久久久大香线蕉的| 日韩国产欧美在线播放| 欧美一级黄色录像| 麻豆精品一区二区综合av| 日韩色视频在线观看| 国产一区二区三区日韩| 国产午夜精品一区二区三区嫩草| 国产精品一区三区| 中文字幕av一区二区三区免费看| 国产成人精品三级| 亚洲欧美一区二区在线观看| 91免费观看视频在线| 亚洲一区二区av在线| 欧美日韩和欧美的一区二区| 日本强好片久久久久久aaa| 欧美一级欧美一级在线播放| 久久99深爱久久99精品| 国产清纯白嫩初高生在线观看91| av一本久道久久综合久久鬼色| 亚洲丝袜制服诱惑| 69堂成人精品免费视频| 国内外成人在线| 国产精品久久久久久久久搜平片| 91免费国产视频网站| 亚洲444eee在线观看| 26uuu成人网一区二区三区| 成人丝袜18视频在线观看| 亚洲美女视频在线| 日韩亚洲电影在线| 91在线国内视频| 青草国产精品久久久久久| 国产三级一区二区三区| 在线免费观看日本一区| 久久精品国产99久久6| 中文字幕在线免费不卡| 欧美色偷偷大香| 国产福利91精品一区二区三区| 亚洲裸体在线观看| 精品久久久久久久久久久久久久久久久| 成人一区二区三区视频 | 欧美福利一区二区| 国产一区不卡在线| 亚洲福中文字幕伊人影院| 欧美zozozo| 欧美日韩一区二区三区视频| 国产一区二区女| 偷拍亚洲欧洲综合| 亚洲色欲色欲www| 精品国产污污免费网站入口 | 日韩理论片在线| 91精品欧美久久久久久动漫| 成人综合婷婷国产精品久久蜜臀| 午夜精品久久久久影视| 国产精品女人毛片| 国产亚洲精品精华液| 3d动漫精品啪啪一区二区竹菊 | 国产一区二区网址| 美女在线一区二区| 日本大香伊一区二区三区| 久久av中文字幕片| 午夜视频一区二区三区| 亚洲同性gay激情无套| 久久夜色精品一区| 91精品国产综合久久福利 | 国内精品视频一区二区三区八戒| 一区二区免费视频| 亚洲私人影院在线观看| 久久久99精品免费观看不卡| 日韩一区二区三区在线| 7777精品伊人久久久大香线蕉的 | 亚洲福利视频导航| 亚洲色欲色欲www| 欧美国产精品劲爆| 国产婷婷精品av在线| 精品处破学生在线二十三| 日韩一区二区高清| 欧美人成免费网站| 欧美日韩视频在线观看一区二区三区| eeuss鲁片一区二区三区在线看| 国产在线精品一区二区不卡了| 免费成人在线播放| 美女视频黄 久久| 蜜桃视频第一区免费观看| 日韩1区2区3区| 麻豆高清免费国产一区| 另类专区欧美蜜桃臀第一页| 午夜精品一区在线观看| 午夜视频一区二区三区| 日本aⅴ精品一区二区三区| 热久久久久久久| 韩国一区二区视频| 成人综合激情网| 91一区二区三区在线观看| 91亚洲永久精品| 欧美网站一区二区| 日韩三级av在线播放| 精品粉嫩aⅴ一区二区三区四区| 26uuu精品一区二区三区四区在线| 精品国产免费一区二区三区香蕉| 久久男人中文字幕资源站| 国产精品不卡一区二区三区| 一区二区三区在线观看欧美 | 在线91免费看| 欧美不卡视频一区| 中文乱码免费一区二区| 亚洲欧美另类久久久精品| 亚洲va在线va天堂| 极品瑜伽女神91| 成人av免费网站| 欧美久久久一区| 久久女同精品一区二区| 亚洲精品v日韩精品| 琪琪久久久久日韩精品| 国产成人在线视频免费播放| 色综合一区二区| 欧美一区二区在线看| 久久噜噜亚洲综合| 亚洲在线视频网站| 国内外精品视频| 欧美性大战久久久久久久| 2023国产精华国产精品| 亚洲精品乱码久久久久久久久 | 久久久久亚洲综合| 亚洲激情图片qvod| 精品一区二区在线视频| 99久久伊人精品| 日韩你懂的电影在线观看| 亚洲天堂av一区| 国产一区久久久| 欧美色图免费看| 国产精品视频第一区| 视频在线观看一区二区三区| www.亚洲人| 久久综合久色欧美综合狠狠| 一区二区三区四区不卡在线| 国内成+人亚洲+欧美+综合在线| 色先锋久久av资源部| 久久久五月婷婷| 天堂影院一区二区| 91免费看视频| 亚洲国产精品av| 激情文学综合网| 欧美嫩在线观看| 一区二区三区在线观看网站| 成人精品国产免费网站| 欧美r级电影在线观看| 亚洲成人免费av| 一本色道a无线码一区v| 亚洲国产成人午夜在线一区| 久久精品国产99久久6| 91精品在线观看入口| 性欧美大战久久久久久久久| 91国产免费看| 一区二区欧美国产| 色哟哟欧美精品| 国产精品久久久久永久免费观看| 国产精品自拍一区| 欧美精品一区二区三区久久久| 亚洲午夜久久久久中文字幕久| 色综合久久久久综合体| 国产精品免费av| 不卡在线视频中文字幕| 国产精品情趣视频| 国产91精品欧美| 国产精品妹子av| av亚洲精华国产精华精| 亚洲激情五月婷婷| 欧美性感一类影片在线播放| 午夜在线成人av| 欧美一区二区啪啪|