Merge egg-980316.
[elisp/egg.git] / its / kata.el
1 ;;; its/kata.el --- Katakana Input in Egg Input Method Architecture
2
3 ;; Copyright (C) 1997, 1998 Mule Project,
4 ;; Powered by Electrotechnical Laboratory, JAPAN.
5 ;; Project Leader: Satoru Tomura <tomura@etl.go.jp>
6
7 ;; Author: Satoru Tomura <tomura@etl.go.jp>
8 ;;         jiro@math.keio.ac.jp (TANAKA Jiro)
9
10 ;; This file will be part of GNU Emacs (in future).
11
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
13 ;; it under the terms of the GNU General Public License as published by
14 ;; the Free Software Foundation; either version 2, or (at your option)
15 ;; any later version.
16
17 ;; GNU Emacs is distributed in the hope that it will be useful,
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 ;; GNU General Public License for more details.
21
22 ;; You should have received a copy of the GNU General Public License
23 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
25 ;; Boston, MA 02111-1307, USA.
26
27 ;;; Commentary:
28 ;;
29 ;; Symbol input is desined by jiro@math.keio.ac.jp (TANAKA Jiro)
30 ;; This file is based on the rules of its/kata.el in Mule-2.3 distribution.
31 ;;
32
33 ;;; Code:
34
35 (eval-when-compile
36   (require 'its)
37   (require 'cl))
38
39 (defvar its-kata-enable-zenkaku-alphabet
40   (if (boundp 'its-enable-fullwidth-alphabet)
41       its-enable-fullwidth-alphabet
42     t)
43   "*Enable Zenkaku alphabet")
44
45 (defvar its-kata-enable-double-n nil "*Enable \"nn\" input for \"\e$B%s\e(B\" ")
46 (defvar its-kata-period "\e$B!#\e(B" "*\e$B%T%j%*%I\e(B")  ; ". " "\e$B!%\e(B"
47 (defvar its-kata-comma  "\e$B!"\e(B" "*\e$B%3%s%^\e(B")    ; ", " "\e$B!$\e(B"
48 (defvar its-kata-open-bracket  "\e$B!V\e(B" "*[")  ; "\e$B!N\e(B"
49 (defvar its-kata-close-bracket  "\e$B!W\e(B" "*]") ; "\e$B!O\e(B"
50 (defvar its-kata-horizontal  "\e$B!<\e(B" "*-")    ; "\e$B!]\e(B"
51
52 (define-its-state-machine its-kata-map
53   "roma-kata" "\e$B%"\e(B" 'Japanese
54   "Map for Romaji-Katakana translation. (Japanese)"
55
56   (defconst its-zenkaku-escape "Z")  ;; Escape character to Zenkaku inputs
57   (defconst its-hankaku-escape "~")  ;; Escape character to Hankaku inputs
58
59   (its-defrule-select-mode-temporally "q" downcase)
60   (its-defrule-select-mode-temporally "Q" zenkaku-downcase)
61
62 ;;; k      k
63 ;;; kk     \e$B%C\e(Bk
64 ;;; kka    \e$B%C%+\e(B
65 ;;;
66 ;;; kkk    \e$B%C\e(Bk DING!
67
68   (its-defrule "tch"  "\e$B%C\e(B" -2)
69
70 ;;; \e$B!V%s!W$NF~NO\e(B
71
72   (dolist (q1 '("b" "m" "p"))
73     (its-defrule (concat "m" q1) "\e$B%s\e(B" -1))
74
75   (its-defrule "N" "\e$B%s\e(B")
76
77   (let ((state (its-goto-state "n" nil t)))
78     (its-make-next-state state -1 "n" "\e$B%s\e(B")
79     (its-make-next-state state ?' "n" "\e$B%s\e(B")
80     (its-defrule-otherwise state "\e$B%s\e(B"))
81
82   (let ((small '"x" ))
83     (its-defrule (concat small "a") "\e$B%!\e(B")
84     (its-defrule (concat small "i") "\e$B%#\e(B")
85     (its-defrule (concat small "u") "\e$B%%\e(B")
86     (its-defrule (concat small "e") "\e$B%'\e(B")
87     (its-defrule (concat small "o") "\e$B%)\e(B")
88     (its-defrule (concat small "ya") "\e$B%c\e(B")
89     (its-defrule (concat small "yu") "\e$B%e\e(B")
90     (its-defrule (concat small "yo") "\e$B%g\e(B")
91     (its-defrule (concat small "tu") "\e$B%C\e(B")
92     (its-defrule (concat small "tsu") "\e$B%C\e(B")
93     (its-defrule (concat small "wa") "\e$B%n\e(B")
94     )
95
96   (its-defrule   "a"    "\e$B%"\e(B")
97   (its-defrule   "i"    "\e$B%$\e(B")
98   (its-defrule   "u"    "\e$B%&\e(B")
99   (its-defrule   "e"    "\e$B%(\e(B")
100   (its-defrule   "o"    "\e$B%*\e(B")
101
102   (dolist (k '(("ka"  "\e$B%+\e(B") ("ki"  "\e$B%-\e(B") ("ku"  "\e$B%/\e(B") ("ke"  "\e$B%1\e(B") ("ko"  "\e$B%3\e(B")
103                ("kya" "\e$B%-%c\e(B") ("kyu"  "\e$B%-%e\e(B") ("kye"  "\e$B%-%'\e(B") ("kyo"  "\e$B%-%g\e(B")))
104     (its-defrule (car k) (cadr k))
105     (its-defrule (concat "k" (car k)) (concat "\e$B%C\e(B" (cadr k))))
106   (its-defoutput "kk" "\e$B%C\e(Bk")
107   (its-defoutput "kky" "\e$B%C\e(Bky")
108
109   (dolist (s '(("sa"  "\e$B%5\e(B") ("si"  "\e$B%7\e(B") ("su"  "\e$B%9\e(B") ("se"  "\e$B%;\e(B") ("so"  "\e$B%=\e(B")
110                ("sya"  "\e$B%7%c\e(B") ("syu"  "\e$B%7%e\e(B") ("sye"  "\e$B%7%'\e(B") ("syo"  "\e$B%7%g\e(B")
111                ("sha"  "\e$B%7%c\e(B") ("shi"  "\e$B%7\e(B") ("shu"  "\e$B%7%e\e(B") ("she"  "\e$B%7%'\e(B")
112                ("sho"  "\e$B%7%g\e(B")))
113     (its-defrule (car s) (cadr s))
114     (its-defrule (concat "s" (car s)) (concat "\e$B%C\e(B" (cadr s))))
115   (its-defoutput "ss" "\e$B%C\e(Bs")
116   (its-defoutput "ssy" "\e$B%C\e(Bsy")
117   (its-defoutput "ssh" "\e$B%C\e(Bsh")
118
119   (dolist (T '(("ta"  "\e$B%?\e(B") ("ti"  "\e$B%A\e(B") ("tu"  "\e$B%D\e(B") ("te"  "\e$B%F\e(B") ("to"  "\e$B%H\e(B")
120                ("tya"  "\e$B%A%c\e(B") ("tyi"  "\e$B%F%#\e(B") ("tyu"  "\e$B%A%e\e(B") ("tye"  "\e$B%A%'\e(B")
121                ("tyo"  "\e$B%A%g\e(B") ("tsu"  "\e$B%D\e(B")))
122     (its-defrule (car T) (cadr T))
123     (its-defrule (concat "t" (car T)) (concat "\e$B%C\e(B" (cadr T))))
124   (its-defoutput "tt" "\e$B%C\e(Bt")
125   (its-defoutput "tty" "\e$B%C\e(Bty")
126   (its-defoutput "tts" "\e$B%C\e(Bts")
127
128   (dolist (c '(("cha"  "\e$B%A%c\e(B") ("chi"  "\e$B%A\e(B") ("chu"  "\e$B%A%e\e(B")
129                ("che"  "\e$B%A%'\e(B") ("cho"  "\e$B%A%g\e(B")))
130     (its-defrule (car c) (cadr c))
131     (its-defrule (concat "c" (car c)) (concat "\e$B%C\e(B" (cadr c))))
132   (its-defoutput "cc" "\e$B%C\e(Bc")
133   (its-defoutput "cch" "\e$B%C\e(Bch")
134
135   (dolist (h '(("ha"  "\e$B%O\e(B") ("hi"  "\e$B%R\e(B") ("hu"  "\e$B%U\e(B") ("he"  "\e$B%X\e(B") ("ho"  "\e$B%[\e(B")
136                ("hya"  "\e$B%R%c\e(B") ("hyu"  "\e$B%R%e\e(B") ("hye"  "\e$B%R%'\e(B") ("hyo"  "\e$B%R%g\e(B")))
137     (its-defrule (car h) (cadr h))
138     (its-defrule (concat "h" (car h)) (concat "\e$B%C\e(B" (cadr h))))
139   (its-defoutput "hh" "\e$B%C\e(Bh")
140   (its-defoutput "hhy" "\e$B%C\e(Bhy")
141
142   (dolist (f '(("fa"  "\e$B%U%!\e(B") ("fi"  "\e$B%U%#\e(B") ("fu"  "\e$B%U\e(B") ("fe"  "\e$B%U%'\e(B")
143                ("fo"  "\e$B%U%)\e(B")))
144     (its-defrule (car f) (cadr f))
145     (its-defrule (concat "f" (car f)) (concat "\e$B%C\e(B" (cadr f))))
146   (its-defoutput "ff" "\e$B%C\e(Bf")
147
148   (dolist (r '(("ra"  "\e$B%i\e(B") ("ri"  "\e$B%j\e(B") ("ru"  "\e$B%k\e(B") ("re"  "\e$B%l\e(B") ("ro"  "\e$B%m\e(B")
149                ("rya"  "\e$B%j%c\e(B") ("ryu"  "\e$B%j%e\e(B") ("rye"  "\e$B%j%'\e(B") ("ryo"  "\e$B%j%g\e(B")))
150     (its-defrule (car r) (cadr r))
151     (its-defrule (concat "r" (car r)) (concat "\e$B%C\e(B" (cadr r))))
152   (its-defoutput "rr" "\e$B%C\e(Br")
153   (its-defoutput "rry" "\e$B%C\e(Bry")
154
155   (dolist (l '(("la"  "\e$B%i\e(B") ("li"  "\e$B%j\e(B") ("lu"  "\e$B%k\e(B") ("le"  "\e$B%l\e(B") ("lo"  "\e$B%m\e(B")
156                ("lya"  "\e$B%j%c\e(B") ("lyu"  "\e$B%j%e\e(B") ("lye"  "\e$B%j%'\e(B") ("lyo"  "\e$B%j%g\e(B")))
157     (its-defrule (car l) (cadr l))
158     (its-defrule (concat "l" (car l)) (concat "\e$B%C\e(B" (cadr l))))
159   (its-defoutput "ll" "\e$B%C\e(Bl")
160   (its-defoutput "lly" "\e$B%C\e(Bly")
161
162   (dolist (g '(("ga"  "\e$B%,\e(B") ("gi"  "\e$B%.\e(B") ("gu"  "\e$B%0\e(B") ("ge"  "\e$B%2\e(B") ("go"  "\e$B%4\e(B")
163                ("gya"  "\e$B%.%c\e(B") ("gyu"  "\e$B%.%e\e(B") ("gye"  "\e$B%.%'\e(B") ("gyo"  "\e$B%.%g\e(B")))
164     (its-defrule (car g) (cadr g))
165     (its-defrule (concat "g" (car g)) (concat "\e$B%C\e(B" (cadr g))))
166   (its-defoutput "gg" "\e$B%C\e(Bg")
167   (its-defoutput "ggy" "\e$B%C\e(Bgy")
168
169   (dolist (z '(("za"  "\e$B%6\e(B") ("zi"  "\e$B%8\e(B") ("zu"  "\e$B%:\e(B") ("ze"  "\e$B%<\e(B") ("zo"  "\e$B%>\e(B")
170                ("zya"  "\e$B%8%c\e(B") ("zyu"  "\e$B%8%e\e(B") ("zye"  "\e$B%8%'\e(B") ("zyo"  "\e$B%8%g\e(B")))
171     (its-defrule (car z) (cadr z))
172     (its-defrule (concat "z" (car z)) (concat "\e$B%C\e(B" (cadr z))))
173   (its-defoutput "zz" "\e$B%C\e(Bz")
174   (its-defoutput "zzy" "\e$B%C\e(Bzy")
175
176   (dolist (j '(("ja"  "\e$B%8%c\e(B") ("ji"  "\e$B%8\e(B") ("ju"  "\e$B%8%e\e(B") ("je"  "\e$B%8%'\e(B")
177                ("jo"  "\e$B%8%g\e(B") ("jya"  "\e$B%8%c\e(B") ("jyu"  "\e$B%8%e\e(B") ("jye"  "\e$B%8%'\e(B")
178                ("jyo"  "\e$B%8%g\e(B")))
179     (its-defrule (car j) (cadr j))
180     (its-defrule (concat "j" (car j)) (concat "\e$B%C\e(B" (cadr j))))
181   (its-defoutput "jj" "\e$B%C\e(Bj")
182   (its-defoutput "jjy" "\e$B%C\e(Bjy")
183
184   (dolist (d '(("da"  "\e$B%@\e(B") ("di"  "\e$B%B\e(B") ("du"  "\e$B%E\e(B") ("de"  "\e$B%G\e(B") ("do"  "\e$B%I\e(B")
185                ("dya"  "\e$B%B%c\e(B") ("dyi"  "\e$B%G%#\e(B") ("dyu"  "\e$B%B%e\e(B") ("dye"  "\e$B%B%'\e(B")
186                ("dyo"  "\e$B%B%g\e(B")))
187     (its-defrule (car d) (cadr d))
188     (its-defrule (concat "d" (car d)) (concat "\e$B%C\e(B" (cadr d))))
189   (its-defoutput "dd" "\e$B%C\e(Bd")
190   (its-defoutput "ddy" "\e$B%C\e(Bdy")
191
192   (dolist (b '(("ba"  "\e$B%P\e(B") ("bi"  "\e$B%S\e(B") ("bu"  "\e$B%V\e(B") ("be"  "\e$B%Y\e(B") ("bo"  "\e$B%\\e(B")
193                ("bya"  "\e$B%S%c\e(B") ("byu"  "\e$B%S%e\e(B") ("bye"  "\e$B%S%'\e(B") ("byo"  "\e$B%S%g\e(B")))
194     (its-defrule (car b) (cadr b))
195     (its-defrule (concat "b" (car b)) (concat "\e$B%C\e(B" (cadr b))))
196   (its-defoutput "bb" "\e$B%C\e(Bb")
197   (its-defoutput "bby" "\e$B%C\e(Bby")
198
199   (dolist (p '(("pa"  "\e$B%Q\e(B") ("pi"  "\e$B%T\e(B") ("pu"  "\e$B%W\e(B") ("pe"  "\e$B%Z\e(B") ("po"   "\e$B%]\e(B")
200                ("pya"  "\e$B%T%c\e(B") ("pyu"  "\e$B%T%e\e(B") ("pye"  "\e$B%T%'\e(B") ("pyo"  "\e$B%T%g\e(B")))
201     (its-defrule (car p) (cadr p))
202     (its-defrule (concat "p" (car p)) (concat "\e$B%C\e(B" (cadr p))))
203   (its-defoutput "pp" "\e$B%C\e(Bp")
204   (its-defoutput "ppy" "\e$B%C\e(Bpy")
205
206   (dolist (v '(("va" "\e$B%t%!\e(B") ("vi" "\e$B%t%#\e(B") ("vu" "\e$B%t\e(B") ("ve" "\e$B%t%'\e(B")
207                ("vo" "\e$B%t%)\e(B")))
208     (its-defrule (car v) (cadr v))
209     (its-defrule (concat "v" (car v)) (concat "\e$B%C\e(B" (cadr v))))
210   (its-defoutput "vv" "\e$B%C\e(Bv")
211
212   (its-defrule   "ma"   "\e$B%^\e(B")
213   (its-defrule   "mi"   "\e$B%_\e(B")
214   (its-defrule   "mu"   "\e$B%`\e(B")
215   (its-defrule   "me"   "\e$B%a\e(B")
216   (its-defrule   "mo"   "\e$B%b\e(B")
217   (its-defrule   "mya"  "\e$B%_%c\e(B")
218   (its-defrule   "myu"  "\e$B%_%e\e(B")
219   (its-defrule   "mye"  "\e$B%_%'\e(B")
220   (its-defrule   "myo"  "\e$B%_%g\e(B")
221   (its-defrule   "ya"   "\e$B%d\e(B")
222   (its-defrule   "yi"   "\e$B%$\e(B")
223   (its-defrule   "yu"   "\e$B%f\e(B")
224   (its-defrule   "yo"   "\e$B%h\e(B")
225   (its-defrule   "ye"   "\e$B%$%'\e(B")
226   (its-defrule   "wa"   "\e$B%o\e(B")
227   (its-defrule   "wi"   "\e$B%p\e(B")
228   (its-defrule   "wu"   "\e$B%&\e(B")
229   (its-defrule   "we"   "\e$B%q\e(B")
230   (its-defrule   "wo"   "\e$B%r\e(B")
231
232   (its-defrule   "kwa"  "\e$B%/%n\e(B")
233   (its-defrule   "kwi"  "\e$B%/%#\e(B")
234   (its-defrule   "kwu"  "\e$B%/\e(B")
235   (its-defrule   "kwe"  "\e$B%/%'\e(B")
236   (its-defrule   "kwo"  "\e$B%/%)\e(B")
237   (its-defrule   "gwa"  "\e$B%0%n\e(B")
238   (its-defrule   "gwi"  "\e$B%0%#\e(B")
239   (its-defrule   "gwu"  "\e$B%0\e(B")
240   (its-defrule   "gwe"  "\e$B%0%'\e(B")
241   (its-defrule   "gwo"  "\e$B%0%)\e(B")
242   (its-defrule   "tsa"  "\e$B%D%!\e(B")
243   (its-defrule   "tsi"  "\e$B%D%#\e(B")
244   (its-defrule   "tse"  "\e$B%D%'\e(B")
245   (its-defrule   "tso"  "\e$B%D%)\e(B")
246
247   (its-defrule   "na"   "\e$B%J\e(B")
248   (its-defrule   "ni"   "\e$B%K\e(B")
249   (its-defrule   "nu"   "\e$B%L\e(B")
250   (its-defrule   "ne"   "\e$B%M\e(B")
251   (its-defrule   "no"   "\e$B%N\e(B")
252   (its-defrule   "nya"  "\e$B%K%c\e(B")
253   (its-defrule   "nyu"  "\e$B%K%e\e(B")
254   (its-defrule   "nye"  "\e$B%K%'\e(B")
255   (its-defrule   "nyo"  "\e$B%K%g\e(B")
256
257   (its-defrule   "xka"  "\e$B%u\e(B")
258   (its-defrule   "xke"  "\e$B%v\e(B")
259   (its-defrule   "xti"  "\e$B%F%#\e(B")
260   (its-defrule   "xdi"  "\e$B%G%#\e(B")
261   (its-defrule   "xdu"  "\e$B%I%%\e(B")
262   (its-defrule   "xde"  "\e$B%G%'\e(B")
263   (its-defrule   "xdo"  "\e$B%I%)\e(B")
264   (its-defrule   "xwi"  "\e$B%&%#\e(B")
265   (its-defrule   "xwe"  "\e$B%&%'\e(B")
266   (its-defrule   "xwo"  "\e$B%&%)\e(B")
267
268 ;;;
269 ;;; Zenkaku inputs
270 ;;;
271
272   (its-defrule (concat its-zenkaku-escape "0") "\e$B#0\e(B")
273   (its-defrule (concat its-zenkaku-escape "1") "\e$B#1\e(B")
274   (its-defrule (concat its-zenkaku-escape "2") "\e$B#2\e(B")
275   (its-defrule (concat its-zenkaku-escape "3") "\e$B#3\e(B")
276   (its-defrule (concat its-zenkaku-escape "4") "\e$B#4\e(B")
277   (its-defrule (concat its-zenkaku-escape "5") "\e$B#5\e(B")
278   (its-defrule (concat its-zenkaku-escape "6") "\e$B#6\e(B")
279   (its-defrule (concat its-zenkaku-escape "7") "\e$B#7\e(B")
280   (its-defrule (concat its-zenkaku-escape "8") "\e$B#8\e(B")
281   (its-defrule (concat its-zenkaku-escape "9") "\e$B#9\e(B")
282
283   (its-defrule (concat its-zenkaku-escape "A") "\e$B#A\e(B")
284   (its-defrule (concat its-zenkaku-escape "B") "\e$B#B\e(B")
285   (its-defrule (concat its-zenkaku-escape "C") "\e$B#C\e(B")
286   (its-defrule (concat its-zenkaku-escape "D") "\e$B#D\e(B")
287   (its-defrule (concat its-zenkaku-escape "E") "\e$B#E\e(B")
288   (its-defrule (concat its-zenkaku-escape "F") "\e$B#F\e(B")
289   (its-defrule (concat its-zenkaku-escape "G") "\e$B#G\e(B")
290   (its-defrule (concat its-zenkaku-escape "H") "\e$B#H\e(B")
291   (its-defrule (concat its-zenkaku-escape "I") "\e$B#I\e(B")
292   (its-defrule (concat its-zenkaku-escape "J") "\e$B#J\e(B")
293   (its-defrule (concat its-zenkaku-escape "K") "\e$B#K\e(B")
294   (its-defrule (concat its-zenkaku-escape "L") "\e$B#L\e(B")
295   (its-defrule (concat its-zenkaku-escape "M") "\e$B#M\e(B")
296   (its-defrule (concat its-zenkaku-escape "N") "\e$B#N\e(B")
297   (its-defrule (concat its-zenkaku-escape "O") "\e$B#O\e(B")
298   (its-defrule (concat its-zenkaku-escape "P") "\e$B#P\e(B")
299   (its-defrule (concat its-zenkaku-escape "Q") "\e$B#Q\e(B")
300   (its-defrule (concat its-zenkaku-escape "R") "\e$B#R\e(B")
301   (its-defrule (concat its-zenkaku-escape "S") "\e$B#S\e(B")
302   (its-defrule (concat its-zenkaku-escape "T") "\e$B#T\e(B")
303   (its-defrule (concat its-zenkaku-escape "U") "\e$B#U\e(B")
304   (its-defrule (concat its-zenkaku-escape "V") "\e$B#V\e(B")
305   (its-defrule (concat its-zenkaku-escape "W") "\e$B#W\e(B")
306   (its-defrule (concat its-zenkaku-escape "X") "\e$B#X\e(B")
307   (its-defrule (concat its-zenkaku-escape "Y") "\e$B#Y\e(B")
308   (its-defrule (concat its-zenkaku-escape "Z") "\e$B#Z\e(B")
309
310   (its-defrule (concat its-zenkaku-escape "a") "\e$B#a\e(B")
311   (its-defrule (concat its-zenkaku-escape "b") "\e$B#b\e(B")
312   (its-defrule (concat its-zenkaku-escape "c") "\e$B#c\e(B")
313   (its-defrule (concat its-zenkaku-escape "d") "\e$B#d\e(B")
314   (its-defrule (concat its-zenkaku-escape "e") "\e$B#e\e(B")
315   (its-defrule (concat its-zenkaku-escape "f") "\e$B#f\e(B")
316   (its-defrule (concat its-zenkaku-escape "g") "\e$B#g\e(B")
317   (its-defrule (concat its-zenkaku-escape "h") "\e$B#h\e(B")
318   (its-defrule (concat its-zenkaku-escape "i") "\e$B#i\e(B")
319   (its-defrule (concat its-zenkaku-escape "j") "\e$B#j\e(B")
320   (its-defrule (concat its-zenkaku-escape "k") "\e$B#k\e(B")
321   (its-defrule (concat its-zenkaku-escape "l") "\e$B#l\e(B")
322   (its-defrule (concat its-zenkaku-escape "m") "\e$B#m\e(B")
323   (its-defrule (concat its-zenkaku-escape "n") "\e$B#n\e(B")
324   (its-defrule (concat its-zenkaku-escape "o") "\e$B#o\e(B")
325   (its-defrule (concat its-zenkaku-escape "p") "\e$B#p\e(B")
326   (its-defrule (concat its-zenkaku-escape "q") "\e$B#q\e(B")
327   (its-defrule (concat its-zenkaku-escape "r") "\e$B#r\e(B")
328   (its-defrule (concat its-zenkaku-escape "s") "\e$B#s\e(B")
329   (its-defrule (concat its-zenkaku-escape "t") "\e$B#t\e(B")
330   (its-defrule (concat its-zenkaku-escape "u") "\e$B#u\e(B")
331   (its-defrule (concat its-zenkaku-escape "v") "\e$B#v\e(B")
332   (its-defrule (concat its-zenkaku-escape "w") "\e$B#w\e(B")
333   (its-defrule (concat its-zenkaku-escape "x") "\e$B#x\e(B")
334   (its-defrule (concat its-zenkaku-escape "y") "\e$B#y\e(B")
335   (its-defrule (concat its-zenkaku-escape "z") "\e$B#z\e(B")
336
337   (its-defrule (concat its-zenkaku-escape " ")  "\e$B!!\e(B")
338   (its-defrule (concat its-zenkaku-escape "!")  "\e$B!*\e(B")
339   (its-defrule (concat its-zenkaku-escape "@")  "\e$B!w\e(B")
340   (its-defrule (concat its-zenkaku-escape "#")  "\e$B!t\e(B")
341   (its-defrule (concat its-zenkaku-escape "$")  "\e$B!p\e(B")
342   (its-defrule (concat its-zenkaku-escape "%")  "\e$B!s\e(B")
343   (its-defrule (concat its-zenkaku-escape "^")  "\e$B!0\e(B")
344   (its-defrule (concat its-zenkaku-escape "&")  "\e$B!u\e(B")
345   (its-defrule (concat its-zenkaku-escape "*")  "\e$B!v\e(B")
346   (its-defrule (concat its-zenkaku-escape "(")  "\e$B!J\e(B")
347   (its-defrule (concat its-zenkaku-escape ")")  "\e$B!K\e(B")
348   (its-defrule (concat its-zenkaku-escape "-")  "\e$B!]\e(B")
349   (its-defrule (concat its-zenkaku-escape "=")  "\e$B!a\e(B")
350   (its-defrule (concat its-zenkaku-escape "`")  "\e$B!.\e(B")
351   (its-defrule (concat its-zenkaku-escape "\\") "\e$B!o\e(B")
352   (its-defrule (concat its-zenkaku-escape "|")  "\e$B!C\e(B")
353   (its-defrule (concat its-zenkaku-escape "_")  "\e$B!2\e(B")
354   (its-defrule (concat its-zenkaku-escape "+")  "\e$B!\\e(B")
355   (its-defrule (concat its-zenkaku-escape "~")  "\e$B!1\e(B")
356   (its-defrule (concat its-zenkaku-escape "[")  "\e$B!N\e(B")
357   (its-defrule (concat its-zenkaku-escape "]")  "\e$B!O\e(B")
358   (its-defrule (concat its-zenkaku-escape "{")  "\e$B!P\e(B")
359   (its-defrule (concat its-zenkaku-escape "}")  "\e$B!Q\e(B")
360   (its-defrule (concat its-zenkaku-escape ":")  "\e$B!'\e(B")
361   (its-defrule (concat its-zenkaku-escape ";")  "\e$B!(\e(B")
362   (its-defrule (concat its-zenkaku-escape "\"") "\e$B!I\e(B")
363   (its-defrule (concat its-zenkaku-escape "'")  "\e$B!G\e(B")
364   (its-defrule (concat its-zenkaku-escape "<")  "\e$B!c\e(B")
365   (its-defrule (concat its-zenkaku-escape ">")  "\e$B!d\e(B")
366   (its-defrule (concat its-zenkaku-escape "?")  "\e$B!)\e(B")
367   (its-defrule (concat its-zenkaku-escape "/")  "\e$B!?\e(B")
368   (its-defrule (concat its-zenkaku-escape ",")  "\e$B!$\e(B")
369   (its-defrule (concat its-zenkaku-escape ".")  "\e$B!%\e(B")
370
371 ;;;
372 ;;; Hankaku inputs
373 ;;;
374
375   (dolist (digit '( "1"  "2"  "3"  "4" "5"  "6"  "7"  "8"  "9"  "0" ))
376     (its-defrule (concat its-hankaku-escape digit)  digit))
377
378   (dolist (symbol '( " "  "!"  "@"  "#"  "$"  "%"  "^"  "&"  "*"  "("  ")"
379                      "-"  "="  "`"  "\\" "|"  "_"  "+"  "~" "["  "]"  "{"  "}"
380                      ":"  ";"  "\"" "'"  "<"  ">"  "?"  "/"  ","  "." ))
381     (its-defrule (concat its-hankaku-escape symbol) symbol))
382
383   (dolist (downcase '("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
384                       "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
385     (its-defrule (concat its-hankaku-escape downcase) downcase))
386
387   (dolist (upcase    '("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N"
388                        "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"))
389     (its-defrule (concat its-hankaku-escape upcase) upcase))
390
391 ;; SYMBOL Input
392   (its-defrule   "z1"   "\e$B!{\e(B")     (its-defrule   "z!"   "\e$B!|\e(B")
393   (its-defrule   "z2"   "\e$B"&\e(B")     (its-defrule   "z@"   "\e$B"'\e(B")
394   (its-defrule   "z3"   "\e$B"$\e(B")     (its-defrule   "z#"   "\e$B"%\e(B")
395   (its-defrule   "z4"   "\e$B""\e(B")     (its-defrule   "z$"   "\e$B"#\e(B")
396   (its-defrule   "z5"   "\e$B!~\e(B")     (its-defrule   "z%"   "\e$B"!\e(B")
397   (its-defrule   "z6"   "\e$B!y\e(B")     (its-defrule   "z^"   "\e$B!z\e(B")
398   (its-defrule   "z7"   "\e$B!}\e(B")     (its-defrule   "z&"   "\e$B!r\e(B")
399   (its-defrule   "z8"   "\e$B!q\e(B")     (its-defrule   "z*"   "\e$B!_\e(B")
400   (its-defrule   "z9"   "\e$B!i\e(B")     (its-defrule   "z("   "\e$B!Z\e(B")
401   (its-defrule   "z0"   "\e$B!j\e(B")     (its-defrule   "z)"   "\e$B![\e(B")
402   (its-defrule   "z-"   "\e$B!A\e(B")     (its-defrule   "z_"   "\e$B!h\e(B")
403   (its-defrule   "z="   "\e$B!b\e(B")     (its-defrule   "z+"   "\e$B!^\e(B")
404   (its-defrule   "z\\"  "\e$B!@\e(B")     (its-defrule   "z|"   "\e$B!B\e(B")
405   (its-defrule   "z`"   "\e$B!-\e(B")     (its-defrule   "z~"   "\e$B!/\e(B")
406
407   (its-defrule   "zq"   "\e$B!T\e(B")     (its-defrule   "zQ"   "\e$B!R\e(B")
408   (its-defrule   "zw"   "\e$B!U\e(B")     (its-defrule   "zW"   "\e$B!S\e(B")
409                                         ; e
410   (its-defrule   "zr"   "\e$B!9\e(B")     (its-defrule   "zR"   "\e$B!8\e(B")
411   (its-defrule   "zt"   "\e$B!:\e(B")     (its-defrule   "zT"   "\e$B!x\e(B")
412                                         ; y u i o
413   (its-defrule   "zp"   "\e$B")\e(B")     (its-defrule   "zP"   "\e$B",\e(B")
414   (its-defrule   "z["   "\e$B!X\e(B")     (its-defrule   "z{"   "\e$B!L\e(B")
415   (its-defrule   "z]"   "\e$B!Y\e(B")     (its-defrule   "z}"   "\e$B!M\e(B")
416
417                                         ; a
418   (its-defrule   "zs"   "\e$B!3\e(B")     (its-defrule   "zS"   "\e$B!4\e(B")
419   (its-defrule   "zd"   "\e$B!5\e(B")     (its-defrule   "zD"   "\e$B!6\e(B")
420   (its-defrule   "zf"   "\e$B!7\e(B")     (its-defrule   "zF"   "\e$B"*\e(B")
421   (its-defrule   "zg"   "\e$B!>\e(B")     (its-defrule   "zG"   "\e$B!=\e(B")
422   (its-defrule   "zh"   "\e$B"+\e(B")
423   (its-defrule   "zj"   "\e$B"-\e(B")
424   (its-defrule   "zk"   "\e$B",\e(B")
425   (its-defrule   "zl"   "\e$B"*\e(B")
426   (its-defrule   "z;"   "\e$B!+\e(B")     (its-defrule   "z:"   "\e$B!,\e(B")
427   (its-defrule   "z\'"  "\e$B!F\e(B")     (its-defrule   "z\""  "\e$B!H\e(B")
428
429                                         ; z
430   (its-defrule   "zx"   ":-")   (its-defrule   "zX"   ":-)")
431   (its-defrule   "zc"   "\e$B!;\e(B")     (its-defrule   "zC"   "\e$B!n\e(B")
432   (its-defrule   "zv"   "\e$B"(\e(B")     (its-defrule   "zV"   "\e$B!`\e(B")
433   (its-defrule   "zb"   "\e$B!k\e(B")     (its-defrule   "zB"   "\e$B"+\e(B")
434   (its-defrule   "zn"   "\e$B!l\e(B")     (its-defrule   "zN"   "\e$B"-\e(B")
435   (its-defrule   "zm"   "\e$B!m\e(B")     (its-defrule   "zM"   "\e$B".\e(B")
436   (its-defrule   "z,"   "\e$B!E\e(B")     (its-defrule   "z<"   "\e$B!e\e(B")
437   (its-defrule   "z."   "\e$B!D\e(B")     (its-defrule   "z>"   "\e$B!f\e(B")
438   (its-defrule   "z/"   "\e$B!&\e(B")     (its-defrule   "z?"   "\e$B!g\e(B")
439   )
440
441 (define-its-state-machine-append its-kata-map
442   (if its-kata-enable-double-n
443       (its-defrule "nn" "\e$B%s\e(B")
444     (its-defrule "nn" "\e$B%s\e(B" -1))
445
446   (its-defrule "-" its-kata-horizontal)
447   (its-defrule "[" its-kata-open-bracket)
448   (its-defrule "]" its-kata-close-bracket)
449   (its-defrule "." its-kata-period)
450   (its-defrule "," its-kata-comma)
451
452   (if its-kata-enable-zenkaku-alphabet
453       (progn
454         (its-defrule   "1"   "\e$B#1\e(B")  (its-defrule   "2"   "\e$B#2\e(B")
455         (its-defrule   "3"   "\e$B#3\e(B")  (its-defrule   "4"   "\e$B#4\e(B")
456         (its-defrule   "5"   "\e$B#5\e(B")  (its-defrule   "6"   "\e$B#6\e(B")
457         (its-defrule   "7"   "\e$B#7\e(B")  (its-defrule   "8"   "\e$B#8\e(B")
458         (its-defrule   "9"   "\e$B#9\e(B")  (its-defrule   "0"   "\e$B#0\e(B")
459         (its-defrule   "!"   "\e$B!*\e(B")  (its-defrule   "@"   "\e$B!w\e(B")
460         (its-defrule   "#"   "\e$B!t\e(B")  (its-defrule   "$"   "\e$B!p\e(B")
461         (its-defrule   "%"   "\e$B!s\e(B")  (its-defrule   "^"   "\e$B!0\e(B")
462         (its-defrule   "&"   "\e$B!u\e(B")  (its-defrule   "*"   "\e$B!v\e(B")
463         (its-defrule   "("   "\e$B!J\e(B")  (its-defrule   ")"   "\e$B!K\e(B")
464         (its-defrule   "="   "\e$B!a\e(B")  (its-defrule   "`"   "\e$B!.\e(B")
465         (its-defrule   "\\"  "\e$B!o\e(B")  (its-defrule   "|"   "\e$B!C\e(B")
466         (its-defrule   "_"   "\e$B!2\e(B")  (its-defrule   "+"   "\e$B!\\e(B")
467         (its-defrule   "{"   "\e$B!P\e(B")  (its-defrule   "}"   "\e$B!Q\e(B")
468         (its-defrule   ":"   "\e$B!'\e(B")  (its-defrule   ";"   "\e$B!(\e(B")
469         (its-defrule   "\""  "\e$B!I\e(B")  (its-defrule   "'"   "\e$B!G\e(B")
470         (its-defrule   "<"   "\e$B!c\e(B")  (its-defrule   ">"   "\e$B!d\e(B")
471         (its-defrule   "?"   "\e$B!)\e(B")  (its-defrule   "/"   "\e$B!?\e(B"))
472     (progn
473       (its-defrule   "1"   "1")  (its-defrule   "2"   "2")
474       (its-defrule   "3"   "3")  (its-defrule   "4"   "4")
475       (its-defrule   "5"   "5")  (its-defrule   "6"   "6")
476       (its-defrule   "7"   "7")  (its-defrule   "8"   "8")
477       (its-defrule   "9"   "9")  (its-defrule   "0"   "0")
478       (its-defrule   "!"   "!")  (its-defrule   "@"   "@")
479       (its-defrule   "#"   "#")  (its-defrule   "$"   "$")
480       (its-defrule   "%"   "%")  (its-defrule   "^"   "^")
481       (its-defrule   "&"   "&")  (its-defrule   "*"   "*")
482       (its-defrule   "("   "(")  (its-defrule   ")"   ")")
483       (its-defrule   "="   "=")  (its-defrule   "`"   "`")
484       (its-defrule   "\\"  "\\") (its-defrule   "|"   "|")
485       (its-defrule   "_"   "_")  (its-defrule   "+"   "+")
486       (its-defrule   "{"   "{")  (its-defrule   "}"   "}")
487       (its-defrule   ":"   ":")  (its-defrule   ";"   ";")
488       (its-defrule   "\""  "\"") (its-defrule   "'"   "'")
489       (its-defrule   "<"   "<")  (its-defrule   ">"   ">")
490       (its-defrule   "?"   "?")  (its-defrule   "/"   "/")))
491   )
492
493 (provide 'its/kata)
494 ;;; its/kata.el ends here.