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 */