File: Xsj3clib.h

package info (click to toggle)
kinput2 3.1-14
  • links: PTS
  • area: main
  • in suites: bookworm
  • size: 3,284 kB
  • sloc: ansic: 49,965; makefile: 104; sh: 68
file content (459 lines) | stat: -rw-r--r-- 19,721 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
/* $Id: Xsj3clib.h,v 2.2 1993/09/02 14:59:45 nao Exp $ */

/*
 * Author: Naoshi Suzuki, SONY Corporation.  (nao@sm.sony.co.jp)
 */

#ifndef _Xsj3clib_h
#define _Xsj3clib_h

#include    "sj3lib.h"
#include    <X11/X.h>

/* #define FORCE_SJIS */
/* #define FORCE_JIS7 */
/* #define FORCE_JIS8 */

/*
 * define for default conversion definition file
 *          and resource file
 */
#ifndef SJ3DEFPATH
#define SJ3DEFPATH              "/usr/lib/X11/sj3def/"
#endif

/*
 * define for default include nesting limit
 */
#ifndef SJRC_INCLUDE_MAX
#define SJRC_INCLUDE_MAX        10
#endif

#define DEF_SJRC_FILE           "sjrc"
#define DEF_SJRK_FILE           "sjrk"
#define DEF_SJHK_FILE           "sjhk"
#define DEF_SJZH_FILE           "sjzh"
#define DEF_SJSB_FILE           "sjsb"

/*
 * Kana-Kanji conversion control key event define
 */
#define KEY_NULL                (0L)
#define KEY_HENKAN_START        (1L<<0)
#define KEY_HENKAN_END          (1L<<1)
#define KEY_MODE_CHANGE         (1L<<2)
#define KEY_TEXT_CHANGE         (1L<<3)
#define KEY_TEXT_FIXED          (1L<<4)
#define KEY_TEXT_FLUSH          (1L<<5)
#define KEY_CAND_START          (1L<<6)
#define KEY_SYMBOL_START        (1L<<7)
#define KEY_HINSI_START         (1L<<8)
#define KEY_SELECT_END          (1L<<9)
#define KEY_SELECT_ABORT        (1L<<10)
#define KEY_SELECT_RIGHT        (1L<<11)
#define KEY_SELECT_LEFT         (1L<<12)
#define KEY_SELECT_UP           (1L<<13)
#define KEY_SELECT_DOWN         (1L<<14)
#define KEY_SELECT_FIRST        (1L<<15)
#define KEY_SELECT_LAST         (1L<<16)
#define KEY_SELECT_NEXTP        (1L<<17)
#define KEY_SELECT_PREVP        (1L<<18)
#define KEY_SELECT_RIGHTMOST    (1L<<19)
#define KEY_SELECT_LEFTMOST     (1L<<20)
#define KEY_RECONNECT           (1L<<21)
#define KEY_BELL                (1L<<22)
#define KEY_DICT_START          (1L<<23)
#define KEY_DICT_CHANGE         (1L<<24)
#define KEY_DICT_REGISTER       (1L<<25)
#define KEY_DICT_CLEAR          (1L<<26)
#define KEY_DICT_END            (1L<<27)
#define KEY_CONTROL             (1L<<28)
#define KEY_FUNC                (1L<<29)

#define KEY_TEXT_CLEAR  (KEY_TEXT_CHANGE|KEY_TEXT_FIXED)
#define KEY_CHANGE      (KEY_HENKAN_END|KEY_MODE_CHANGE \
                |KEY_TEXT_CHANGE|KEY_TEXT_FIXED)
#define KEY_SELECT      (KEY_CAND_START|KEY_SYMBOL_START|KEY_SELECT_END \
                |KEY_SELECT_ABORT|KEY_SELECT_RIGHT|KEY_SELECT_LEFT \
                |KEY_SELECT_UP|KEY_SELECT_DOWN|KEY_SELECT_FIRST \
                |KEY_SELECT_LAST|KEY_SELECT_NEXTP|KEY_SELECT_PREVP \
                |KEY_SELECT_LEFTMOST|KEY_SELECT_RIGHTMOST|KEY_HINSI_START)
#define KEY_DICT        (KEY_DICT_START|KEY_DICT_REGISTER|KEY_DICT_CLEAR \
                |KEY_DICT_CHANGE|KEY_DICT_END)

#ifndef WCHAR_DEFINED
#define WCHAR_DEFINED
#undef wchar
#ifdef WCHAR_LONG
typedef unsigned long  wchar;
#else
typedef unsigned short wchar;
#endif
#endif

/*
 * define for server status
 */
#define CONNECT_OK              0
#define CONNECT_FAIL            -1

/*
 * define for locale
 */
#define JP_SJIS                 0
#define JP_EUC                  1
#define JP_JIS8                 2
#define JP_JIS7                 3
#define JP_OTHER                -1

/*
 * define for buffer size
 */
#define YBUFSIZ                 32
#define RBUFSIZ                 16
#define CANDBUFSIZ              128
#define KANABUFSIZ              256
#define KANJIBUFSIZ             512
#define BUNBUFSIZ               256

/*
 * define for attribute of segment
 */
#define SEG_REVERSED            0
#define SEG_UNDER_LINE          1
#define SEG_NORMAL              2

typedef unsigned long           Xsj3csMode;
typedef unsigned long           Xsj3ccMode;
typedef unsigned long           Xsj3cdMode;
typedef unsigned long           Xsj3cFlag;
typedef unsigned long           Xsj3cEvent;

#define MODE_HIRA               0
#define MODE_ZKATA              1
#define MODE_HKATA              2
#define MODE_HALPHA             3
#define MODE_ZALPHA             4

#define MODE_SJIS               5
#define MODE_EUC                6
#define MODE_JIS                7
#define MODE_KUTEN              8

#define MODE_TOROKU             9
#define MODE_SYOUKYO            10
#define MODE_KANJI              11
#define MODE_EDIT               12
#define MODE_CAND               13
#define MODE_SYMBOL             14
#define MODE_HINSI              15
#define MODE_QUOTE              16

#define MODE_ROLLDOWN           5
#define MODE_ROLLUP             6

#define MODE_HANKAKU            5
#define MODE_ZENKAKU            6
#define MODE_UPPER              7
#define MODE_LOWER              8

#define MODE_CONV_NUM           7   /* HIRA-ZALPHA,ROLLDOWN,ROLLUP          */
#define MODE_INROT_NUM          9   /* HIRA-ZALPHA,SJIS-KUTEN               */
#define MODE_OUTROT_NUM         9   /* HIRA-ZALPHA,HANKAKU-LOWER            */
#define MODE_CODE_NUM           4   /* SJIS-KUTEN                           */
#define MODE_STR_NUM            17  /* HIRA-ZALPHA,SJIS-KUTEN,TOROKU-HINSI  */

/*
 * Roma-Kana Conversion Table Structure
 */
typedef struct sj3rktable {
    unsigned char          *roma;
    unsigned char          *yomi;
    unsigned char          *str;
    int                     rlen;
    int                     ylen;
    struct sj3rktable      *next;
} Xsj3cRKTable;

/*
 * Hiragana-Katakana Conversion Table Structure
 */
typedef struct sj3hktable {
    unsigned char          *hira;
    unsigned char          *zkata;
    unsigned char          *hkata;
    unsigned char          *halpha;
    int                     hlen;
    struct sj3hktable      *next;
} Xsj3cHKTable;

/*
 * Zenkaku-Hankaku Conversion Table Structure
 */
typedef struct sj3zhtable {
    unsigned char          *halpha;
    unsigned char          *zalpha;
    unsigned char          *zkana;
    unsigned char          *hkata;
    struct sj3zhtable      *next;
} Xsj3cZHTable;

/*
 * Data Structure
 */
typedef struct _Xsj3cData {
    int                     len;        /* Length of data           */
    wchar                  *data;
} Xsj3cDataRec,   *Xsj3cData;

typedef Xsj3cDataRec    Xsj3cSymbolRec;
typedef Xsj3cData       Xsj3cSymbol;
typedef Xsj3cDataRec    Xsj3cHinsiRec;
typedef Xsj3cData       Xsj3cHinsi;

/*
 * Candidate Structure
 */
typedef struct _Xsj3cCand {
    int                     len;        /* Length of candidate          */
    wchar                   data[CANDBUFSIZ];  /* Candidate string      */
    SJ3_STUDYREC            dcid;       /* ID for studying              */
} Xsj3cCandRec,   *Xsj3cCand;

/*
 * Dictionary Massage Data Structure
 */
typedef struct _Xsj3cDictMsg {
    int                     len;        /* Length of data           */
    wchar                  *data;
    int                     attr;       /* attribute of data        */
} Xsj3cDictMsgRec,   *Xsj3cDictMsg;

/*
 * Key Table Structure
 */
typedef struct sj3keytable {
    char                   *keyword;
    KeySym                  ksym;
    Xsj3ccMode              modmask;
    Xsj3cEvent              (*func)();
    Xsj3cFlag               inputsame;
    struct sj3keytable     *prev;
    struct sj3keytable     *next;
} Xsj3cKeyTable;

/*
 * Segment structure
 */
typedef struct _Xsj3cSeg {
    int             value;      /* Result value of pre-edit conversion  */
    unsigned char  *str;        /* Pre-edit strings buffer              */
    unsigned char  *sp;         /* Current pointer of pre-edit strings  */
    wchar          *yomi;       /* Yomi characters buffer               */ 
    wchar          *disp;       /* Display/Kanji characters buffer      */
    unsigned char  *oldstr;     /* Old pre-edit strings buffer          */
    int             oldlen;     /* Length old Roma-Kana conversion unit */
    int             n_roma;     /* Romaji/Code counter of pre-edit      */
    int             n_kana;     /* Kana counter of pre-edit strings     */
    int             size;       /* Size of yomi/disp character buffer   */
    int             cur;        /* Current cursor position              */
    int             num;        /* Length of yomi characters            */
    int             dnum;       /* Length of display characters         */
    Xsj3csMode      cursegmode; /* Character kind of yomi characters    */
    Xsj3cFlag       status;     /* Conversion status (noconv or conved) */
    Xsj3cFlag       change;     /* Flag, Need to study or not           */
    Xsj3cFlag       edit;       /* Flag, Available to edit or not       */
    SJ3_STUDYREC    dcid;       /* ID for studying                      */
} Xsj3cSegRec,    *Xsj3cSeg;

/*
 * Dictionary  Data Structure
 */
typedef struct _Xsj3cDictData {
    Xsj3cSeg                seg;        /* Yomi Segment buffer          */
    Xsj3cDictMsg            msg;        /* Message buffers              */
    Xsj3cdMode              mode;       /* Registration or elimination  */
    Xsj3cdMode              status;     /* Current status               */ 
    int                     value;      /* Result value of operation    */
    int                     n_dict;     /* Expanded segment counter     */
} Xsj3cDictDataRec,   *Xsj3cDictData;

/*
 * Buffer for Sj3 Object
 */
typedef struct _Xsj3cBuf {
    int             server;         /* Current conversion server            */
    Xsj3ccMode      convmode;       /* Current conversion mode              */

    /* Converting string data                                               */
    Xsj3cSeg       *input;          /* Segment buffers for input            */
    Xsj3cSeg       *backup;         /* Segment buffers for backup           */
    Xsj3cSeg        current;        /* Segment buffer of current input      */
    int             curseg;         /* Current segment number               */
    int             segnum;         /* Total segment number                 */
    int             backsegnum;     /* Old total segment number             */
    int             convedsegnum;   /* Total converted segment number       */

    /* Current character mode data                                          */
    Xsj3csMode      inputmode;      /* Current input character kind         */
    Xsj3csMode      dispmode;       /* Current display character kind       */

    /* Data for handling dictionary (DictMode)                              */
    Xsj3cDictData   dict;           /* Data for DictMode                    */

    /* Data for selection (SelectMode)                                      */
    Xsj3cCand       candidate;      /* Candidate strings                    */
    Xsj3cSymbol     symbol;         /* Symbol strings                       */
    Xsj3cHinsi      hinsi;          /* Hinsi strings                        */
    int             candnum;        /* Total candidate number               */
    int             curcand;        /* Current candidate number             */
    int             cursymbol;      /* Current symbol number                */
    int             curhinsi;       /* Current hinsi number                 */
    Xsj3ccMode      selectstatus;   /* Status of SelectMode                 */
    int             n_select;       /* Counter for candidates to SelectMode */
    int             candseg;        /* Segment number of current candidate  */

    /* Conversion tables                                                    */
    Xsj3cRKTable   *rktable;        /* Roma-kana conversion table           */ 
    Xsj3cHKTable   *hktable;        /* Hiragana-Katakana conversion table   */
    Xsj3cZHTable   *zhtable;        /* Hankaku-Zenkaku conversion table     */

    /* Other data for conversion                                            */
    unsigned char  *rkdouble;       /* Roma-kana double conversion data     */
    unsigned char  *plosive;        /* Roma-kana plosive conversion data    */

    /* Next sjrc file to read                                               */
    char           *rcfile;

    /* Common resource in sjrc file (Common with sj2/sj3/sjx)               */
    Xsj3cKeyTable  *key;            /* Key-function conversion table        */
                                    /* Custom-flag (.key .sjxkey .ki2key)   */
    Xsj3csMode      inmoderot[MODE_INROT_NUM];/* Input character mode       */
                                    /* Custom-flag (.InitialMode)           */
    int             inmoderotnum;   /* Total input character mode number    */
    Xsj3csMode      outmoderot[MODE_OUTROT_NUM];/* Output character mode    */
                                    /* Custom-flag (.PrintMode)             */
    int             outmoderotnum;  /* Total output character mode number   */
    Xsj3csMode      defcode[MODE_CODE_NUM]; /* Input code rotation          */
                                    /* Custom-flag (.DefaultCode)           */
    int             coderotnum;     /* Total input code rotation number     */
    Xsj3csMode      muhenmode;      /* Character kind after unconverting    */
                                    /* Custom-flag (.MuhenkanMode)          */
    Xsj3csMode      togglemode;     /* Character kind by toggling           */
                                    /* Custom-flag (.MuhenkanInEdit)        */
    Xsj3cFlag       dotoggle;       /* Custom-flag (.MuhenkanToggle)        */
    Xsj3cFlag       throughflg;     /* Trough character flag                */
    wchar          *modestr[MODE_STR_NUM]; /* Character mode strings       */
                                    /* Custom-flag (.guide.[mode])          */
    int             modelen[MODE_STR_NUM];  /* Length of mode strings       */
    Xsj3cFlag       gakusyuu;       /* Custom-flag (.bstudy)                */
    Xsj3cFlag       rkbell;         /* Custom-flag (.rkerrbell)             */
    Xsj3cFlag       flushaconv;     /* Custom-flag (.FlushAfterConversion)  */
    char           *sj3serv;        /* First sj3serv hostname               */
                                    /* Custom-flag (.server)                */
    unsigned char  *setnormal;      /* Custom-flag (.SetNormal)             */
    unsigned char  *throughnext;    /* Custom-flag (.ThroughNext)           */

    /* Original resource (Not exists in sj2/sj3/sjx)                        */
    char           *sj3serv2;       /* Second sj3serv hostname              */
                                    /* Custom-flag (.server2)               */
    Xsj3cFlag       flushiconv;     /* Custom-flag (.FlushInConversion)     */
    Xsj3cFlag       flushsconv;     /* Custom-flag (.FlushSelectConversion) */
    Xsj3cFlag       flusheconv;     /* Custom-flag (.FlushEndConversion)    */
    Xsj3cFlag       alphaconv;      /* Custom-flag (.AlphabetConversion)    */
    Xsj3cFlag       backdisplay;    /* Custom-flag (.BackDisplay)           */
    Xsj3cFlag       beginlastseg;   /* Custom-flag (.BeginConversionLast)   */
    Xsj3cFlag       expandmconv;    /* Custom-flag (.ExpandModeConversion)  */
    Xsj3cFlag       shrinkmconv;    /* Custom-flag (.ShrinkModeConversion)  */
    Xsj3cFlag       expandkconv;    /* Custom-flag (.ExpandKanjiConversion) */
    Xsj3cFlag       shrinkkconv;    /* Custom-flag (.ShrinkKanjiConversion) */
    Xsj3cFlag       shrinkall;      /* Custom-flag (.ShrinkAll)             */
    Xsj3cFlag       henkanseg;      /* Custom-flag (.HenkanSegment)         */
    Xsj3cFlag       muhenseg;       /* Custom-flag (.MuhenkanSegment)       */
    Xsj3cFlag       delchange;      /* Custom-flag (.DeleteChangeSegment)   */
    Xsj3cFlag       flushchange;    /* Custom-flag (.FlushChangeSegment)    */
    Xsj3cFlag       modeconv[MODE_CONV_NUM];/* Custom-flag (.ModeConversion)*/
    Xsj3cFlag       moveloop;       /* Custom-flag (.MoveLoop)              */
    Xsj3cFlag       movebyseg;      /* Custom-flag (.MoveBySegment)         */
    Xsj3cFlag       jumpbyseg;      /* Custom-flag (.JumpBySegment)         */
    Xsj3cFlag       delbyseg;       /* Custom-flag (.DeleteBySegment)       */
    Xsj3cFlag       killbyseg;      /* Custom-flag (.KillBySegment)         */
    Xsj3cFlag       muhencurlast;   /* Custom-flag (.MuhenkanCursorLast)    */
    Xsj3cFlag       editcurlast;    /* Custom-flag (.EditCursorLast)        */
    Xsj3cFlag       flushcurlast;   /* Custom-flag (.FlushCursorLast)       */
    Xsj3cFlag       convedunderline;/* Custom-flag (.ConvertedUnderLine)    */
    Xsj3cFlag       dispmodechange; /* Custom-flag (.DisplayModeChange)     */
    Xsj3cFlag       dellastmove;    /* Custom-flag (.DeleteLastMove)        */
    Xsj3cFlag       kanaonly;       /* Custom-flag (.KanaInputOnly)         */
    Xsj3cFlag       inputsame;      /* Custom-flag (.InputSameTime)         */
    Xsj3cFlag       cntrlsame;      /* Custom-flag (.ControlSameTime)       */
    Xsj3cFlag       selectconv;     /* Custom-flag (.BeforeSelectConversion)*/
    Xsj3cFlag       beforeconv;     /* Custom-flag (.BeforeConversion)      */
    Xsj3cFlag       lastdoubleconv; /* Custom-flag (.LastDoubleConversion)  */
    int             selectcount;    /* Custom-flag (.BeforeSelectCount)     */
    Xsj3cFlag       selectback;     /* Custom-flag (.SelectBackSpaceCurrent)*/
    Xsj3cFlag       candpadding;    /* Custom-flag (.CandidatePadding)      */

} Xsj3cBufRec,    *Xsj3cBuf;

/* Key event handling                               */
extern unsigned char       *Xsj3cGetPreeditArea();
extern Xsj3cEvent           Xsj3cKeyConv();

/* Setting up environment                           */
extern void                 Xsj3cSetInLang();
extern void                 Xsj3cSetOutLang();
extern void                 Xsj3cSetKanaMod();

/* Connection to language conversion server handling */
extern int                  Xsj3cOpen();
extern void                 Xsj3cClose();
extern void                 Xsj3cConnect();

/* Operation of buffers                             */
extern Xsj3cBuf             Xsj3cCreateBuffer();
extern void                 Xsj3cFreeBuffer();
extern void                 Xsj3cClearBuffer();
extern void                 Xsj3cFlushBuffer();
extern void                 Xsj3cFixBuffer();

/* Getting data to draw or send to other            */
extern int                  Xsj3cGetSegNum();
extern int                  Xsj3cGetPosition();
extern wchar               *Xsj3cGetSeg();
extern wchar               *Xsj3cGetModeStr();
extern wchar               *Xsj3cGetConvertedStr();
extern int                  Xsj3cGetConvertedLength();

/* Operartion of candidate data                     */
extern int                  Xsj3cGetCandidateNum();
extern Xsj3cCand            Xsj3cGetCandidates();
extern wchar               *Xsj3cGetCandidate();
extern int                  Xsj3cSetCandidate();
extern void                 Xsj3cEndCandidate();

/* Operartion of symbol data                        */
extern int                  Xsj3cGetSymbolNum();
extern Xsj3cSymbol          Xsj3cGetSymbols();
extern wchar               *Xsj3cGetSymbol();
extern int                  Xsj3cSetSymbol();
extern void                 Xsj3cEndSymbol();

/* Operartion of hinsi data                         */
extern int                  Xsj3cGetHinsiNum();
extern Xsj3cHinsi           Xsj3cGetHinsis();
extern wchar               *Xsj3cGetHinsi();
extern int                  Xsj3cSetHinsi();
extern void                 Xsj3cEndHinsi();

/* Operartion of dictionary data                    */
extern int                  Xsj3cGetDictMsgNum();
extern Xsj3cDictMsg         Xsj3cGetDictMsgs();
extern wchar               *Xsj3cGetDictMsg();
extern void                 Xsj3cDictRegister();
extern void                 Xsj3cDictClear();
extern void                 Xsj3cEndDict();

extern void                 Xsj3cInitializeTables();

#endif /* _Xsj3clib_h */