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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hzinput.c

?? 這是針對 Linux (i386)平臺的 minigui 3.6.2 開發(fā)包(MiniGUI-Processes 運行模式)。
?? C
?? 第 1 頁 / 共 4 頁
字號:
/*** $Id: hzinput.c,v 1.61.10.1 2005/02/16 06:23:31 weiym Exp $**** hzinput.c: The GB2312 IME window.**** Orignally by KANG Xiaoning, some code from cce by He Rui.**** Copyright (C) 1998, 1999 He Rui (herui@cs.duke.edu)** Copyright (C) 1999 Kang Xiaoning.** Copyright (C) 2000 Zheng Xiang.** Copyright (C) 2000, 2001, 2002 Wei Yongming.** Copyright (C) 2003 Feynman Software.**** Current maintainer: Wei Yongming** Create date: 1999/04/01**** Used abbreviations:**  ime: input method**  punc: punctuate mark***/ /*** This program is free software; you can redistribute it and/or modify** it under the terms of the GNU General Public License as published by** the Free Software Foundation; either version 2 of the License, or** (at your option) any later version.**** This program is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the** GNU General Public License for more details.**** You should have received a copy of the GNU General Public License** along with this program; if not, write to the Free Software** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*//*** Modify records:****  Who             When        Where           For What**-----------------------------------------------------------------------------**  WEI Yongming    1999/06/14  Tsinghua        Message dispatching**  GONG Xiaorui    1999/07/01  HongShiFang     Soft keyboard**  WEI Yongming    1999/07/17  Tsinghua        Add some local functions**  WEI Yongming    1999/08/24  Tsinghua        Remove soft keyboard.**  WEI Yongming    1999/08/29  Tsinghua        Handle some special keys.**  Wei Yongming    1999/09/01  Tsinghua        Translat punc marks.**  Wei Yongming    1999/09/01  Tsinghua        Translat punc marks.**  Wei Yongming    2000/11/06  BluePoint       Merge pinyin module by Zheng Xiang.**** TODO:*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include "common.h" #include "minigui.h" #include "gdi.h" #include "window.h" #include "control.h" #include "endianrw.h" #include "misc.h"#include "hzinput.h"#ifdef _IME_GB2312_PINYIN#include "pinyin.h"#endif/************ private functions *******************/static BOOL hz_input_init(void);static void hz_input_done(void);static void unload_input_table(int i);static BOOL hz_filter(unsigned char key, LPARAM lParam);static int toggle_input_method(void);static void toggle_half_full(void);static void set_active_input_method(int);static void refresh_input_method_area(HWND hwnd, HDC hDC);static void DispSelection(HDC hDC);static void FindMatchKey(void);static void FillMatchChars(int j);static void FillAssociateChars(int index);static void FindAssociateKey(int index);static hz_input_table* IntCode_Init(void);static void IntCode_FindMatchKey(void);static void IntCode_FillMatchChars(int index);static void intcode_hz_filter(unsigned char key,LPARAM lParam);/*************************************************************************** *                           variable defines                              * ***************************************************************************/#define VERSION_STRING    "Chinese Input"static BOOL bTwoLines;static char ime_tab_path [MAX_PATH + 1];static const unsigned char	fullchar[]	 =	" !”#$%&’()*+,-./0123456789:;<=>?"	"@ABCDEFGHIJKLMNOPQRSTUVWXYZ〔\〕^□"	"‘abcdefghijklmnopqrstuvwxyz{|}~  ";#define CPUNCTYPE_1TO1      0#define CPUNCTYPE_1TO2      1#define CPUNCTYPE_CYCLE     2#define CTRLBTN_WIDTH       16#define CTRLBTN_HEIGHT      16typedef struct PuncMark{    unsigned char   epunc;    int             type;    int             currone;          // only for cycle    unsigned char*  cpunc;}PUNCMARK;static PUNCMARK puncmark[] = {    {'`', 0, 0, "·"},    {'~', 0, 0, "~"},    {'!', 0, 0, "!"},    {'@', 0, 0, "℃"},    {'#', 0, 0, "#"},    {'$', 0, 0, "¥"},    {'%', 0, 0, "%"},    {'^', CPUNCTYPE_1TO2, 0, "……"},    {'&', 0, 0, "§"},    {'*', 0, 0, "×"},    {'_', CPUNCTYPE_1TO2, 0, "——"},    {'(', CPUNCTYPE_CYCLE, 0, "()"},    {')', CPUNCTYPE_CYCLE, 0, "〔〕"},    {'{', CPUNCTYPE_CYCLE, 0, "《》"},    {'}', CPUNCTYPE_CYCLE, 0, "〈〉"},    {'[', CPUNCTYPE_CYCLE, 0, "〖〗"},    {']', CPUNCTYPE_CYCLE, 0, "【】"},    {'\\', 0, 0, "÷"},    {'|', 0, 0, "※"},    {';', 0, 0, ";"},    {':', 0, 0, ":"},    {'\'', CPUNCTYPE_CYCLE, 0, "‘’"},    {'\"', CPUNCTYPE_CYCLE, 0, "“”"},    {',', 0, 0, ","},    {'.', 0, 0, "。"},    {'<', CPUNCTYPE_CYCLE, 0, "「」"},    {'>', CPUNCTYPE_CYCLE, 0, "『』"},    {'?', 0, 0, "?"},    {'/', 0, 0, "、"}};static int IsOpened;        /* 1 for opened, 0 for closed */static int IsHanziInput;    /* 0 for ascii, 1 for hanzi input */static int IsFullChar;      /* 0 for half char, 1 for full char */static int IsFullPunc;      /* 0 for half punctuate marks, 1 for full marks */ static int CurIME;static int nIMENr;          /* effetive IME method number */static HWND sg_hTargetWnd = HWND_DESKTOP; // target window of ime.static hz_input_table *input_table[NR_INPUTMETHOD],*cur_table = NULL;static char seltab[16][MAX_PHRASE_LENGTH];static int CurSelNum=0;   /* Current Total Selection Number */static unsigned long InpKey[MAX_INPUT_LENGTH],save_InpKey[MAX_INPUT_LENGTH];   /* Input key buffer */static int InputCount,InputMatch, StartKey,EndKey;static int save_StartKey,save_EndKey, save_MultiPageMode,            save_NextPageIndex, save_CurrentPageIndex;static int NextPageIndex,CurrentPageIndex,MultiPageMode;/* When enter MultiPageMode:   StartKey .... CurrentPageIndex .... NextPageIndex .... EndKey */static unsigned long val1, val2,key1,key2;static int IsAssociateMode;static int CharIndex[15];   // starting index of matched char/phrasesstatic const BITMAP* sg_bmpIME;	// the bmp of the IME control buttonstatic int UseAssociateMode = 0;/* 6 bit a key mask */static const unsigned long mask[]={  0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,   0x3F000000, 0x3FFC0000, 0x3FFFF000, 0x3FFFFFC0, 0x3FFFFFFF, 0x3FFFFFFF,  0x3FFFFFFF, 0x3FFFFFFF, 0x3FFFFFFF, 0x3FFFFFFF, 0x3FFFFFFF, 0x3FFFFFFF};/*************************************************************************** *                          some local functions                           * ***************************************************************************/static hz_input_table* load_input_method(char *filename){#if MGUI_BYTEORDER == MGUI_BIG_ENDIAN  int i;#endif  int  nread;  FILE *fd;  char phrase_filename[100],assoc_filename[100];  hz_input_table *table;    table = calloc (1, sizeof(hz_input_table));  if (table == NULL)    return NULL;  fd = fopen(filename, "r");  if (fd == NULL) {    free (table);    return NULL;  }  nread = fread(table, sizeof(hz_input_table),1,fd);  if (nread != 1) {    goto fail;  }#if MGUI_BYTEORDER == MGUI_BIG_ENDIAN  table->TotalKey = ArchSwap32(table->TotalKey);  table->MaxPress = ArchSwap32(table->MaxPress);  table->MaxDupSel= ArchSwap32(table->MaxDupSel);  table->TotalChar= ArchSwap32(table->TotalChar);  table->PhraseNum= ArchSwap32(table->PhraseNum);  for (i = 0; i < 64; i++) {    table->KeyIndex [i] = ArchSwap16(table->KeyIndex[i]);  }#endif  if( strcmp(MAGIC_NUMBER, table->magic_number) ) {    goto fail;  }  table->item = (ITEM *)malloc (sizeof(ITEM) * table->TotalChar);   if ( table->item == NULL ) {    goto fail;  }   if (fread (table->item, sizeof(ITEM), table->TotalChar, fd) < table->TotalChar)    goto fail;#if MGUI_BYTEORDER == MGUI_BIG_ENDIAN  for (i = 0; i < table->TotalChar; i++) {      table->item[i].key1 = ArchSwap32(table->item[i].key1);      table->item[i].key2 = ArchSwap32(table->item[i].key2);      table->item[i].frequency = ArchSwap16(table->item[i].frequency);  }#endif  fclose (fd);   if (table->PhraseNum > 0) {     strcpy( phrase_filename, filename );     strcat( phrase_filename, ".phr" );     strcpy( assoc_filename, filename );     strcat( assoc_filename, ".lx");          table->PhraseFile = fopen( phrase_filename, "r" );     table->AssocFile = fopen( assoc_filename, "r");     if (table->PhraseFile == NULL || table->AssocFile == NULL) {          printf("Load Phrase/Assoc File error!\n");          free(table->item);          free(table);          return NULL;     }  }  else {       table->PhraseFile = table->AssocFile = NULL;  }  return table;fail:  free (table->item);  free (table);  fclose (fd);  return NULL;}static void free_input_method(hz_input_table *table){    free(table->item);    free(table);}static void ClrIn(void){  bzero( InpKey,   sizeof( InpKey   ) );  bzero( seltab, sizeof( seltab ) );  MultiPageMode = NextPageIndex = CurrentPageIndex = 0;  CurSelNum = InputCount = InputMatch = 0;  IsAssociateMode = 0;   /* lian xiang */}static void FindAssociateKey(int index){    FILE *fp = cur_table->AssocFile;    int ofs[2],offset;       if (index < 0xB0A1)     {       StartKey = EndKey = 0;       return;  /* no match */    }         offset = (index / 256 - 0xB0) * 94 + index % 256 - 0xA1;     fseek(fp, offset * sizeof(int), SEEK_SET);    fread(ofs,sizeof(int),2,fp);#if MGUI_BYTEORDER == MGUI_BIG_ENDIAN    ofs[0] = ArchSwap32(ofs[0]);    ofs[1] = ArchSwap32(ofs[1]);#endif    StartKey = 72 * 94 + 1 + ofs[0];    EndKey = 72 * 94 + 1 + ofs[1];}static void load_phrase( int phrno, char *tt ){  FILE *fp = cur_table->PhraseFile;  int ofs[2], len;  fseek( fp, ( phrno + 1 ) << 2, SEEK_SET );  fread( ofs, sizeof(int), 2, fp );#if MGUI_BYTEORDER == MGUI_BIG_ENDIAN  ofs[0] = ArchSwap32(ofs[0]);  ofs[1] = ArchSwap32(ofs[1]);#endif  len = ofs[1] - ofs[0];  if ( len > 128 || len <= 0 ) {     strcpy( tt, "error" );     return;  }  ofs[0] += ( cur_table->PhraseNum + 1 ) << 2;   /* Add the index area length */  fseek( fp, ofs[0], SEEK_SET );  fread( tt, 1, len, fp );  tt[len] = 0;}static void putstr (unsigned char *p ,LPARAM lParam){    int index,len = strlen(p);    __mg_ime_writemsg(p, len, lParam, TRUE);    if (InputCount <= InputMatch)  /* All Match */    {        index = (int)p[len-2] * 256 + p[len-1];         ClrIn();        if (UseAssociateMode)        {             FindAssociateKey(index);              CurrentPageIndex = StartKey;             MultiPageMode = 0;             FillAssociateChars(StartKey);               if (CurSelNum > 0)             {                IsAssociateMode = 1;             }        }    }    else    {      int nCount = InputCount - InputMatch,nMatch = InputMatch,i;      MultiPageMode = NextPageIndex = CurrentPageIndex = 0;      InputCount = InputMatch = 0;      for(i = 0; i < nCount; i++)        save_InpKey[i] = InpKey[nMatch+i];      bzero(InpKey, sizeof(InpKey));      for(i = 1; i <= nCount; i++)  /* feed the additional keys */      {         InpKey[InputCount] = save_InpKey[InputCount];         InputCount++;         if (InputCount <= InputMatch+1)         {             FindMatchKey();             MultiPageMode = 0;             CurrentPageIndex = StartKey;             FillMatchChars(StartKey);         }       }      if (InputMatch == 0)    /* left key has no match, delete */      {         ClrIn();          return;      }    }}static int epunc2cpunc (unsigned char epunc, unsigned char* cpunc){    int i;        for (i = 0; i < 29; i++) {        if (puncmark [i].epunc == epunc) {            switch (puncmark [i].type)            {                case CPUNCTYPE_1TO1:                    memcpy (cpunc, puncmark [i].cpunc, 2);                    return 2;                case CPUNCTYPE_1TO2:                    memcpy (cpunc, puncmark [i].cpunc, 4);                    return 4;                case CPUNCTYPE_CYCLE:                    memcpy (cpunc, puncmark[i].cpunc + puncmark[i].currone, 2);                    if (puncmark[i].currone == 0)                        puncmark[i].currone = 2;                    else                        puncmark[i].currone = 0;                    return 2;                default:                    return 0;            }        }    }    return 0;}/* After add/delete a char, search the matched char/phrase, update the   StartKey/EndKey key,  save the related keys at first, if no match   is found, we may restore its original value*/static void FindMatchKey(void){  save_StartKey = StartKey;  save_EndKey = EndKey;  save_MultiPageMode = MultiPageMode;  save_NextPageIndex = NextPageIndex;  save_CurrentPageIndex = CurrentPageIndex;  val1 = InpKey[4] | (InpKey[3]<<6) | (InpKey[2]<<12) | (InpKey[1]<<18) |         (InpKey[0]<<24);  val2 = InpKey[9] | (InpKey[8]<<6) | (InpKey[7]<<12) | (InpKey[6]<<18) |         (InpKey[5]<<24);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本亚洲三级在线| 91蜜桃在线免费视频| 久久久蜜桃精品| 国产一区二区免费在线| 久久精品男人天堂av| 粉嫩aⅴ一区二区三区四区| 国产精品乱码一区二区三区软件| 99久久国产综合色|国产精品| ●精品国产综合乱码久久久久| 色婷婷av一区二区三区软件| 亚洲高清视频中文字幕| 欧美日韩国产片| 麻豆freexxxx性91精品| 久久久欧美精品sm网站| 9人人澡人人爽人人精品| 日韩欧美一区在线观看| 国产精品羞羞答答xxdd| 中文字幕av一区二区三区| 成人高清av在线| 18欧美乱大交hd1984| 色婷婷精品大在线视频| 亚洲午夜在线电影| 欧美日韩色综合| 日产欧产美韩系列久久99| 56国语精品自产拍在线观看| 五月婷婷激情综合| 欧美精选在线播放| 免费观看91视频大全| 国产色婷婷亚洲99精品小说| 国产综合久久久久影院| 2021国产精品久久精品| 粉嫩欧美一区二区三区高清影视| 中文字幕在线不卡| 欧日韩精品视频| 免费观看在线综合色| 久久欧美中文字幕| 波多野结衣中文字幕一区二区三区 | 麻豆久久一区二区| www国产亚洲精品久久麻豆| 国产宾馆实践打屁股91| 亚洲免费观看高清| 91精品久久久久久蜜臀| 国产九色sp调教91| 成人免费一区二区三区在线观看| 精品视频一区二区三区免费| 久久精品国产久精国产爱| 国产日本一区二区| 在线观看av一区| 美国三级日本三级久久99| 国产日本欧美一区二区| 在线区一区二视频| 麻豆国产欧美日韩综合精品二区 | 国产精品人成在线观看免费| 成人国产电影网| 一区二区三区日韩在线观看| 91精品国产一区二区人妖| 激情久久久久久久久久久久久久久久| 国产拍欧美日韩视频二区| 91丝袜美女网| 老司机精品视频在线| 日本一区二区三区久久久久久久久不| av在线不卡免费看| 午夜精品久久久久久久99水蜜桃 | 欧美经典三级视频一区二区三区| 在线视频欧美精品| 国产一区91精品张津瑜| 亚洲与欧洲av电影| 久久蜜桃av一区二区天堂| 在线观看欧美日本| 国产麻豆精品95视频| 亚洲国产综合视频在线观看| 久久精品人人做人人爽97 | 成人久久18免费网站麻豆| 亚洲国产一区二区三区青草影视| 久久美女艺术照精彩视频福利播放 | 日韩一区二区在线观看视频播放| 99久久99久久免费精品蜜臀| 免费日韩伦理电影| 亚洲精品国产高清久久伦理二区| 2021中文字幕一区亚洲| 欧美日韩国产成人在线91| 成人激情校园春色| 美女www一区二区| 一区二区三国产精华液| 久久精品一区蜜桃臀影院| 在线不卡一区二区| 91蝌蚪国产九色| 国产一区二区三区最好精华液 | 国产日韩三级在线| 91精品欧美一区二区三区综合在| 99视频国产精品| 国精产品一区一区三区mba视频| 亚洲一二三区在线观看| 国产精品黄色在线观看| 久久综合久色欧美综合狠狠| 欧美日韩国产免费一区二区 | 正在播放亚洲一区| 一本大道av一区二区在线播放| 国产一区二区伦理片| 日韩二区三区四区| 亚洲综合色婷婷| 亚洲色图.com| 国产欧美日韩在线观看| 3atv一区二区三区| 91成人免费电影| 91在线观看免费视频| 国产精品一卡二| 麻豆91免费观看| 亚洲国产一二三| 一区二区三区蜜桃| 综合久久给合久久狠狠狠97色| 国产人成一区二区三区影院| 欧美r级在线观看| 91精品婷婷国产综合久久性色| 欧美影院精品一区| 一本色道久久综合亚洲aⅴ蜜桃| 成人动漫精品一区二区| 精品午夜一区二区三区在线观看| 人人超碰91尤物精品国产| 亚洲6080在线| 亚洲国产精品久久久久婷婷884 | 99热这里都是精品| 国产成人免费视频网站 | 国产精品一区不卡| 国内成人精品2018免费看| 青青青爽久久午夜综合久久午夜| 亚洲成av人在线观看| 亚洲精品免费视频| 亚洲欧美另类在线| 国产欧美一区二区三区在线老狼| 精品久久久久一区| 日韩精品一区二区三区视频在线观看| 日韩一区二区精品| 欧美电视剧在线看免费| 日韩精品中文字幕在线一区| 日韩精品一区二区三区中文不卡| 日韩免费一区二区| 欧美tickling网站挠脚心| 精品美女在线播放| 久久久国产精品午夜一区ai换脸| 久久久久久久久免费| 国产日产精品一区| 国产精品女人毛片| 国产精品久久久久婷婷| 日韩理论片一区二区| 亚洲黄一区二区三区| 亚洲自拍都市欧美小说| 香蕉加勒比综合久久| 秋霞影院一区二区| 韩国三级在线一区| 国产风韵犹存在线视精品| 成人免费视频一区| 一本大道久久a久久综合| 在线观看网站黄不卡| 欧美色图一区二区三区| 欧美日本一区二区| 欧美一区二区女人| 26uuu国产在线精品一区二区| 欧美精品一区二区三区高清aⅴ| 久久久亚洲精品石原莉奈| 中文字幕二三区不卡| 一区视频在线播放| 一区二区三区91| 日本在线不卡视频| 激情综合色综合久久综合| 99精品国产视频| 欧美日韩黄视频| 精品国产1区2区3区| 国产精品无圣光一区二区| 亚洲人成小说网站色在线| 亚洲成av人影院| 激情伊人五月天久久综合| 成人99免费视频| 欧美亚洲另类激情小说| 欧美大片国产精品| 国产精品久久久久影院色老大| 亚洲一二三区不卡| 国产原创一区二区| 91年精品国产| 日韩一级精品视频在线观看| 国产免费观看久久| 一区二区三区久久| 精品影视av免费| 99在线精品视频| 欧美一级精品在线| 国产精品欧美极品| 日韩成人午夜精品| 国产成人高清在线| 欧美视频你懂的| 久久精品视频一区| 亚洲成人1区2区| 国产精品一区二区91| 在线视频你懂得一区二区三区| 日韩欧美国产一区二区三区| 中文字幕精品在线不卡| 亚洲1区2区3区视频| 韩国一区二区三区| 欧美日韩三级一区二区| 国产精品丝袜久久久久久app| 日韩国产精品久久|