1 #ifndef _IME_H 2 #define _IME_H 3 4 #include "xim.h" 5 #ifdef __FreeBSD__ 6 #include <sys/types.h> 7 #endif 8 9 #include "scim_fcitx_imengine.h" 10 11 #define MAX_CAND_WORD 10 12 #define MAX_USER_INPUT 300 13 14 #define HOT_KEY_COUNT 2 15 #define MAX_HZ_SAVED 1024 16 17 #define MAX_IM_NAME 12 18 19 #define NAME_OF_PINYIN "pinyin" 20 #define NAME_OF_SHUANGPIN "shuangpin" 21 #define NAME_OF_QUWEI "quwei" 22 23 #define TEMP_FILE "FCITX_DICT_TEMP" 24 25 typedef enum _SEARCH_MODE { 26 SM_FIRST, 27 SM_NEXT, 28 SM_PREV 29 } SEARCH_MODE; 30 31 typedef enum ADJUST_ORDER { 32 AD_NO, 33 AD_FAST, 34 AD_FREQ 35 } ADJUSTORDER; 36 37 typedef enum _INPUT_RETURN_VALUE { 38 //IRV_UNKNOWN = -1, 39 IRV_DO_NOTHING = 0, 40 IRV_DONOT_PROCESS, 41 IRV_DONOT_PROCESS_CLEAN, 42 IRV_CLEAN, 43 IRV_TO_PROCESS, 44 IRV_DISPLAY_MESSAGE, 45 IRV_DISPLAY_CANDWORDS, 46 IRV_DISPLAY_LAST, 47 IRV_PUNC, 48 IRV_ENG, 49 IRV_GET_LEGEND, 50 IRV_GET_CANDWORDS, 51 IRV_GET_CANDWORDS_NEXT 52 } INPUT_RETURN_VALUE; 53 54 typedef enum _ENTER_TO_DO { 55 K_ENTER_NOTHING, 56 K_ENTER_CLEAN, 57 K_ENTER_SEND 58 } ENTER_TO_DO; 59 60 typedef struct _SINGLE_HZ { 61 char strHZ[3]; 62 } SINGLE_HZ; 63 64 typedef enum _KEY_RELEASED { 65 KR_OTHER = 0, 66 KR_CTRL, 67 KR_2ND_SELECTKEY, 68 KR_3RD_SELECTKEY 69 } KEY_RELEASED; 70 71 typedef struct { 72 char strName[MAX_IM_NAME + 1]; 73 void (*ResetIM) (void); 74 INPUT_RETURN_VALUE (*DoInput) (const KeyEvent&); 75 INPUT_RETURN_VALUE (*GetCandWords) (SEARCH_MODE); 76 char *(*GetCandWord) (int); 77 char *(*GetLegendCandWord) (int); 78 Bool (*PhraseTips) (void); 79 void (*Init) (void); 80 void (*Destroy) (void); 81 } IM; 82 83 84 #define MESSAGE_MAX_LENGTH 300 //����������ʾ������ȣ����ַ��� 85 86 /* ������������ʾ�����ݷ�Ϊ���¼��� */ 87 #define MESSAGE_TYPE_COUNT 7 88 89 typedef enum { 90 MSG_TIPS, //��ʾ�ı� 91 MSG_INPUT, //�û������� 92 MSG_INDEX, //��ѡ��ǰ������ 93 MSG_FIRSTCAND, //��һ����ѡ�� 94 MSG_USERPHR, //�û����� 95 MSG_CODE, //��ʾ�ı��� 96 MSG_OTHER //�����ı� 97 } MSG_TYPE; 98 99 typedef struct { 100 char strMsg[MESSAGE_MAX_LENGTH + 1]; 101 int type; 102 } MESSAGE; 103 104 105 extern IM *im; 106 extern INT8 iIMCount; 107 108 extern int iMaxCandWord; 109 extern int iCandPageCount; 110 extern int iCurrentCandPage; 111 extern int iCandWordCount; 112 113 extern int iLegendCandWordCount; 114 extern int iLegendCandPageCount; 115 extern int iCurrentLegendCandPage; 116 117 extern int iCodeInputCount; 118 119 // ************************************************************* 120 extern char strCodeInput[]; 121 extern char strStringGet[]; //�������뷨���ص���Ҫ�͵��ͻ������е��ִ� 122 extern unsigned int messageColor[]; 123 extern unsigned int cursorColor; 124 // ************************************************************* 125 126 extern ENTER_TO_DO enterToDo; 127 128 extern Bool bCorner; //ȫ����л� 129 extern Bool bChnPunc; //��Ӣ�ı���л� 130 extern Bool bUseGBK; //�Ƿ�֧��GBK 131 extern Bool bIsDoInputOnly; //�����Ƿ�ֻ�����뷨��������� 132 extern Bool bLastIsNumber; //��һ�������Dz��ǰ��������� 133 extern Bool bInCap; //�Dz��Ǵ��ڴ�д���Ӣ��״̬ 134 extern Bool bAutoHideInputWindow; //�Ƿ��Զ����������� 135 extern Bool bEngPuncAfterNumber; //���ֺ��������Ƿ���(ֻ��'.'/','��Ч) 136 extern Bool bPhraseTips; 137 extern INT8 lastIsSingleHZ; 138 extern int iCursorPos; 139 extern Bool bEngAfterSemicolon; 140 extern Bool bEngAfterCap; 141 extern Bool bDisablePagingInLegend; 142 143 extern KeyEvent i2ndSelectKey; //�ڶ�����ѡ��ѡ�����Ϊɨ���� 144 extern KeyEvent i2ndSelectKeyPress; //�ڶ�����ѡ��ѡ�����Ϊɨ���� 145 extern KeyEvent i3rdSelectKey; //��������ѡ��ѡ�����Ϊɨ���� 146 extern KeyEvent i3rdSelectKeyPress; //��������ѡ��ѡ�����Ϊɨ���� 147 148 149 extern KEY_RELEASED keyReleased; 150 extern Bool bDoubleSwitchKey; 151 extern KeyEvent switchKey; 152 extern KeyEvent switchKeyPress; 153 154 //�ȼ����� 155 extern KeyEvent hkGBK[]; 156 extern KeyEvent hkLegend[]; 157 extern KeyEvent hkCorner[]; //ȫ����л� 158 extern KeyEvent hkPunc[]; //���ı�� 159 extern KeyEvent hkNextPage[]; //��һҳ 160 extern KeyEvent hkPrevPage[]; //��һҳ 161 162 extern Bool bUseLegend; 163 extern Bool bIsInLegend; 164 165 extern INT8 iIMIndex; 166 extern Bool bUsePinyin; 167 extern Bool bUseSP; 168 extern Bool bUseQW; 169 extern Bool bUseTable; 170 171 172 extern MESSAGE messageUp[]; 173 extern uint uMessageUp; 174 extern MESSAGE messageDown[]; 175 extern uint uMessageDown; 176 extern Bool bShowPrev; 177 extern Bool bShowNext; 178 extern Bool bShowCursor; 179 extern Bool bLocked; 180 181 182 void ResetInput (void); 183 bool ProcessKey (FcitxInstance &fInst, const KeyEvent& key); 184 185 Bool IsHotKey (const KeyEvent& key, KeyEvent * hotkey); 186 INPUT_RETURN_VALUE ChangeCorner (FcitxInstance& finst); 187 INPUT_RETURN_VALUE ChangePunc (FcitxInstance& finst); 188 INPUT_RETURN_VALUE ChangeGBK (FcitxInstance& finst); 189 INPUT_RETURN_VALUE ChangeLegend (FcitxInstance& finst); 190 void SwitchIM (INT8 index); 191 void DoPhraseTips (); 192 193 void RegisterNewIM (char *strName, 194 void (*ResetIM) (void), 195 INPUT_RETURN_VALUE (*DoInput) (int), 196 INPUT_RETURN_VALUE (*GetCandWords) (SEARCH_MODE), 197 char *(*GetCandWord) (int), 198 char *(*GetLegendCandWord) (int), 199 Bool (*PhraseTips) (void), 200 void (*Init) (void), 201 void (*Destroy) (void)); 202 203 204 Bool IsIM (char *strName); 205 void SaveIM (void); 206 void SetIM (void); 207 void CloseIM(FcitxInstance&); 208 #endif 209