diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/include/Xsj3clib.h	Mon Mar 08 04:44:30 2010 +0900
@@ -0,0 +1,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 */