📄 py.c
字号:
#include <stdio.h>#include <stdlib.h>#include <sys/stat.h>#include <limits.h>#include <string.h>#include <ctype.h>#include "ui.h"#include "vk.h"#include "all.h"#include "py_index.h"extern int iCur_PYW;extern int iCur_PYS;extern char Cur_py_win[PY_WIN_NUM][STR_SIZE];extern char Cur_zh_buf[PY_NUM][ZH_NUM][STR_SIZE];extern char Cur_put_win[PUT_WIN_NUM][STR_SIZE];char Cur_input_buf[INPUT_SIZE];char Cur_py_buf[PY_NUM][STR_SIZE];static char *gGBKS2TTable = NULL;static int gGBKS2TTableSize = -1;int py_get_str(void){ py_index *py_index_list; int i, matchflag, matchnum; if(Cur_input_buf[0] =='\0'){ bzero(Cur_put_win,sizeof(Cur_put_win)); bzero(Cur_py_buf,sizeof(Cur_py_buf)); bzero(Cur_zh_buf,sizeof(Cur_zh_buf)); bzero(Cur_input_buf,sizeof(Cur_input_buf)); return 0; } py_index_list = py_index_mb; matchnum = 0; while(py_index_list->T9[0] != '\0') { i = 0; matchflag = 1; while(Cur_input_buf[i] != '\0') { if(Cur_input_buf[i] != py_index_list->T9[i]) { matchflag = 0; break; } i++; } /*if(py_index_list->T9[i]!='\0') { matchflag = 0; }*/ if((matchflag == 1) && (matchnum < PY_NUM)) { if (matchnum == 0){ bzero(Cur_py_buf,sizeof(Cur_py_buf)); bzero(Cur_zh_buf,sizeof(Cur_zh_buf)); } get_str_arr(py_index_list->MB,Cur_zh_buf[matchnum]); strcpy(Cur_py_buf[matchnum],py_index_list->PY); matchnum++; } py_index_list++; if((py_index_list->T9[0]=='\0') && (matchnum == 0)){ Cur_input_buf[strlen(Cur_input_buf)-1] = '\0'; } } return matchnum;}int py_get_zh(char *str){ int py_key_event=0; int input_buf_len; input_buf_len = strlen(Cur_input_buf); switch(str[0]){ case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if(input_buf_len < INPUT_SIZE){ Cur_input_buf[input_buf_len] = str[0]; Cur_input_buf[input_buf_len+1] = '\0'; iCur_PYW=0; iCur_PYS = 0; py_key_event = 1; } break; case '1': iCur_PYS = 0; iCur_PYW = iCur_PYW +PY_WIN_NUM; if(iCur_PYW>=check_strarr_len(PY_NUM,Cur_py_buf)) iCur_PYW=0; break; case '0': default: break; } if(py_key_event){ return py_get_str(); } return 0;}char *simple_to_tradition (char *strHZ){ FILE *fp; char *ret; char strPath[50]; int i, len; unsigned int idx; if (strHZ == NULL) return NULL; if (!gGBKS2TTable) { len = 0; strcpy (strPath, TABLE_GBKS2T_PATH); fp = fopen (strPath, "rb"); if (!fp) { ret = (char *) malloc (sizeof (char) * (strlen (strHZ) + 1)); strcpy (ret, strHZ); return ret; } fseek (fp, 0, SEEK_END); fgetpos (fp, (fpos_t *) & len); if (len > 0) { gGBKS2TTable = (char *) malloc (sizeof (char) * len); gGBKS2TTableSize = len; fseek (fp, 0, SEEK_SET); fread (gGBKS2TTable, sizeof (char), len, fp); } fclose (fp); } i = 0; len = strlen (strHZ); ret = (char *) malloc (sizeof (char) * (len + 1)); for (; i < len; ++i) { if (i < (len - 1)) if ((unsigned char) strHZ[i] >= (unsigned char) 0x81 && (unsigned char) strHZ[i] <= (unsigned char) 0xfe && (((unsigned char) strHZ[i + 1] >= (unsigned char) 0x40 && (unsigned char) strHZ[i + 1] <= (unsigned char) 0x7e) || ((unsigned char) strHZ[i + 1] > (unsigned char) 0x7f && (unsigned char) strHZ[i + 1] <= (unsigned char) 0xfe))) { idx = (((unsigned char) strHZ[i] - (unsigned char) 0x81) * (unsigned char) 0xbe + ((unsigned char) strHZ[i + 1] - (unsigned char) 0x40) - ((unsigned char) strHZ[i + 1] / (unsigned char) 0x80)) * 2; if (idx >= 0 && idx < gGBKS2TTableSize - 1) { //if ((unsigned char)gGBKS2TTable[idx] != (unsigned char)0xa1 && (unsigned char) gGBKS2TTable[idx + 1] != (unsigned char) 0x7f) { if ((unsigned char) gGBKS2TTable[idx + 1] != (unsigned char) 0x7f) { ret[i] = gGBKS2TTable[idx]; ret[i + 1] = gGBKS2TTable[idx + 1]; i += 1; continue; } } } ret[i] = strHZ[i]; } ret[len] = '\0'; return ret;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -