Tizen 2.1 base
[framework/uifw/ise-engine-anthy.git] / src / scim_anthy_default_tables.cpp
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  *  Copyright (C) 2004-2005 Takuro Ashie
4  *
5  *  This program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2, or (at your option)
8  *  any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program; if not, write to the Free Software
17  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18  */
19
20 #define Uses_SCIM_EVENT
21 #include <scim.h>
22 #include "scim_anthy_default_tables.h"
23
24 using namespace scim;
25
26 /* from Suikyo */
27 ConvRule scim_anthy_romaji_typing_rule[] = {
28 {"-",   "ー",  ""},
29 #if 0
30 {"[",   "「",  ""},
31 {"]",   "」",  ""},
32 #endif
33 {"a",   "あ",  ""},
34 {"i",   "い",  ""},
35 {"u",   "う",  ""},
36 {"e",   "え",  ""},
37 {"o",   "お",  ""},
38 {"xa",  "ぁ",  ""},
39 {"xi",  "ぃ",  ""},
40 {"xu",  "ぅ",  ""},
41 {"xe",  "ぇ",  ""},
42 {"xo",  "ぉ",  ""},
43 {"la",  "ぁ",  ""},
44 {"li",  "ぃ",  ""},
45 {"lu",  "ぅ",  ""},
46 {"le",  "ぇ",  ""},
47 {"lo",  "ぉ",  ""},
48 {"wi",  "うぃ",       ""},
49 {"we",  "うぇ",       ""},
50 {"wha", "うぁ",       ""},
51 {"whi", "うぃ",       ""},
52 {"whe", "うぇ",       ""},
53 {"who", "うぉ",       ""},
54 #if 0
55 {"va",  "う゛ぁ",    ""},
56 {"vi",  "う゛ぃ",    ""},
57 {"vu",  "う゛",       ""},
58 {"ve",  "う゛ぇ",    ""},
59 {"vo",  "う゛ぉ",    ""},
60 #else
61 {"va",  "ヴぁ",       ""},
62 {"vi",  "ヴぃ",       ""},
63 {"vu",  "ヴ",  ""},
64 {"ve",  "ヴぇ",       ""},
65 {"vo",  "ヴぉ",       ""},
66 #endif
67 {"ka",  "か",  ""},
68 {"ki",  "き",  ""},
69 {"ku",  "く",  ""},
70 {"ke",  "け",  ""},
71 {"ko",  "こ",  ""},
72 {"ga",  "が",  ""},
73 {"gi",  "ぎ",  ""},
74 {"gu",  "ぐ",  ""},
75 {"ge",  "げ",  ""},
76 {"go",  "ご",  ""},
77 {"kya", "きゃ",       ""},
78 {"kyi", "きぃ",       ""},
79 {"kyu", "きゅ",       ""},
80 {"kye", "きぇ",       ""},
81 {"kyo", "きょ",       ""},
82 {"gya", "ぎゃ",       ""},
83 {"gyi", "ぎぃ",       ""},
84 {"gyu", "ぎゅ",       ""},
85 {"gye", "ぎぇ",       ""},
86 {"gyo", "ぎょ",       ""},
87 {"sa",  "さ",  ""},
88 {"si",  "し",  ""},
89 {"su",  "す",  ""},
90 {"se",  "せ",  ""},
91 {"so",  "そ",  ""},
92 {"za",  "ざ",  ""},
93 {"zi",  "じ",  ""},
94 {"zu",  "ず",  ""},
95 {"ze",  "ぜ",  ""},
96 {"zo",  "ぞ",  ""},
97 {"sya", "しゃ",       ""},
98 {"syi", "しぃ",       ""},
99 {"syu", "しゅ",       ""},
100 {"sye", "しぇ",       ""},
101 {"syo", "しょ",       ""},
102 {"sha", "しゃ",       ""},
103 {"shi", "し",  ""},
104 {"shu", "しゅ",       ""},
105 {"she", "しぇ",       ""},
106 {"sho", "しょ",       ""},
107 {"zya", "じゃ",       ""},
108 {"zyi", "じぃ",       ""},
109 {"zyu", "じゅ",       ""},
110 {"zye", "じぇ",       ""},
111 {"zyo", "じょ",       ""},
112 {"ja",  "じゃ",       ""},
113 {"jya", "じゃ",       ""},
114 {"ji",  "じ",  ""},
115 {"jyi", "じぃ",       ""},
116 {"ju",  "じゅ",       ""},
117 {"jyu", "じゅ",       ""},
118 {"je",  "じぇ",       ""},
119 {"jye", "じぇ",       ""},
120 {"jo",  "じょ",       ""},
121 {"jyo", "じょ",       ""},
122 {"ta",  "た",  ""},
123 {"ti",  "ち",  ""},
124 {"tu",  "つ",  ""},
125 {"tsu", "つ",  ""},
126 {"te",  "て",  ""},
127 {"to",  "と",  ""},
128 {"da",  "だ",  ""},
129 {"di",  "ぢ",  ""},
130 {"du",  "づ",  ""},
131 {"de",  "で",  ""},
132 {"do",  "ど",  ""},
133 {"xtu", "っ",  ""},
134 {"xtsu","っ"   ""},
135 {"ltu", "っ",  ""},
136 {"ltsu","っ"   ""},
137 {"tya", "ちゃ",       ""},
138 {"tyi", "ちぃ",       ""},
139 {"tyu", "ちゅ",       ""},
140 {"tye", "ちぇ",       ""},
141 {"tyo", "ちょ",       ""},
142 {"cha", "ちゃ",       ""},
143 {"chi", "ち",  ""},
144 {"chu", "ちゅ",       ""},
145 {"che", "ちぇ",       ""},
146 {"cho", "ちょ",       ""},
147 {"dya", "ぢゃ",       ""},
148 {"dyi", "ぢぃ",       ""},
149 {"dyu", "ぢゅ",       ""},
150 {"dye", "ぢぇ",       ""},
151 {"dyo", "ぢょ",       ""},
152 {"tha", "てゃ",       ""},
153 {"thi", "てぃ",       ""},
154 {"thu", "てゅ",       ""},
155 {"the", "てぇ",       ""},
156 {"tho", "てょ",       ""},
157 {"dha", "でゃ",       ""},
158 {"dhi", "でぃ",       ""},
159 {"dhu", "でゅ",       ""},
160 {"dhe", "でぇ",       ""},
161 {"dho", "でょ",       ""},
162 {"na",  "な",  ""},
163 {"ni",  "に",  ""},
164 {"nu",  "ぬ",  ""},
165 {"ne",  "ね",  ""},
166 {"no",  "の",  ""},
167 {"nya", "にゃ",       ""},
168 {"nyi", "にぃ",       ""},
169 {"nyu", "にゅ",       ""},
170 {"nye", "にぇ",       ""},
171 {"nyo", "にょ",       ""},
172 {"ha",  "は",  ""},
173 {"hi",  "ひ",  ""},
174 {"hu",  "ふ",  ""},
175 {"fu",  "ふ",  ""},
176 {"he",  "へ",  ""},
177 {"ho",  "ほ",  ""},
178 {"ba",  "ば",  ""},
179 {"bi",  "び",  ""},
180 {"bu",  "ぶ",  ""},
181 {"be",  "べ",  ""},
182 {"bo",  "ぼ",  ""},
183 {"pa",  "ぱ",  ""},
184 {"pi",  "ぴ",  ""},
185 {"pu",  "ぷ",  ""},
186 {"pe",  "ぺ",  ""},
187 {"po",  "ぽ",  ""},
188 {"hya", "ひゃ",       ""},
189 {"hyi", "ひぃ",       ""},
190 {"hyu", "ひゅ",       ""},
191 {"hye", "ひぇ",       ""},
192 {"hyo", "ひょ",       ""},
193 {"bya", "びゃ",       ""},
194 {"byi", "びぃ",       ""},
195 {"byu", "びゅ",       ""},
196 {"bye", "びぇ",       ""},
197 {"byo", "びょ",       ""},
198 {"pya", "ぴゃ",       ""},
199 {"pyi", "ぴぃ",       ""},
200 {"pyu", "ぴゅ",       ""},
201 {"pye", "ぴぇ",       ""},
202 {"pyo", "ぴょ",       ""},
203 {"fa",  "ふぁ",       ""},
204 {"fi",  "ふぃ",       ""},
205 {"fu",  "ふ",  ""},
206 {"fe",  "ふぇ",       ""},
207 {"fo",  "ふぉ",       ""},
208 {"ma",  "ま",  ""},
209 {"mi",  "み",  ""},
210 {"mu",  "む",  ""},
211 {"me",  "め",  ""},
212 {"mo",  "も",  ""},
213 {"mya", "みゃ",       ""},
214 {"myi", "みぃ",       ""},
215 {"myu", "みゅ",       ""},
216 {"mye", "みぇ",       ""},
217 {"myo", "みょ",       ""},
218 {"lya", "ゃ",  ""},
219 {"xya", "ゃ",  ""},
220 {"ya",  "や",  ""},
221 {"lyu", "ゅ",  ""},
222 {"xyu", "ゅ",  ""},
223 {"yu",  "ゆ",  ""},
224 {"lyo", "ょ",  ""},
225 {"xyo", "ょ",  ""},
226 {"yo",  "よ",  ""},
227 {"ra",  "ら",  ""},
228 {"ri",  "り",  ""},
229 {"ru",  "る",  ""},
230 {"re",  "れ",  ""},
231 {"ro",  "ろ",  ""},
232 {"rya", "りゃ",       ""},
233 {"ryi", "りぃ",       ""},
234 {"ryu", "りゅ",       ""},
235 {"rye", "りぇ",       ""},
236 {"ryo", "りょ",       ""},
237 {"xwa", "ゎ",  ""},
238 {"wa",  "わ",  ""},
239 {"wo",  "を",  ""},
240 {"n'",  "ん",  ""},
241 {"nn",  "ん",  ""},
242 {"n",   "ん",  ""},
243 {"wyi", "ゐ",  ""},
244 {"wye", "ゑ",  ""},
245 #if 0 /* emulate dead key */
246 {"\\.", "・",  ""},
247 {";r",  "→",  ""},
248 {";l",  "←",  ""},
249 {";u","↑",    ""},
250 {";d",  "↓",  ""},
251 {";p",  "〒",  ""},
252 {";e",  "€",  ""},    
253 {";t",  "™",  ""},
254 {";s",  "®",   ""},
255 {";c",  "©",   ""},
256 #endif
257 {NULL,  NULL,   NULL},
258 };
259
260 ConvRule scim_anthy_romaji_double_consonant_rule[] = {
261 {"vv",  "っ",  "v"},
262 {"xx",  "っ",  "x"},
263 {"kk",  "っ",  "k"},
264 {"gg",  "っ",  "g"},
265 {"ss",  "っ",  "s"},
266 {"zz",  "っ",  "z"},
267 {"jj",  "っ",  "j"},
268 {"tt",  "っ",  "t"},
269 {"dd",  "っ",  "d"},
270 {"hh",  "っ",  "h"},
271 {"ff",  "っ",  "f"},
272 {"bb",  "っ",  "b"},
273 {"pp",  "っ",  "p"},
274 {"mm",  "っ",  "m"},
275 {"yy",  "っ",  "y"},
276 {"rr",  "っ",  "r"},
277 {"ww",  "っ",  "w"},
278 {"cc",  "っ",  "c"},
279 {NULL,  NULL,   NULL},
280 };
281
282 ConvRule scim_anthy_half_symbol_rule[] = {
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 {NULL,  NULL,   NULL},
316 };
317
318 ConvRule scim_anthy_wide_symbol_rule[] = {
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 {NULL,  NULL,   NULL},
352 };
353
354 ConvRule scim_anthy_half_number_rule[] = {
355 {"1", "1", ""},
356 {"2", "2", ""},
357 {"3", "3", ""},
358 {"4", "4", ""},
359 {"5", "5", ""},
360 {"6", "6", ""},
361 {"7", "7", ""},
362 {"8", "8", ""},
363 {"9", "9", ""},
364 {"0", "0", ""},
365 {NULL,  NULL,   NULL},
366 };
367
368
369 ConvRule scim_anthy_wide_number_rule[] = {
370 {"1", "1", ""},
371 {"2", "2", ""},
372 {"3", "3", ""},
373 {"4", "4", ""},
374 {"5", "5", ""},
375 {"6", "6", ""},
376 {"7", "7", ""},
377 {"8", "8", ""},
378 {"9", "9", ""},
379 {"0", "0", ""},
380 {NULL,  NULL,   NULL},
381 };
382
383 ConvRule scim_anthy_kana_typing_rule[] = {
384 // no modifiers keys
385 {"1",   "ぬ",  ""},
386 {"2",   "",     "ふ"},
387 {"3",   "あ",  ""},
388 {"4",   "う",  ""},
389 {"5",   "え",  ""},
390 {"6",   "お",  ""},
391 {"7",   "や",  ""},
392 {"8",   "ゆ",  ""},
393 {"9",   "よ",  ""},
394 {"0",   "わ",  ""},
395 {"-",   "",     "ほ"},
396 {"^",   "",     "へ"},
397
398 {"q",   "",     "た"},
399 {"w",   "",     "て"},
400 {"e",   "い",  ""},
401 {"r",   "",     "す"},
402 {"t",   "",     "か"},
403 {"y",   "ん",  ""},
404 {"u",   "な",  ""},
405 {"i",   "に",  ""},
406 {"o",   "ら",  ""},
407 {"p",   "",     "せ"},
408 {"@",   "゛",  ""},
409 {"[",   "゜",  ""},
410
411 {"a",   "",     "ち"},
412 {"s",   "",     "と"},
413 {"d",   "",     "し"},
414 {"f",   "",     "は"},
415 {"g",   "",     "き"},
416 {"h",   "",     "く"},
417 {"j",   "ま",  ""},
418 {"k",   "の",  ""},
419 {"l",   "り",  ""},
420 {";",   "れ",  ""},
421 {":",   "",     "け"},
422 {"]",   "む",  ""},
423
424 {"z",   "",     "つ"},
425 {"x",   "",     "さ"},
426 {"c",   "",     "そ"},
427 {"v",   "",     "ひ"},
428 {"b",   "",     "こ"},
429 {"n",   "み",  ""},
430 {"m",   "も",  ""},
431 {",",   "ね",  ""},
432 {".",   "る",  ""},
433 {"/",   "め",  ""},
434 {"\\",  "ー",  ""},
435
436 // shift modifiered keys
437 {"!",   "ぬ",  ""},
438 {"\"",  "",     "ふ"},
439 {"#",   "ぁ",  ""},
440 {"$",   "ぅ",  ""},
441 {"%",   "ぇ",  ""},
442 {"&",   "ぉ",  ""},
443 {"'",   "ゃ",  ""},
444 {"(",   "ゅ",  ""},
445 {")",   "ょ",  ""},
446 {"~",   "を",  ""},
447 {"=",   "",     "ほ"},
448 {"|",   "ー",  ""},
449
450 {"Q",   "",     "た"},
451 {"W",   "",     "て"},
452 {"E",   "ぃ",  ""},
453 {"R",   "",     "す"},
454 {"T",   "ヵ",  ""},
455 {"Y",   "ん",  ""},
456 {"U",   "な",  ""},
457 {"I",   "に",  ""},
458 {"O",   "ら",  ""},
459 {"P",   "",     "せ"},
460 {"`",   "゛",  ""},
461 #if 0
462 {"{",   "「",  ""},
463 #endif
464
465 {"A",   "",     "ち"},
466 {"S",   "",     "と"},
467 {"D",   "",     "し"},
468 {"F",   "ゎ",  ""},
469 {"G",   "",     "き"},
470 {"H",   "",     "く"},
471 {"J",   "ま",  ""},
472 {"K",   "の",  ""},
473 {"L",   "り",  ""},
474 {"+",   "れ",  ""},
475 {"*",   "ヶ",  ""},
476 #if 0
477 {"}",   "」",  ""},
478 #endif
479
480 {"Z",   "っ",  ""},
481 {"X",   "",     "さ"},
482 {"C",   "",     "そ"},
483 {"V",   "",     "ゐ"},
484 {"B",   "",     "こ"},
485 {"M",   "も",  ""},
486 {"N",   "み",  ""},
487 #if 0
488 {"?",   "・",  ""},
489 #endif
490 {"_",   "ろ",  ""},
491 {NULL,  NULL,   NULL},
492 };
493
494 ConvRule scim_anthy_kana_voiced_consonant_rule[] = {
495 {"か@",        "が",  ""},
496 {"き@",        "ぎ",  ""},
497 {"く@",        "ぐ",  ""},
498 {"け@",        "げ",  ""},
499 {"こ@",        "ご",  ""},
500 {"さ@",        "ざ",  ""},
501 {"し@",        "じ",  ""},
502 {"す@",        "ず",  ""},
503 {"せ@",        "ぜ",  ""},
504 {"そ@",        "ぞ",  ""},
505 {"た@",        "だ",  ""},
506 {"ち@",        "ぢ",  ""},
507 {"つ@",        "づ",  ""},
508 {"て@",        "で",  ""},
509 {"と@",        "ど",  ""},
510 {"は@",        "ば",  ""},
511 {"ひ@",        "び",  ""},
512 {"ふ@",        "ぶ",  ""},
513 {"へ@",        "べ",  ""},
514 {"ほ@",        "ぼ",  ""},
515 {"か`",        "が",  ""},
516 {"き`",        "ぎ",  ""},
517 {"く`",        "ぐ",  ""},
518 {"け`",        "げ",  ""},
519 {"こ`",        "ご",  ""},
520 {"さ`",        "ざ",  ""},
521 {"し`",        "じ",  ""},
522 {"す`",        "ず",  ""},
523 {"せ`",        "ぜ",  ""},
524 {"そ`",        "ぞ",  ""},
525 {"た`",        "だ",  ""},
526 {"ち`",        "ぢ",  ""},
527 {"つ`",        "づ",  ""},
528 {"て`",        "で",  ""},
529 {"と`",        "ど",  ""},
530 {"は`",        "ば",  ""},
531 {"ひ`",        "び",  ""},
532 {"ふ`",        "ぶ",  ""},
533 {"へ`",        "べ",  ""},
534 {"ほ`",        "ぼ",  ""},
535 {"は[",        "ぱ",  ""},
536 {"ひ[",        "ぴ",  ""},
537 {"ふ[",        "ぷ",  ""},
538 {"へ[",        "ぺ",  ""},
539 {"ほ[",        "ぽ",  ""},
540 {NULL,  NULL,   NULL},
541 };
542
543 ConvRule scim_anthy_romaji_ja_period_rule[] = {
544 {".",   "。",  ""},
545 {NULL,  NULL,   NULL},
546 };
547
548 ConvRule scim_anthy_romaji_ja_comma_rule[] = {
549 {",",   "、",  ""},
550 {NULL,  NULL,   NULL},
551 };
552
553 ConvRule scim_anthy_romaji_wide_period_rule[] = {
554 {".",   ".",  ""},
555 {NULL,  NULL,   NULL},
556 };
557
558 ConvRule scim_anthy_romaji_wide_comma_rule[] = {
559 {",",   ",",  ""},
560 {NULL,  NULL,   NULL},
561 };
562
563 ConvRule scim_anthy_romaji_half_period_rule[] = {
564 {".",   ".",    ""},
565 {NULL,  NULL,   NULL},
566 };
567
568 ConvRule scim_anthy_romaji_half_comma_rule[] = {
569 {",",   ",",    ""},
570 {NULL,  NULL,   NULL},
571 };
572
573 ConvRule scim_anthy_kana_ja_period_rule[] = {
574 {">",   "。",  ""},
575 {NULL,  NULL,   NULL},
576 };
577
578 ConvRule scim_anthy_kana_ja_comma_rule[] = {
579 {"<",   "、",  ""},
580 {NULL,  NULL,   NULL},
581 };
582
583 ConvRule scim_anthy_kana_wide_period_rule[] = {
584 {">",   ".",  ""},
585 {NULL,  NULL,   NULL},
586 };
587
588 ConvRule scim_anthy_kana_wide_comma_rule[] = {
589 {"<",   ",",  ""},
590 {NULL,  NULL,   NULL},
591 };
592
593 ConvRule scim_anthy_kana_half_period_rule[] = {
594 {">",   ".",    ""},
595 {NULL,  NULL,   NULL},
596 };
597
598 ConvRule scim_anthy_kana_half_comma_rule[] = {
599 {"<",   ",",    ""},
600 {NULL,  NULL,   NULL},
601 };
602
603 ConvRule scim_anthy_romaji_ja_bracket_rule[] = {
604 {"[",   "「",  ""},
605 {"]",   "」",  ""},
606 {NULL,  NULL,   NULL},
607 };
608
609 ConvRule scim_anthy_romaji_wide_bracket_rule[] = {
610 {"[",   "[",  ""},
611 {"]",   "]",  ""},
612 {NULL,  NULL,   NULL},
613 };
614
615 ConvRule scim_anthy_kana_ja_bracket_rule[] = {
616 {"{",   "「",  ""},
617 {"}",   "」",  ""},
618 {NULL,  NULL,   NULL},
619 };
620
621 ConvRule scim_anthy_kana_wide_bracket_rule[] = {
622 {"{",   "[",  ""},
623 {"}",   "]",  ""},
624 {NULL,  NULL,   NULL},
625 };
626
627 ConvRule scim_anthy_romaji_ja_slash_rule[] = {
628 {"/",   "・",  ""},
629 {NULL,  NULL,   NULL},
630 };
631
632 ConvRule scim_anthy_romaji_wide_slash_rule[] = {
633 {"/",   "/",  ""},
634 {NULL,  NULL,   NULL},
635 };
636
637 ConvRule scim_anthy_kana_ja_slash_rule[] = {
638 {"?",   "・",  ""},
639 {NULL,  NULL,   NULL},
640 };
641
642 ConvRule scim_anthy_kana_wide_slash_rule[] = {
643 {"?",   "/",  ""},
644 {NULL,  NULL,   NULL},
645 };
646
647 HiraganaKatakanaRule scim_anthy_hiragana_katakana_table[] = {
648 {"あ", "ア", "ア"},
649 {"い", "イ", "イ"},
650 {"う", "ウ", "ウ"},
651 {"え", "エ", "エ"},
652 {"お", "オ", "オ"},
653 {"か", "カ", "カ"},
654 {"き", "キ", "キ"},
655 {"く", "ク", "ク"},
656 {"け", "ケ", "ケ"},
657 {"こ", "コ", "コ"},
658 {"が", "ガ", "ガ"},
659 {"ぎ", "ギ", "ギ"},
660 {"ぐ", "グ", "グ"},
661 {"げ", "ゲ", "ゲ"},
662 {"ご", "ゴ", "ゴ"},
663 {"さ", "サ", "サ"},
664 {"し", "シ", "シ"},
665 {"す", "ス", "ス"},
666 {"せ", "セ", "セ"},
667 {"そ", "ソ", "ソ"},
668 {"ざ", "ザ", "ザ"},
669 {"じ", "ジ", "ジ"},
670 {"ず", "ズ", "ズ"},
671 {"ぜ", "ゼ", "ゼ"},
672 {"ぞ", "ゾ", "ゾ"},
673 {"た", "タ", "タ"},
674 {"ち", "チ", "チ"},
675 {"つ", "ツ", "ツ"},
676 {"て", "テ", "テ"},
677 {"と", "ト", "ト"},
678 {"だ", "ダ", "ダ"},
679 {"ぢ", "ヂ", "ヂ"},
680 {"づ", "ヅ", "ヅ"},
681 {"で", "デ", "デ"},
682 {"ど", "ド", "ド"},
683 {"な", "ナ", "ナ"},
684 {"に", "ニ", "ニ"},
685 {"ぬ", "ヌ", "ヌ"},
686 {"ね", "ネ", "ネ"},
687 {"の", "ノ", "ノ"},
688 {"は", "ハ", "ハ"},
689 {"ひ", "ヒ", "ヒ"},
690 {"ふ", "フ", "フ"},
691 {"へ", "ヘ", "ヘ"},
692 {"ほ", "ホ", "ホ"},
693 {"ば", "バ", "バ"},
694 {"び", "ビ", "ビ"},
695 {"ぶ", "ブ", "ブ"},
696 {"べ", "ベ", "ベ"},
697 {"ぼ", "ボ", "ボ"},
698 {"ぱ", "パ", "パ"},
699 {"ぴ", "ピ", "ピ"},
700 {"ぷ", "プ", "プ"},
701 {"ぺ", "ペ", "ペ"},
702 {"ぽ", "ポ", "ポ"},
703 {"ま", "マ", "マ"},
704 {"み", "ミ", "ミ"},
705 {"む", "ム", "ム"},
706 {"め", "メ", "メ"},
707 {"も", "モ", "モ"},
708 {"や", "ヤ", "ヤ"},
709 {"ゆ", "ユ", "ユ"},
710 {"よ", "ヨ", "ヨ"},
711 {"ら", "ラ", "ラ"},
712 {"り", "リ", "リ"},
713 {"る", "ル", "ル"},
714 {"れ", "レ", "レ"},
715 {"ろ", "ロ", "ロ"},
716  
717 {"わ", "ワ", "ワ"},
718 {"を", "ヲ", "ヲ"},
719 {"ん", "ン", "ン"},
720  
721 {"ぁ", "ァ", "ァ"},
722 {"ぃ", "ィ", "ィ"},
723 {"ぅ", "ゥ", "ゥ"},
724 {"ぇ", "ェ", "ェ"},
725 {"ぉ", "ォ", "ォ"},
726
727 {"っ", "ッ", "ッ"},
728
729 {"ゃ", "ャ", "ャ"},
730 {"ゅ", "ュ", "ュ"},
731 {"ょ", "ョ", "ョ"},
732
733 {"ヵ", "ヵ", "カ"},
734 {"ヶ", "ヶ", "ケ"},
735
736 {"ゎ", "ヮ", "ワ"},
737 {"ゐ", "ヰ", "ィ"},
738 {"ゑ", "ヱ", "ェ"},
739
740 #if 1
741 //{"う゛" "ヴ" "ヴ"},
742 {"ヴ" "ヴ" "ヴ"},
743 #endif
744
745 #if 1
746 {"ー", "ー",  "ー"},
747 {"、", "、",  "、"},
748 {"。", "。",  "。"},
749 {"!", "!",  "!"},
750 {"”", "”",  "\""},
751 {"#", "#",  "#"},
752 {"$", "$",  "$"},
753 {"%", "%",  "%"},
754 {"&", "&",  "&"},
755 {"’", "’",  "'"},
756 {"(", "(",  "("},
757 {")", ")",  ")"},
758 {"〜", "〜",  "~"},
759 {"=", "=",  "="},
760 {"^", "^",  "^"},
761 {"\", "\",  "\\"},
762 {"|", "|",  "|"},
763 {"‘", "‘",  "`"},
764 {"@", "@",  "@"},
765 {"{", "{",  "{"},
766 {"「", "「",  "「"},
767 {"+", "+",  "+"},
768 {";", ";",  ";"},
769 {"*", "*",  "*"},
770 {":", ":",  ":"},
771 {"}", "}",  "}"},
772 {"」", "」",  "」"},
773 {"<", "<",  "<"},
774 {">", ">",  ">"},
775 {"?", "?",  "?"},
776 {"/", "/",  "/"},
777 {"_", "_",  "_"},
778 #endif
779 {NULL,  NULL,   NULL},
780 };
781
782 WideRule scim_anthy_wide_table[] = {
783 {"a", "a"},
784 {"b", "b"},
785 {"c", "c"},
786 {"d", "d"},
787 {"e", "e"},
788 {"f", "f"},
789 {"g", "g"},
790 {"h", "h"},
791 {"i", "i"},
792 {"j", "j"},
793 {"k", "k"},
794 {"l", "l"},
795 {"m", "m"},
796 {"n", "n"},
797 {"o", "o"},
798 {"p", "p"},
799 {"q", "q"},
800 {"r", "r"},
801 {"s", "s"},
802 {"t", "t"},
803 {"u", "u"},
804 {"v", "v"},
805 {"w", "w"},
806 {"x", "x"},
807 {"y", "y"},
808 {"z", "z"},
809 {"A", "A"},
810 {"B", "B"},
811 {"C", "C"},
812 {"D", "D"},
813 {"E", "E"},
814 {"F", "F"},
815 {"G", "G"},
816 {"H", "H"},
817 {"I", "I"},
818 {"J", "J"},
819 {"K", "K"},
820 {"L", "L"},
821 {"M", "M"},
822 {"N", "N"},
823 {"O", "O"},
824 {"P", "P"},
825 {"Q", "Q"},
826 {"R", "R"},
827 {"S", "S"},
828 {"T", "T"},
829 {"U", "U"},
830 {"V", "V"},
831 {"W", "W"},
832 {"X", "X"},
833 {"Y", "Y"},
834 {"Z", "Z"},
835 {"1", "1"},
836 {"2", "2"},
837 {"3", "3"},
838 {"4", "4"},
839 {"5", "5"},
840 {"6", "6"},
841 {"7", "7"},
842 {"8", "8"},
843 {"9", "9"},
844 {"0", "0"},
845 {"-", "−"},
846 {",", ","},
847 {".", "."},
848 {"!", "!"},
849 {"\"", "”"},
850 {"#", "#"},
851 {"$", "$"},
852 {"%", "%"},
853 {"&", "&"},
854 {"'", "’"},
855 {"(", "("},
856 {")", ")"},
857 {"~", "〜"},
858 {"=", "="},
859 {"^", "^"},
860 {"\\", "\"},
861 {"|", "|"},
862 {"`", "‘"},
863 {"@", "@"},
864 {"{", "{"},
865 {"[", "["},
866 {"+", "+"},
867 {";", ";"},
868 {":", ":"},
869 {"}", "}"},
870 {"]", "]"},
871 {"<", "<"},
872 {">", ">"},
873 {"?", "?"},
874 {"/", "/"},
875 {"_", "_"},
876 {"*", "*"},
877 {NULL, NULL},
878 };
879
880 VoicedConsonantRule scim_anthy_voiced_consonant_table[] = {
881 {"か", "が",  ""},
882 {"き", "ぎ",  ""},
883 {"く", "ぐ",  ""},
884 {"け", "げ",  ""},
885 {"こ", "ご",  ""},
886 {"さ", "ざ",  ""},
887 {"し", "じ",  ""},
888 {"す", "ず",  ""},
889 {"せ", "ぜ",  ""},
890 {"そ", "ぞ",  ""},
891 {"た", "だ",  ""},
892 {"ち", "ぢ",  ""},
893 {"つ", "づ",  ""},
894 {"て", "で",  ""},
895 {"と", "ど",  ""},
896 {"は", "ば",  "ぱ"},
897 {"ひ", "び",  "ぴ"},
898 {"ふ", "ぶ",  "ぷ"},
899 {"へ", "べ",  "ぺ"},
900 {"ほ", "ぼ",  "ぽ"},
901 {NULL, NULL, NULL},
902 };
903
904 KeyCodeToCharRule scim_anthy_keypad_table[] = {
905 {SCIM_KEY_KP_Equal,             "="},
906 {SCIM_KEY_KP_Multiply,  "*"},
907 {SCIM_KEY_KP_Add,               "+"},
908 {SCIM_KEY_KP_Separator, ","},
909 {SCIM_KEY_KP_Subtract,  "-"},
910 {SCIM_KEY_KP_Decimal,   "."},
911 {SCIM_KEY_KP_Divide,    "/"},
912 {SCIM_KEY_KP_0,                 "0"},
913 {SCIM_KEY_KP_1,                 "1"},
914 {SCIM_KEY_KP_2,                 "2"},
915 {SCIM_KEY_KP_3,                 "3"},
916 {SCIM_KEY_KP_4,                 "4"},
917 {SCIM_KEY_KP_5,                 "5"},
918 {SCIM_KEY_KP_6,                 "6"},
919 {SCIM_KEY_KP_7,                 "7"},
920 {SCIM_KEY_KP_8,                 "8"},
921 {SCIM_KEY_KP_9,                 "9"},
922 {0, NULL}
923 };
924
925 KeyCodeToCharRule scim_anthy_kana_table[] = {
926 {SCIM_KEY_kana_fullstop,        "。"},
927 {SCIM_KEY_kana_openingbracket,  "「"},
928 {SCIM_KEY_kana_closingbracket,  "」"},
929 {SCIM_KEY_kana_comma,           "、"},
930 {SCIM_KEY_kana_conjunctive,     "・"},
931 {SCIM_KEY_kana_middledot,       "・"},
932 {SCIM_KEY_kana_WO,              "を"},
933 {SCIM_KEY_kana_a,               "ぁ"},
934 {SCIM_KEY_kana_i,               "ぃ"},
935 {SCIM_KEY_kana_u,               "ぅ"},
936 {SCIM_KEY_kana_e,               "ぇ"},
937 {SCIM_KEY_kana_o,               "ぉ"},
938 {SCIM_KEY_kana_ya,              "ゃ"},
939 {SCIM_KEY_kana_yu,              "ゅ"},
940 {SCIM_KEY_kana_yo,              "ょ"},
941 {SCIM_KEY_kana_tsu,             "っ"},
942 {SCIM_KEY_kana_tu,              "っ"},
943 {SCIM_KEY_prolongedsound,       "ー"},
944 {SCIM_KEY_kana_A,               "あ"},
945 {SCIM_KEY_kana_I,               "い"},
946 {SCIM_KEY_kana_U,               "う"},
947 {SCIM_KEY_kana_E,               "え"},
948 {SCIM_KEY_kana_O,               "お"},
949 {SCIM_KEY_kana_O,               "お"},
950 {SCIM_KEY_kana_KA,              "か"},
951 {SCIM_KEY_kana_KI,              "き"},
952 {SCIM_KEY_kana_KU,              "く"},
953 {SCIM_KEY_kana_KE,              "け"},
954 {SCIM_KEY_kana_KO,              "こ"},
955 {SCIM_KEY_kana_SA,              "さ"},
956 {SCIM_KEY_kana_SHI,             "し"},
957 {SCIM_KEY_kana_SU,              "す"},
958 {SCIM_KEY_kana_SE,              "せ"},
959 {SCIM_KEY_kana_SO,              "そ"},
960 {SCIM_KEY_kana_TA,              "た"},
961 {SCIM_KEY_kana_CHI,             "ち"},
962 {SCIM_KEY_kana_TI,              "ち"},
963 {SCIM_KEY_kana_TSU,             "つ"},
964 {SCIM_KEY_kana_TU,              "つ"},
965 {SCIM_KEY_kana_TE,              "て"},
966 {SCIM_KEY_kana_TO,              "と"},
967 {SCIM_KEY_kana_NA,              "な"},
968 {SCIM_KEY_kana_NI,              "に"},
969 {SCIM_KEY_kana_NU,              "ぬ"},
970 {SCIM_KEY_kana_NE,              "ね"},
971 {SCIM_KEY_kana_NO,              "の"},
972 {SCIM_KEY_kana_HA,              "は"},
973 {SCIM_KEY_kana_HI,              "ひ"},
974 {SCIM_KEY_kana_FU,              "ふ"},
975 {SCIM_KEY_kana_HU,              "ふ"},
976 {SCIM_KEY_kana_HE,              "へ"},
977 {SCIM_KEY_kana_HO,              "ほ"},
978 {SCIM_KEY_kana_MA,              "ま"},
979 {SCIM_KEY_kana_MI,              "み"},
980 {SCIM_KEY_kana_MU,              "む"},
981 {SCIM_KEY_kana_ME,              "め"},
982 {SCIM_KEY_kana_MO,              "も"},
983 {SCIM_KEY_kana_YA,              "や"},
984 {SCIM_KEY_kana_YU,              "ゆ"},
985 {SCIM_KEY_kana_YO,              "よ"},
986 {SCIM_KEY_kana_RA,              "ら"},
987 {SCIM_KEY_kana_RI,              "り"},
988 {SCIM_KEY_kana_RU,              "る"},
989 {SCIM_KEY_kana_RE,              "れ"},
990 {SCIM_KEY_kana_RO,              "ろ"},
991 {SCIM_KEY_kana_WA,              "わ"},
992 {SCIM_KEY_kana_N,               "ん"},
993 {SCIM_KEY_voicedsound,          "゛"},
994 {SCIM_KEY_semivoicedsound,      "゜"},
995 {0, NULL}
996 };
997
998 NicolaRule scim_anthy_nicola_table[] = {
999 // no modifiered keys
1000 {"1",   "1",  "?",  "!"},
1001 {"2",   "2",  "/",  "゛"},
1002 {"3",   "3",  "〜",  "#"},
1003 {"4",   "4",  "「",  "$"},
1004 {"5",   "5",  "」",  "%"},
1005 {"6",   "6",  "&",  "["},
1006 {"7",   "7",  "’",  "]"},
1007 {"8",   "8",  "(",  "("},
1008 {"9",   "9",  ")",  ")"},
1009 {"0",   "0",  "〜",  "『"},
1010 {"-",   "−",  "=",  "』"},
1011 {"^",   "^",  "",     ""},
1012 {"\\",  "¥",  "",     ""},
1013
1014 {"q",   "。",  "ぁ",  "ゐ"},
1015 {"w",   "か",  "え",  "が"},
1016 {"e",   "た",  "り",  "だ"},
1017 {"r",   "こ",  "ゃ",  "ご"},
1018 {"t",   "さ",  "れ",  "ざ"},
1019 {"y",   "ら",  "ぱ",  "よ"},
1020 {"u",   "ち",  "ぢ",  "に"},
1021 {"i",   "く",  "ぐ",  "る"},
1022 {"o",   "つ",  "づ",  "ま"},
1023 {"p",   ",",  "ぴ",  "ぇ"},
1024 {"@",   "、",  "",     ""},
1025 {"[",   "゛",  "゜",  "゜"},
1026
1027 {"a",   "う",  "を",  "ヴ"},
1028 {"s",   "し",  "あ",  "じ"},
1029 {"d",   "て",  "な",  "で"},
1030 {"f",   "け",  "ゅ",  "げ"},
1031 {"g",   "せ",  "も",  "ぜ"},
1032 {"h",   "は",  "ば",  "み"},
1033 {"j",   "と",  "ど",  "お"},
1034 {"k",   "き",  "ぎ",  "の"},
1035 {"l",   "い",  "ぽ",  "ょ"},
1036 {";",   "ん",  "",     "っ"},
1037 {":",   "",     "",     ""},
1038 {"]",   "",     "",     ""},
1039
1040 {"z",   ".",  "ぅ",  "ゑ"},
1041 {"x",   "ひ",  "ー",  "び"},
1042 {"c",   "す",  "ろ",  "ず"},
1043 {"v",   "ふ",  "や",  "ぶ"},
1044 {"b",   "へ",  "ぃ",  "べ"},
1045 {"n",   "め",  "ぷ",  "ぬ"},
1046 {"m",   "そ",  "ぞ",  "ゆ"},
1047 {",",   "ね",  "ぺ",  "む"},
1048 {".",   "ほ",  "ぼ",  "わ"},
1049 {"/",   "・",  "ゎ",  "ぉ"},
1050
1051 // normal shift modifiered keys
1052 {"!",   "!",  "",     ""},
1053 {"\"",  "”",  "",     ""},
1054 {"#",   "#",  "",     ""},
1055 {"$",   "$",  "",     ""},
1056 {"%",   "%",  "",     ""},
1057 {"&",   "&",  "",     ""},
1058 {"'",   "’",  "",     ""},
1059 {"(",   "(",  "",     ""},
1060 {")",   ")",  "",     ""},
1061 {"~",   "〜",  "",     ""},
1062 {"=",   "=",  "",     ""},
1063 {"|",   "|",  "",     ""},
1064
1065 {"`",   "‘",  "",     ""},
1066 {"{",   "{",  "",     ""},
1067
1068 {"+",   "+",  "",     ""},
1069 {"*",   "*",  "",     ""},
1070 {"}",   "}",  "",     ""},
1071
1072 {"<",   "<",  "",     ""},
1073 {">",   ">",  "",     ""},
1074 {"?",   "?",  "",     ""},
1075 {"_",   "_",  "",     ""},
1076
1077 {"Q",   "。",  "ぁ",  "ゐ"},
1078 {"W",   "が",  "え",  "が"},
1079 {"E",   "だ",  "り",  "だ"},
1080 {"R",   "ご",  "ゃ",  "ご"},
1081 {"T",   "ざ",  "れ",  "ざ"},
1082 {"Y",   "ぱ",  "ぱ",  "よ"},
1083 {"U",   "ぢ",  "ぢ",  "に"},
1084 {"I",   "ぐ",  "ぐ",  "る"},
1085 {"O",   "づ",  "づ",  "ま"},
1086 {"P",   "ぴ",  "ぴ",  "ぇ"},
1087 {"`",   "、",  "",     ""},
1088 {"{",   "゛",  "゜",  "゜"},
1089
1090 {"A",   "ヴ",  "を",  "ヴ"},
1091 {"S",   "じ",  "あ",  "じ"},
1092 {"D",   "で",  "な",  "で"},
1093 {"F",   "げ",  "ゅ",  "げ"},
1094 {"G",   "ぜ",  "も",  "ぜ"},
1095 {"H",   "ば",  "ば",  "み"},
1096 {"J",   "ど",  "ど",  "お"},
1097 {"K",   "ぎ",  "ぎ",  "の"},
1098 {"L",   "ぽ",  "ぽ",  "ょ"},
1099 {"+",   "ん",  "",     "っ"},
1100 {"*",   "",     "",     ""},
1101 {"}",   "",     "",     ""},
1102
1103 {"Z",   ".",  "ぅ",  "ゑ"},
1104 {"X",   "び",  "ー",  "び"},
1105 {"C",   "ず",  "ろ",  "ず"},
1106 {"V",   "ぶ",  "や",  "ぶ"},
1107 {"B",   "べ",  "ぃ",  "べ"},
1108 {"N",   "ぷ",  "ぷ",  "ぬ"},
1109 {"M",   "ぞ",  "ぞ",  "ゆ"},
1110 {"<",   "ぺ",  "ぺ",  "む"},
1111 {">",   "ぽ",  "ぼ",  "わ"},
1112 {"?",   "・",  "ゎ",  "ぉ"},
1113
1114 {NULL,  NULL,   NULL,   NULL},
1115 };