Mercurial > kinput2.yaz
comparison include/Xsj3clib.h @ 0:92745d501b9a
initial import from kinput2-v3.1
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 08 Mar 2010 04:44:30 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:92745d501b9a |
---|---|
1 /* $Id: Xsj3clib.h,v 2.2 1993/09/02 14:59:45 nao Exp $ */ | |
2 | |
3 /* | |
4 * Author: Naoshi Suzuki, SONY Corporation. (nao@sm.sony.co.jp) | |
5 */ | |
6 | |
7 #ifndef _Xsj3clib_h | |
8 #define _Xsj3clib_h | |
9 | |
10 #include "sj3lib.h" | |
11 #include <X11/X.h> | |
12 | |
13 /* #define FORCE_SJIS */ | |
14 /* #define FORCE_JIS7 */ | |
15 /* #define FORCE_JIS8 */ | |
16 | |
17 /* | |
18 * define for default conversion definition file | |
19 * and resource file | |
20 */ | |
21 #ifndef SJ3DEFPATH | |
22 #define SJ3DEFPATH "/usr/lib/X11/sj3def/" | |
23 #endif | |
24 | |
25 /* | |
26 * define for default include nesting limit | |
27 */ | |
28 #ifndef SJRC_INCLUDE_MAX | |
29 #define SJRC_INCLUDE_MAX 10 | |
30 #endif | |
31 | |
32 #define DEF_SJRC_FILE "sjrc" | |
33 #define DEF_SJRK_FILE "sjrk" | |
34 #define DEF_SJHK_FILE "sjhk" | |
35 #define DEF_SJZH_FILE "sjzh" | |
36 #define DEF_SJSB_FILE "sjsb" | |
37 | |
38 /* | |
39 * Kana-Kanji conversion control key event define | |
40 */ | |
41 #define KEY_NULL (0L) | |
42 #define KEY_HENKAN_START (1L<<0) | |
43 #define KEY_HENKAN_END (1L<<1) | |
44 #define KEY_MODE_CHANGE (1L<<2) | |
45 #define KEY_TEXT_CHANGE (1L<<3) | |
46 #define KEY_TEXT_FIXED (1L<<4) | |
47 #define KEY_TEXT_FLUSH (1L<<5) | |
48 #define KEY_CAND_START (1L<<6) | |
49 #define KEY_SYMBOL_START (1L<<7) | |
50 #define KEY_HINSI_START (1L<<8) | |
51 #define KEY_SELECT_END (1L<<9) | |
52 #define KEY_SELECT_ABORT (1L<<10) | |
53 #define KEY_SELECT_RIGHT (1L<<11) | |
54 #define KEY_SELECT_LEFT (1L<<12) | |
55 #define KEY_SELECT_UP (1L<<13) | |
56 #define KEY_SELECT_DOWN (1L<<14) | |
57 #define KEY_SELECT_FIRST (1L<<15) | |
58 #define KEY_SELECT_LAST (1L<<16) | |
59 #define KEY_SELECT_NEXTP (1L<<17) | |
60 #define KEY_SELECT_PREVP (1L<<18) | |
61 #define KEY_SELECT_RIGHTMOST (1L<<19) | |
62 #define KEY_SELECT_LEFTMOST (1L<<20) | |
63 #define KEY_RECONNECT (1L<<21) | |
64 #define KEY_BELL (1L<<22) | |
65 #define KEY_DICT_START (1L<<23) | |
66 #define KEY_DICT_CHANGE (1L<<24) | |
67 #define KEY_DICT_REGISTER (1L<<25) | |
68 #define KEY_DICT_CLEAR (1L<<26) | |
69 #define KEY_DICT_END (1L<<27) | |
70 #define KEY_CONTROL (1L<<28) | |
71 #define KEY_FUNC (1L<<29) | |
72 | |
73 #define KEY_TEXT_CLEAR (KEY_TEXT_CHANGE|KEY_TEXT_FIXED) | |
74 #define KEY_CHANGE (KEY_HENKAN_END|KEY_MODE_CHANGE \ | |
75 |KEY_TEXT_CHANGE|KEY_TEXT_FIXED) | |
76 #define KEY_SELECT (KEY_CAND_START|KEY_SYMBOL_START|KEY_SELECT_END \ | |
77 |KEY_SELECT_ABORT|KEY_SELECT_RIGHT|KEY_SELECT_LEFT \ | |
78 |KEY_SELECT_UP|KEY_SELECT_DOWN|KEY_SELECT_FIRST \ | |
79 |KEY_SELECT_LAST|KEY_SELECT_NEXTP|KEY_SELECT_PREVP \ | |
80 |KEY_SELECT_LEFTMOST|KEY_SELECT_RIGHTMOST|KEY_HINSI_START) | |
81 #define KEY_DICT (KEY_DICT_START|KEY_DICT_REGISTER|KEY_DICT_CLEAR \ | |
82 |KEY_DICT_CHANGE|KEY_DICT_END) | |
83 | |
84 #ifndef WCHAR_DEFINED | |
85 #define WCHAR_DEFINED | |
86 #undef wchar | |
87 #ifdef WCHAR_LONG | |
88 typedef unsigned long wchar; | |
89 #else | |
90 typedef unsigned short wchar; | |
91 #endif | |
92 #endif | |
93 | |
94 /* | |
95 * define for server status | |
96 */ | |
97 #define CONNECT_OK 0 | |
98 #define CONNECT_FAIL -1 | |
99 | |
100 /* | |
101 * define for locale | |
102 */ | |
103 #define JP_SJIS 0 | |
104 #define JP_EUC 1 | |
105 #define JP_JIS8 2 | |
106 #define JP_JIS7 3 | |
107 #define JP_OTHER -1 | |
108 | |
109 /* | |
110 * define for buffer size | |
111 */ | |
112 #define YBUFSIZ 32 | |
113 #define RBUFSIZ 16 | |
114 #define CANDBUFSIZ 128 | |
115 #define KANABUFSIZ 256 | |
116 #define KANJIBUFSIZ 512 | |
117 #define BUNBUFSIZ 256 | |
118 | |
119 /* | |
120 * define for attribute of segment | |
121 */ | |
122 #define SEG_REVERSED 0 | |
123 #define SEG_UNDER_LINE 1 | |
124 #define SEG_NORMAL 2 | |
125 | |
126 typedef unsigned long Xsj3csMode; | |
127 typedef unsigned long Xsj3ccMode; | |
128 typedef unsigned long Xsj3cdMode; | |
129 typedef unsigned long Xsj3cFlag; | |
130 typedef unsigned long Xsj3cEvent; | |
131 | |
132 #define MODE_HIRA 0 | |
133 #define MODE_ZKATA 1 | |
134 #define MODE_HKATA 2 | |
135 #define MODE_HALPHA 3 | |
136 #define MODE_ZALPHA 4 | |
137 | |
138 #define MODE_SJIS 5 | |
139 #define MODE_EUC 6 | |
140 #define MODE_JIS 7 | |
141 #define MODE_KUTEN 8 | |
142 | |
143 #define MODE_TOROKU 9 | |
144 #define MODE_SYOUKYO 10 | |
145 #define MODE_KANJI 11 | |
146 #define MODE_EDIT 12 | |
147 #define MODE_CAND 13 | |
148 #define MODE_SYMBOL 14 | |
149 #define MODE_HINSI 15 | |
150 #define MODE_QUOTE 16 | |
151 | |
152 #define MODE_ROLLDOWN 5 | |
153 #define MODE_ROLLUP 6 | |
154 | |
155 #define MODE_HANKAKU 5 | |
156 #define MODE_ZENKAKU 6 | |
157 #define MODE_UPPER 7 | |
158 #define MODE_LOWER 8 | |
159 | |
160 #define MODE_CONV_NUM 7 /* HIRA-ZALPHA,ROLLDOWN,ROLLUP */ | |
161 #define MODE_INROT_NUM 9 /* HIRA-ZALPHA,SJIS-KUTEN */ | |
162 #define MODE_OUTROT_NUM 9 /* HIRA-ZALPHA,HANKAKU-LOWER */ | |
163 #define MODE_CODE_NUM 4 /* SJIS-KUTEN */ | |
164 #define MODE_STR_NUM 17 /* HIRA-ZALPHA,SJIS-KUTEN,TOROKU-HINSI */ | |
165 | |
166 /* | |
167 * Roma-Kana Conversion Table Structure | |
168 */ | |
169 typedef struct sj3rktable { | |
170 unsigned char *roma; | |
171 unsigned char *yomi; | |
172 unsigned char *str; | |
173 int rlen; | |
174 int ylen; | |
175 struct sj3rktable *next; | |
176 } Xsj3cRKTable; | |
177 | |
178 /* | |
179 * Hiragana-Katakana Conversion Table Structure | |
180 */ | |
181 typedef struct sj3hktable { | |
182 unsigned char *hira; | |
183 unsigned char *zkata; | |
184 unsigned char *hkata; | |
185 unsigned char *halpha; | |
186 int hlen; | |
187 struct sj3hktable *next; | |
188 } Xsj3cHKTable; | |
189 | |
190 /* | |
191 * Zenkaku-Hankaku Conversion Table Structure | |
192 */ | |
193 typedef struct sj3zhtable { | |
194 unsigned char *halpha; | |
195 unsigned char *zalpha; | |
196 unsigned char *zkana; | |
197 unsigned char *hkata; | |
198 struct sj3zhtable *next; | |
199 } Xsj3cZHTable; | |
200 | |
201 /* | |
202 * Data Structure | |
203 */ | |
204 typedef struct _Xsj3cData { | |
205 int len; /* Length of data */ | |
206 wchar *data; | |
207 } Xsj3cDataRec, *Xsj3cData; | |
208 | |
209 typedef Xsj3cDataRec Xsj3cSymbolRec; | |
210 typedef Xsj3cData Xsj3cSymbol; | |
211 typedef Xsj3cDataRec Xsj3cHinsiRec; | |
212 typedef Xsj3cData Xsj3cHinsi; | |
213 | |
214 /* | |
215 * Candidate Structure | |
216 */ | |
217 typedef struct _Xsj3cCand { | |
218 int len; /* Length of candidate */ | |
219 wchar data[CANDBUFSIZ]; /* Candidate string */ | |
220 SJ3_STUDYREC dcid; /* ID for studying */ | |
221 } Xsj3cCandRec, *Xsj3cCand; | |
222 | |
223 /* | |
224 * Dictionary Massage Data Structure | |
225 */ | |
226 typedef struct _Xsj3cDictMsg { | |
227 int len; /* Length of data */ | |
228 wchar *data; | |
229 int attr; /* attribute of data */ | |
230 } Xsj3cDictMsgRec, *Xsj3cDictMsg; | |
231 | |
232 /* | |
233 * Key Table Structure | |
234 */ | |
235 typedef struct sj3keytable { | |
236 char *keyword; | |
237 KeySym ksym; | |
238 Xsj3ccMode modmask; | |
239 Xsj3cEvent (*func)(); | |
240 Xsj3cFlag inputsame; | |
241 struct sj3keytable *prev; | |
242 struct sj3keytable *next; | |
243 } Xsj3cKeyTable; | |
244 | |
245 /* | |
246 * Segment structure | |
247 */ | |
248 typedef struct _Xsj3cSeg { | |
249 int value; /* Result value of pre-edit conversion */ | |
250 unsigned char *str; /* Pre-edit strings buffer */ | |
251 unsigned char *sp; /* Current pointer of pre-edit strings */ | |
252 wchar *yomi; /* Yomi characters buffer */ | |
253 wchar *disp; /* Display/Kanji characters buffer */ | |
254 unsigned char *oldstr; /* Old pre-edit strings buffer */ | |
255 int oldlen; /* Length old Roma-Kana conversion unit */ | |
256 int n_roma; /* Romaji/Code counter of pre-edit */ | |
257 int n_kana; /* Kana counter of pre-edit strings */ | |
258 int size; /* Size of yomi/disp character buffer */ | |
259 int cur; /* Current cursor position */ | |
260 int num; /* Length of yomi characters */ | |
261 int dnum; /* Length of display characters */ | |
262 Xsj3csMode cursegmode; /* Character kind of yomi characters */ | |
263 Xsj3cFlag status; /* Conversion status (noconv or conved) */ | |
264 Xsj3cFlag change; /* Flag, Need to study or not */ | |
265 Xsj3cFlag edit; /* Flag, Available to edit or not */ | |
266 SJ3_STUDYREC dcid; /* ID for studying */ | |
267 } Xsj3cSegRec, *Xsj3cSeg; | |
268 | |
269 /* | |
270 * Dictionary Data Structure | |
271 */ | |
272 typedef struct _Xsj3cDictData { | |
273 Xsj3cSeg seg; /* Yomi Segment buffer */ | |
274 Xsj3cDictMsg msg; /* Message buffers */ | |
275 Xsj3cdMode mode; /* Registration or elimination */ | |
276 Xsj3cdMode status; /* Current status */ | |
277 int value; /* Result value of operation */ | |
278 int n_dict; /* Expanded segment counter */ | |
279 } Xsj3cDictDataRec, *Xsj3cDictData; | |
280 | |
281 /* | |
282 * Buffer for Sj3 Object | |
283 */ | |
284 typedef struct _Xsj3cBuf { | |
285 int server; /* Current conversion server */ | |
286 Xsj3ccMode convmode; /* Current conversion mode */ | |
287 | |
288 /* Converting string data */ | |
289 Xsj3cSeg *input; /* Segment buffers for input */ | |
290 Xsj3cSeg *backup; /* Segment buffers for backup */ | |
291 Xsj3cSeg current; /* Segment buffer of current input */ | |
292 int curseg; /* Current segment number */ | |
293 int segnum; /* Total segment number */ | |
294 int backsegnum; /* Old total segment number */ | |
295 int convedsegnum; /* Total converted segment number */ | |
296 | |
297 /* Current character mode data */ | |
298 Xsj3csMode inputmode; /* Current input character kind */ | |
299 Xsj3csMode dispmode; /* Current display character kind */ | |
300 | |
301 /* Data for handling dictionary (DictMode) */ | |
302 Xsj3cDictData dict; /* Data for DictMode */ | |
303 | |
304 /* Data for selection (SelectMode) */ | |
305 Xsj3cCand candidate; /* Candidate strings */ | |
306 Xsj3cSymbol symbol; /* Symbol strings */ | |
307 Xsj3cHinsi hinsi; /* Hinsi strings */ | |
308 int candnum; /* Total candidate number */ | |
309 int curcand; /* Current candidate number */ | |
310 int cursymbol; /* Current symbol number */ | |
311 int curhinsi; /* Current hinsi number */ | |
312 Xsj3ccMode selectstatus; /* Status of SelectMode */ | |
313 int n_select; /* Counter for candidates to SelectMode */ | |
314 int candseg; /* Segment number of current candidate */ | |
315 | |
316 /* Conversion tables */ | |
317 Xsj3cRKTable *rktable; /* Roma-kana conversion table */ | |
318 Xsj3cHKTable *hktable; /* Hiragana-Katakana conversion table */ | |
319 Xsj3cZHTable *zhtable; /* Hankaku-Zenkaku conversion table */ | |
320 | |
321 /* Other data for conversion */ | |
322 unsigned char *rkdouble; /* Roma-kana double conversion data */ | |
323 unsigned char *plosive; /* Roma-kana plosive conversion data */ | |
324 | |
325 /* Next sjrc file to read */ | |
326 char *rcfile; | |
327 | |
328 /* Common resource in sjrc file (Common with sj2/sj3/sjx) */ | |
329 Xsj3cKeyTable *key; /* Key-function conversion table */ | |
330 /* Custom-flag (.key .sjxkey .ki2key) */ | |
331 Xsj3csMode inmoderot[MODE_INROT_NUM];/* Input character mode */ | |
332 /* Custom-flag (.InitialMode) */ | |
333 int inmoderotnum; /* Total input character mode number */ | |
334 Xsj3csMode outmoderot[MODE_OUTROT_NUM];/* Output character mode */ | |
335 /* Custom-flag (.PrintMode) */ | |
336 int outmoderotnum; /* Total output character mode number */ | |
337 Xsj3csMode defcode[MODE_CODE_NUM]; /* Input code rotation */ | |
338 /* Custom-flag (.DefaultCode) */ | |
339 int coderotnum; /* Total input code rotation number */ | |
340 Xsj3csMode muhenmode; /* Character kind after unconverting */ | |
341 /* Custom-flag (.MuhenkanMode) */ | |
342 Xsj3csMode togglemode; /* Character kind by toggling */ | |
343 /* Custom-flag (.MuhenkanInEdit) */ | |
344 Xsj3cFlag dotoggle; /* Custom-flag (.MuhenkanToggle) */ | |
345 Xsj3cFlag throughflg; /* Trough character flag */ | |
346 wchar *modestr[MODE_STR_NUM]; /* Character mode strings */ | |
347 /* Custom-flag (.guide.[mode]) */ | |
348 int modelen[MODE_STR_NUM]; /* Length of mode strings */ | |
349 Xsj3cFlag gakusyuu; /* Custom-flag (.bstudy) */ | |
350 Xsj3cFlag rkbell; /* Custom-flag (.rkerrbell) */ | |
351 Xsj3cFlag flushaconv; /* Custom-flag (.FlushAfterConversion) */ | |
352 char *sj3serv; /* First sj3serv hostname */ | |
353 /* Custom-flag (.server) */ | |
354 unsigned char *setnormal; /* Custom-flag (.SetNormal) */ | |
355 unsigned char *throughnext; /* Custom-flag (.ThroughNext) */ | |
356 | |
357 /* Original resource (Not exists in sj2/sj3/sjx) */ | |
358 char *sj3serv2; /* Second sj3serv hostname */ | |
359 /* Custom-flag (.server2) */ | |
360 Xsj3cFlag flushiconv; /* Custom-flag (.FlushInConversion) */ | |
361 Xsj3cFlag flushsconv; /* Custom-flag (.FlushSelectConversion) */ | |
362 Xsj3cFlag flusheconv; /* Custom-flag (.FlushEndConversion) */ | |
363 Xsj3cFlag alphaconv; /* Custom-flag (.AlphabetConversion) */ | |
364 Xsj3cFlag backdisplay; /* Custom-flag (.BackDisplay) */ | |
365 Xsj3cFlag beginlastseg; /* Custom-flag (.BeginConversionLast) */ | |
366 Xsj3cFlag expandmconv; /* Custom-flag (.ExpandModeConversion) */ | |
367 Xsj3cFlag shrinkmconv; /* Custom-flag (.ShrinkModeConversion) */ | |
368 Xsj3cFlag expandkconv; /* Custom-flag (.ExpandKanjiConversion) */ | |
369 Xsj3cFlag shrinkkconv; /* Custom-flag (.ShrinkKanjiConversion) */ | |
370 Xsj3cFlag shrinkall; /* Custom-flag (.ShrinkAll) */ | |
371 Xsj3cFlag henkanseg; /* Custom-flag (.HenkanSegment) */ | |
372 Xsj3cFlag muhenseg; /* Custom-flag (.MuhenkanSegment) */ | |
373 Xsj3cFlag delchange; /* Custom-flag (.DeleteChangeSegment) */ | |
374 Xsj3cFlag flushchange; /* Custom-flag (.FlushChangeSegment) */ | |
375 Xsj3cFlag modeconv[MODE_CONV_NUM];/* Custom-flag (.ModeConversion)*/ | |
376 Xsj3cFlag moveloop; /* Custom-flag (.MoveLoop) */ | |
377 Xsj3cFlag movebyseg; /* Custom-flag (.MoveBySegment) */ | |
378 Xsj3cFlag jumpbyseg; /* Custom-flag (.JumpBySegment) */ | |
379 Xsj3cFlag delbyseg; /* Custom-flag (.DeleteBySegment) */ | |
380 Xsj3cFlag killbyseg; /* Custom-flag (.KillBySegment) */ | |
381 Xsj3cFlag muhencurlast; /* Custom-flag (.MuhenkanCursorLast) */ | |
382 Xsj3cFlag editcurlast; /* Custom-flag (.EditCursorLast) */ | |
383 Xsj3cFlag flushcurlast; /* Custom-flag (.FlushCursorLast) */ | |
384 Xsj3cFlag convedunderline;/* Custom-flag (.ConvertedUnderLine) */ | |
385 Xsj3cFlag dispmodechange; /* Custom-flag (.DisplayModeChange) */ | |
386 Xsj3cFlag dellastmove; /* Custom-flag (.DeleteLastMove) */ | |
387 Xsj3cFlag kanaonly; /* Custom-flag (.KanaInputOnly) */ | |
388 Xsj3cFlag inputsame; /* Custom-flag (.InputSameTime) */ | |
389 Xsj3cFlag cntrlsame; /* Custom-flag (.ControlSameTime) */ | |
390 Xsj3cFlag selectconv; /* Custom-flag (.BeforeSelectConversion)*/ | |
391 Xsj3cFlag beforeconv; /* Custom-flag (.BeforeConversion) */ | |
392 Xsj3cFlag lastdoubleconv; /* Custom-flag (.LastDoubleConversion) */ | |
393 int selectcount; /* Custom-flag (.BeforeSelectCount) */ | |
394 Xsj3cFlag selectback; /* Custom-flag (.SelectBackSpaceCurrent)*/ | |
395 Xsj3cFlag candpadding; /* Custom-flag (.CandidatePadding) */ | |
396 | |
397 } Xsj3cBufRec, *Xsj3cBuf; | |
398 | |
399 /* Key event handling */ | |
400 extern unsigned char *Xsj3cGetPreeditArea(); | |
401 extern Xsj3cEvent Xsj3cKeyConv(); | |
402 | |
403 /* Setting up environment */ | |
404 extern void Xsj3cSetInLang(); | |
405 extern void Xsj3cSetOutLang(); | |
406 extern void Xsj3cSetKanaMod(); | |
407 | |
408 /* Connection to language conversion server handling */ | |
409 extern int Xsj3cOpen(); | |
410 extern void Xsj3cClose(); | |
411 extern void Xsj3cConnect(); | |
412 | |
413 /* Operation of buffers */ | |
414 extern Xsj3cBuf Xsj3cCreateBuffer(); | |
415 extern void Xsj3cFreeBuffer(); | |
416 extern void Xsj3cClearBuffer(); | |
417 extern void Xsj3cFlushBuffer(); | |
418 extern void Xsj3cFixBuffer(); | |
419 | |
420 /* Getting data to draw or send to other */ | |
421 extern int Xsj3cGetSegNum(); | |
422 extern int Xsj3cGetPosition(); | |
423 extern wchar *Xsj3cGetSeg(); | |
424 extern wchar *Xsj3cGetModeStr(); | |
425 extern wchar *Xsj3cGetConvertedStr(); | |
426 extern int Xsj3cGetConvertedLength(); | |
427 | |
428 /* Operartion of candidate data */ | |
429 extern int Xsj3cGetCandidateNum(); | |
430 extern Xsj3cCand Xsj3cGetCandidates(); | |
431 extern wchar *Xsj3cGetCandidate(); | |
432 extern int Xsj3cSetCandidate(); | |
433 extern void Xsj3cEndCandidate(); | |
434 | |
435 /* Operartion of symbol data */ | |
436 extern int Xsj3cGetSymbolNum(); | |
437 extern Xsj3cSymbol Xsj3cGetSymbols(); | |
438 extern wchar *Xsj3cGetSymbol(); | |
439 extern int Xsj3cSetSymbol(); | |
440 extern void Xsj3cEndSymbol(); | |
441 | |
442 /* Operartion of hinsi data */ | |
443 extern int Xsj3cGetHinsiNum(); | |
444 extern Xsj3cHinsi Xsj3cGetHinsis(); | |
445 extern wchar *Xsj3cGetHinsi(); | |
446 extern int Xsj3cSetHinsi(); | |
447 extern void Xsj3cEndHinsi(); | |
448 | |
449 /* Operartion of dictionary data */ | |
450 extern int Xsj3cGetDictMsgNum(); | |
451 extern Xsj3cDictMsg Xsj3cGetDictMsgs(); | |
452 extern wchar *Xsj3cGetDictMsg(); | |
453 extern void Xsj3cDictRegister(); | |
454 extern void Xsj3cDictClear(); | |
455 extern void Xsj3cEndDict(); | |
456 | |
457 extern void Xsj3cInitializeTables(); | |
458 | |
459 #endif /* _Xsj3clib_h */ |