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