1 /* # skkinput (Simple Kana-Kanji Input) 2 * skkmain.h --- 3 * This file is part of skkinput. 4 * Copyright (C) 1997 5 * Takashi SAKAMOTO (sakamoto@yajima.kuis.kyoto-u.ac.jp) 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2, or (at your option) 10 * any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with skkinput; see the file COPYING. If not, write to 19 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 20 */ 21 /*(����) 22 * skkinput �Υ������Τ��������ǻ��Ȥ���Ƥ�������乽¤�Ρ��ѿ����ؿ��� 23 * �����ޤȤ�ƤǤ����إå��ե����롣 24 */ 25 #ifndef skkinp_h 26 #define skkinp_h 27 28 /* 29 * ���������� 30 */ 31 /* skkinput ���������Ƥ���Хåե������̡�*/ 32 #define TEXTBUFSIZE (512) 33 #define BUFSIZE (TEXTBUFSIZE) 34 /* skkserv �ȤΥ��ߥ�˥��������˻Ȥ��Хåե������̡�*/ 35 #define TRANSBUFSIZE (TEXTBUFSIZE) 36 /* skkinput �������Ǥ�������ʸ����������Ѵ���Ȥ뤳�Ȥˤʤ롣*/ 37 #define TEXTMAXLEN (TEXTBUFSIZE-1) 38 /* skkinput �� X11 ���� XLookupString ��Ȥäơ��ɤ߹���ݤΥХåե������̡�*/ 39 #define STRBUFSIZE (10) 40 /* ������̾�Ѵ���Ԥ����˲�ǽ�ʥ�����Ĺ���κ����͡�*/ 41 #define MAX_PREFIX_LENGTH (4) 42 /* ���Ѳ�ǽ�ʺ���Υޡ����ο���*/ 43 #define MAXMARKERNUM (15) 44 45 #define MAX_SKKINPUTS (5) 46 47 /* 48 * �֡��ꥢ��ߤ������ɤ��Ǥ��礦�� �Ǥ⡢X �� header file ���������Ƥ���� 49 * �ǡ�����ä���ա� 50 */ 51 #ifndef True 52 #define True (1) 53 #define False (0) 54 #endif 55 #define ENDOFTBL (0) 56 #ifndef ERR 57 #define ERR (-1) 58 #endif 59 60 /* 61 * ��� skkinput ���������֤ˤĤ��Ƶ��Ҥ�������Ǥ��� 62 */ 63 #define J_HENKAN_MODE_OFF (0) 64 #define J_HENKAN_OFF (0) 65 #define J_KANA_MODE_OFF (0) 66 #define J_OKURIGANA_OFF (0) 67 #define J_HENKAN_MODE_ON (1<<3) 68 #define J_HENKAN_ON (1<<2) 69 #define J_KANA_MODE_ON (1<<1) 70 #define J_OKURIGANA_ON (1) 71 72 #define is_euc_kanji(c) (( 0x80 & (c))? 1 : 0 ) 73 74 /* 75 * file-coding-system 76 */ 77 enum { 78 CODING_SYSTEM_IS_EUC = 0, CODING_SYSTEM_IS_JIS, 79 } ; 80 81 /* 82 * �������ѿ��η����Ѱդ��롣�ޤ�����¤�Τ�����Ƥ��ȤǤ��͡� 83 */ 84 /* ����(skkserv)����η�̤��Ǽ���빽¤��..list */ 85 typedef struct _SkkinpSearchVector { 86 unsigned char text[ TEXTBUFSIZE ] ; 87 int used ; 88 struct _SkkinpSearchVector *next ; 89 } SkkinpSearchVector ; 90 91 /* �����������̤�����䤹�����뤿��ι�¤��...index */ 92 typedef struct _VectorIndex { 93 SkkinpSearchVector *node ; /* ���ߤθ��䡣*/ 94 int position ; 95 int length ; /* �����Ĺ����*/ 96 struct _VectorIndex *next ; /* ���θ��䡣*/ 97 struct _VectorIndex *prev ; /* ���θ��䡣*/ 98 } VectorIndex ; 99 100 /* elisp �ˤ���ޡ������Ѥι�¤�Ρ�*/ 101 struct Marker { 102 int *pos ; 103 int cf ; 104 } ; 105 106 /* �Ѵ����Ѥ������Ĥ��Ф����¸�ߤ��������¤�Ρ�(class?) */ 107 struct SKKInputNode { 108 /* int number ; */ 109 /* 110 * ��ʬ������Ѥ�����ʬ�� 111 */ 112 int prev_cx, prev_cy ; 113 /* ����Υ�����ɥ��κ���κǽ��ʸ���ϥƥ����Ȥβ��Х����ܤ���� * 114 * ���줿�Τ���*/ 115 int prev_start_pos ; 116 /* 117 * ���Ϥδ������Ѥ�������ʬ�� 118 */ 119 /* �����Ѥ�ʸ������Ǽ����Хåե���*/ 120 unsigned char textbuffer[ TEXTBUFSIZE ] ; 121 unsigned char mtextbuffer[ TEXTBUFSIZE ] ; 122 /* �Ѵ��Τ���� j-prefix �� ���줬 rom-kana-rule-list �ˤ������� * 123 * �ܤˤ�������֤�ɽ���ˤʤ롣����������������ä����ˤϴ����Ǥ�* 124 * �ʤ��Ƥ���Ƥ��ޤä�����ɡĺ��٤Ϥɤ�����? */ 125 unsigned char j_prefix[ TEXTBUFSIZE ] ; 126 /* �Ѵ��оݤȤʤ�ʸ������ݴɤ���Хåե��ʤΤǤ��롣*/ 127 unsigned char j_henkan_key[ TEXTBUFSIZE ] ; 128 unsigned char j_henkan_key2[ TEXTBUFSIZE ] ; 129 unsigned char j_search_key[ TEXTBUFSIZE ] ; 130 unsigned char j_num_list[ TEXTBUFSIZE ] ; 131 132 /* (;_;) ������餱�Ĥ��ɤ��ġ�*/ 133 134 /* ��������κ�ɸ��*/ 135 int cur_pos ; 136 int cur_pos2 ; 137 int cur_pos3 ; 138 int cur_pos_backup ; 139 /* ��������ΰ�ư��ǽ�ʺǾ����͡�*/ 140 int cur_pos_top ; 141 /* �ޡ������֡�*/ 142 int mark_pos ; 143 /* �������뤬���뤫�ݤ�������Ū�˥������뤬�����꤬����������� * 144 * �뤳�Ȥ�����롣*/ 145 int cur_exist ; 146 /* �Ѵ��⡼�ɤ˰ܹԤ��Ƥ��뤫�ɤ�����*/ 147 int j_henkan_mode ; 148 /* �Ѵ��椫�ݤ�( �Ĥޤ�ϡ������ɤ�����)��*/ 149 int j_henkan_on ; 150 /* ��̾�����椫�ݤ���*/ 151 int j_kana_mode ; 152 /* ���겾̾�������椫�ݤ���*/ 153 int j_okurigana_mode ; 154 /* ��̾���Ҳ�̾����*/ 155 int j_katakana_mode ; 156 /* ��̾���Ϥγ��ϰ��֡�*/ 157 int j_kana_start_point ; 158 /* �Ѵ�ʸ����γ��ϰ��֡�*/ 159 int j_henkan_start_point ; 160 /* �Ѵ�ʸ����ν�λ���֡�*/ 161 int j_henkan_end_point ; 162 /* ���겾̾�γ��ϰ��֡�*/ 163 int j_okurigana_start_point ; 164 int j_okurigana_offset ; 165 /* ���겾̾��*/ 166 int j_okuri_chara ; 167 /* abbrev-mode ���ɤ�����*/ 168 int j_abbrev ; 169 /* �������ϥ⡼�ɤ��ɤ�����*/ 170 int j_zenkaku ; 171 /* ��̾���ϥ⡼�ɤ��ɤ�����*/ 172 int j_mode ; 173 174 /* ����ޤǤ��Ѵ����������*/ 175 int j_henkan_count ; 176 /* �Ѵ�ư���������椫�� */ 177 int j_henkan_show_candidate_mode ; 178 /* �ߥ˥Хåե������Τ���˺��줿�Τ��Ȥ����������롣*/ 179 int j_minibuff_usage ; 180 /* ľ��ʸ�����ϥ⡼�ɤǤ��ä����Ȥ�������Ƥ��롣*/ 181 int j_input_by_code_or_menu_mode ; 182 int j_input_by_code_or_menu_point ; 183 int j_input_by_code_current_code ; 184 /* 185 * Elisp �ˤ���ޡ������Τ�������ꡣ 186 */ 187 /* ���ߤΥޡ������ΰ��֡�*/ 188 struct Marker markers[ MAXMARKERNUM ] ; 189 /* �ޡ������λ��Ѿ�����*/ 190 int marker_usage ; 191 192 /* search �����ѡ�*/ 193 SkkinpSearchVector *j_henkan_vector_top ; 194 VectorIndex *j_henkan_vector_index_top, *j_current_henkan_vector_index ; 195 int j_henkan_vector_index_length ; 196 197 /* completion �����ѡ�*/ 198 SkkinpSearchVector *j_completion_vector_top ; 199 VectorIndex *j_completion_vector_index_top, 200 *j_current_completion_vector_index ; 201 int j_completion_mode ; 202 203 /* mini-buffer �����ѡ�*/ 204 struct SKKInputNode *minibuffer ; 205 struct SKKInputNode *parentbuffer ; 206 } ; 207 208 struct SKKTangoInfo { 209 int tangotype ; 210 char *henkankey ; 211 char *string ; 212 VectorIndex *vector ; 213 VectorIndex **vectortop ; 214 int okuri ; 215 } ; 216 217 struct skk_rom_kana_rule { 218 unsigned char *state ; 219 unsigned char *next ; 220 unsigned char *houtput ; 221 unsigned char *koutput ; 222 } ; 223 224 struct chara_string_pair { 225 unsigned char chara ; 226 unsigned char *string ; 227 } ; 228 229 #endif 230